Fossil SCM

Completed integration of state with pass I, now saving projects and files into it.

aku 2007-10-05 07:27 trunk
Commit 042d54bae54539a162f79f23faaf7ee45dbded2f
--- tools/cvs2fossil/lib/c2f_project.tcl
+++ tools/cvs2fossil/lib/c2f_project.tcl
@@ -15,10 +15,11 @@
1515
# # ## ### ##### ######## ############# #####################
1616
## Requirements
1717
1818
package require Tcl 8.4 ; # Required runtime.
1919
package require snit ; # OO system.
20
+package require vc::fossil::import::cvs::state ; # State storage
2021
2122
# # ## ### ##### ######## ############# #####################
2223
##
2324
2425
snit::type ::vc::fossil::import::cvs::project {
@@ -43,10 +44,34 @@
4344
}
4445
4546
method files {} {
4647
return [array names myfiles]
4748
}
49
+
50
+ method persist {} {
51
+ state transaction {
52
+ # Project data first. Required so that we have its id
53
+ # ready for the files.
54
+
55
+ state run {
56
+ INSERT INTO project (pid, name)
57
+ VALUES (NULL, $mybase);
58
+ }
59
+ set pid [state id]
60
+
61
+ # Then all files, with proper backreference to their
62
+ # project.
63
+
64
+ foreach {rcs usr} [array get myfiles] {
65
+ state run {
66
+ INSERT INTO file (fid, pid, name, visible)
67
+ VALUES (NULL, $pid, $rcs, $usr);
68
+ }
69
+ }
70
+ }
71
+ return
72
+ }
4873
4974
# # ## ### ##### ######## #############
5075
## State
5176
5277
variable mybase {} ; # Project directory
@@ -63,12 +88,15 @@
6388
# # ## ### ##### ######## #############
6489
}
6590
6691
namespace eval ::vc::fossil::import::cvs {
6792
namespace export project
93
+ namespace eval project {
94
+ namespace import ::vc::fossil::import::cvs::state
95
+ }
6896
}
6997
7098
# # ## ### ##### ######## ############# #####################
7199
## Ready
72100
73101
package provide vc::fossil::import::cvs::project 1.0
74102
return
75103
--- tools/cvs2fossil/lib/c2f_project.tcl
+++ tools/cvs2fossil/lib/c2f_project.tcl
@@ -15,10 +15,11 @@
15 # # ## ### ##### ######## ############# #####################
16 ## Requirements
17
18 package require Tcl 8.4 ; # Required runtime.
19 package require snit ; # OO system.
 
20
21 # # ## ### ##### ######## ############# #####################
22 ##
23
24 snit::type ::vc::fossil::import::cvs::project {
@@ -43,10 +44,34 @@
43 }
44
45 method files {} {
46 return [array names myfiles]
47 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
49 # # ## ### ##### ######## #############
50 ## State
51
52 variable mybase {} ; # Project directory
@@ -63,12 +88,15 @@
63 # # ## ### ##### ######## #############
64 }
65
66 namespace eval ::vc::fossil::import::cvs {
67 namespace export project
 
 
 
68 }
69
70 # # ## ### ##### ######## ############# #####################
71 ## Ready
72
73 package provide vc::fossil::import::cvs::project 1.0
74 return
75
--- tools/cvs2fossil/lib/c2f_project.tcl
+++ tools/cvs2fossil/lib/c2f_project.tcl
@@ -15,10 +15,11 @@
15 # # ## ### ##### ######## ############# #####################
16 ## Requirements
17
18 package require Tcl 8.4 ; # Required runtime.
19 package require snit ; # OO system.
20 package require vc::fossil::import::cvs::state ; # State storage
21
22 # # ## ### ##### ######## ############# #####################
23 ##
24
25 snit::type ::vc::fossil::import::cvs::project {
@@ -43,10 +44,34 @@
44 }
45
46 method files {} {
47 return [array names myfiles]
48 }
49
50 method persist {} {
51 state transaction {
52 # Project data first. Required so that we have its id
53 # ready for the files.
54
55 state run {
56 INSERT INTO project (pid, name)
57 VALUES (NULL, $mybase);
58 }
59 set pid [state id]
60
61 # Then all files, with proper backreference to their
62 # project.
63
64 foreach {rcs usr} [array get myfiles] {
65 state run {
66 INSERT INTO file (fid, pid, name, visible)
67 VALUES (NULL, $pid, $rcs, $usr);
68 }
69 }
70 }
71 return
72 }
73
74 # # ## ### ##### ######## #############
75 ## State
76
77 variable mybase {} ; # Project directory
@@ -63,12 +88,15 @@
88 # # ## ### ##### ######## #############
89 }
90
91 namespace eval ::vc::fossil::import::cvs {
92 namespace export project
93 namespace eval project {
94 namespace import ::vc::fossil::import::cvs::state
95 }
96 }
97
98 # # ## ### ##### ######## ############# #####################
99 ## Ready
100
101 package provide vc::fossil::import::cvs::project 1.0
102 return
103
--- tools/cvs2fossil/lib/c2f_repository.tcl
+++ tools/cvs2fossil/lib/c2f_repository.tcl
@@ -19,10 +19,11 @@
1919
package require snit ; # OO system.
2020
package require vc::tools::trouble ; # Error reporting.
2121
package require vc::tools::log ; # User feedback.
2222
package require vc::tools::misc ; # Text formatting
2323
package require vc::fossil::import::cvs::project ; # CVS projects
24
+package require vc::fossil::import::cvs::state ; # State storage
2425
package require struct::list ; # List operations.
2526
package require fileutil ; # File operations.
2627
2728
# # ## ### ##### ######## ############# #####################
2829
##
@@ -115,10 +116,14 @@
115116
set projects $keep
116117
return
117118
}
118119
119120
typemethod persist {} {
121
+ state transaction {
122
+ foreach p [TheProjects] { $p persist }
123
+ }
124
+ return
120125
}
121126
122127
# # ## ### ##### ######## #############
123128
## State
124129
@@ -192,10 +197,11 @@
192197
193198
namespace eval ::vc::fossil::import::cvs {
194199
namespace export repository
195200
namespace eval repository {
196201
namespace import ::vc::fossil::import::cvs::project
202
+ namespace import ::vc::fossil::import::cvs::state
197203
namespace import ::vc::tools::trouble
198204
namespace import ::vc::tools::log
199205
namespace import ::vc::tools::misc::*
200206
log register repository
201207
}
202208
--- tools/cvs2fossil/lib/c2f_repository.tcl
+++ tools/cvs2fossil/lib/c2f_repository.tcl
@@ -19,10 +19,11 @@
19 package require snit ; # OO system.
20 package require vc::tools::trouble ; # Error reporting.
21 package require vc::tools::log ; # User feedback.
22 package require vc::tools::misc ; # Text formatting
23 package require vc::fossil::import::cvs::project ; # CVS projects
 
24 package require struct::list ; # List operations.
25 package require fileutil ; # File operations.
26
27 # # ## ### ##### ######## ############# #####################
28 ##
@@ -115,10 +116,14 @@
115 set projects $keep
116 return
117 }
118
119 typemethod persist {} {
 
 
 
 
120 }
121
122 # # ## ### ##### ######## #############
123 ## State
124
@@ -192,10 +197,11 @@
192
193 namespace eval ::vc::fossil::import::cvs {
194 namespace export repository
195 namespace eval repository {
196 namespace import ::vc::fossil::import::cvs::project
 
197 namespace import ::vc::tools::trouble
198 namespace import ::vc::tools::log
199 namespace import ::vc::tools::misc::*
200 log register repository
201 }
202
--- tools/cvs2fossil/lib/c2f_repository.tcl
+++ tools/cvs2fossil/lib/c2f_repository.tcl
@@ -19,10 +19,11 @@
19 package require snit ; # OO system.
20 package require vc::tools::trouble ; # Error reporting.
21 package require vc::tools::log ; # User feedback.
22 package require vc::tools::misc ; # Text formatting
23 package require vc::fossil::import::cvs::project ; # CVS projects
24 package require vc::fossil::import::cvs::state ; # State storage
25 package require struct::list ; # List operations.
26 package require fileutil ; # File operations.
27
28 # # ## ### ##### ######## ############# #####################
29 ##
@@ -115,10 +116,14 @@
116 set projects $keep
117 return
118 }
119
120 typemethod persist {} {
121 state transaction {
122 foreach p [TheProjects] { $p persist }
123 }
124 return
125 }
126
127 # # ## ### ##### ######## #############
128 ## State
129
@@ -192,10 +197,11 @@
197
198 namespace eval ::vc::fossil::import::cvs {
199 namespace export repository
200 namespace eval repository {
201 namespace import ::vc::fossil::import::cvs::project
202 namespace import ::vc::fossil::import::cvs::state
203 namespace import ::vc::tools::trouble
204 namespace import ::vc::tools::log
205 namespace import ::vc::tools::misc::*
206 log register repository
207 }
208
--- tools/cvs2fossil/lib/c2f_state.tcl
+++ tools/cvs2fossil/lib/c2f_state.tcl
@@ -128,10 +128,18 @@
128128
}
129129
130130
typemethod run {args} {
131131
return [uplevel 1 [linsert $args 0 $mystate eval]]
132132
}
133
+
134
+ typemethod transaction {script} {
135
+ return [uplevel 1 [list $mystate transaction $script]]
136
+ }
137
+
138
+ typemethod id {} {
139
+ return [$mystate last_insert_rowid]
140
+ }
133141
134142
# # ## ### ##### ######## #############
135143
## State
136144
137145
typevariable mystate {} ; # Sqlite database (command) holding the converter state.
138146
--- tools/cvs2fossil/lib/c2f_state.tcl
+++ tools/cvs2fossil/lib/c2f_state.tcl
@@ -128,10 +128,18 @@
128 }
129
130 typemethod run {args} {
131 return [uplevel 1 [linsert $args 0 $mystate eval]]
132 }
 
 
 
 
 
 
 
 
133
134 # # ## ### ##### ######## #############
135 ## State
136
137 typevariable mystate {} ; # Sqlite database (command) holding the converter state.
138
--- tools/cvs2fossil/lib/c2f_state.tcl
+++ tools/cvs2fossil/lib/c2f_state.tcl
@@ -128,10 +128,18 @@
128 }
129
130 typemethod run {args} {
131 return [uplevel 1 [linsert $args 0 $mystate eval]]
132 }
133
134 typemethod transaction {script} {
135 return [uplevel 1 [list $mystate transaction $script]]
136 }
137
138 typemethod id {} {
139 return [$mystate last_insert_rowid]
140 }
141
142 # # ## ### ##### ######## #############
143 ## State
144
145 typevariable mystate {} ; # Sqlite database (command) holding the converter state.
146

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button