Fossil SCM
Reworked the in-memory storage of changesets in pass 5 and supporting classes, and added loading of changesets from the persistent state for when the pass is skipped.
Commit
24c0b662de879bea0436cbba3eb449a639891bab
Parent
2a01d50430e9c9e…
2 files changed
+38
-28
+13
-4
+38
-28
| --- tools/cvs2fossil/lib/c2f_pinitcsets.tcl | ||
| +++ tools/cvs2fossil/lib/c2f_pinitcsets.tcl | ||
| @@ -98,26 +98,42 @@ | ||
| 98 | 98 | |
| 99 | 99 | typemethod load {} { |
| 100 | 100 | # Pass manager interface. Executed to load data computed by |
| 101 | 101 | # this pass into memory when this pass is skipped instead of |
| 102 | 102 | # executed. |
| 103 | - # /TODO/load changesets | |
| 103 | + | |
| 104 | + state reading changeset | |
| 105 | + state reading csrevision | |
| 106 | + state reading cstype | |
| 107 | + | |
| 108 | + foreach {id pid cstype srcid} [state run { | |
| 109 | + SELECT C.cid, C.pid, C.type, C.src | |
| 110 | + FROM changeset C | |
| 111 | + ORDER BY C.cid | |
| 112 | + }] { | |
| 113 | + set r [project::rev %AUTO% [repository projectof $pid] $cstype $srcid [state run { | |
| 114 | + SELECT C.rid | |
| 115 | + FROM csrevision C | |
| 116 | + WHERE C.cid = $id | |
| 117 | + ORDER BY C.pos | |
| 118 | + }]] | |
| 119 | + $r setid $id | |
| 120 | + } | |
| 104 | 121 | |
| 105 | 122 | project::rev getcstypes |
| 106 | 123 | return |
| 107 | 124 | } |
| 108 | 125 | |
| 109 | 126 | typemethod run {} { |
| 110 | 127 | # Pass manager interface. Executed to perform the |
| 111 | 128 | # functionality of the pass. |
| 112 | 129 | |
| 113 | - set csets {} | |
| 114 | 130 | state transaction { |
| 115 | - CreateRevisionChangesets csets ; # Group file revisions into csets. | |
| 116 | - BreakInternalDependencies csets ; # Split the csets based on internal conflicts. | |
| 117 | - CreateSymbolChangesets csets ; # Create csets for tags and branches. | |
| 118 | - PersistTheChangesets $csets | |
| 131 | + CreateRevisionChangesets ; # Group file revisions into csets. | |
| 132 | + BreakInternalDependencies ; # Split the csets based on internal conflicts. | |
| 133 | + CreateSymbolChangesets ; # Create csets for tags and branches. | |
| 134 | + PersistTheChangesets | |
| 119 | 135 | } |
| 120 | 136 | return |
| 121 | 137 | } |
| 122 | 138 | |
| 123 | 139 | typemethod discard {} { |
| @@ -132,13 +148,11 @@ | ||
| 132 | 148 | } |
| 133 | 149 | |
| 134 | 150 | # # ## ### ##### ######## ############# |
| 135 | 151 | ## Internal methods |
| 136 | 152 | |
| 137 | - proc CreateRevisionChangesets {cv} { | |
| 138 | - upvar 1 $cv csets | |
| 139 | - | |
| 153 | + proc CreateRevisionChangesets {} { | |
| 140 | 154 | log write 3 initcsets {Create changesets based on revisions} |
| 141 | 155 | |
| 142 | 156 | # To get the initial of changesets we first group all file |
| 143 | 157 | # level revisions using the same meta data entry together. As |
| 144 | 158 | # the meta data encodes not only author and log message, but |
| @@ -174,11 +188,11 @@ | ||
| 174 | 188 | }] { |
| 175 | 189 | if {$lastmeta != $mid} { |
| 176 | 190 | if {[llength $revisions]} { |
| 177 | 191 | incr n |
| 178 | 192 | set p [repository projectof $lastproject] |
| 179 | - lappend csets [project::rev %AUTO% $p rev $lastmeta $revisions] | |
| 193 | + project::rev %AUTO% $p rev $lastmeta $revisions | |
| 180 | 194 | set revisions {} |
| 181 | 195 | } |
| 182 | 196 | set lastmeta $mid |
| 183 | 197 | set lastproject $pid |
| 184 | 198 | } |
| @@ -186,20 +200,18 @@ | ||
| 186 | 200 | } |
| 187 | 201 | |
| 188 | 202 | if {[llength $revisions]} { |
| 189 | 203 | incr n |
| 190 | 204 | set p [repository projectof $lastproject] |
| 191 | - lappend csets [project::rev %AUTO% $p rev $lastmeta $revisions] | |
| 205 | + project::rev %AUTO% $p rev $lastmeta $revisions | |
| 192 | 206 | } |
| 193 | 207 | |
| 194 | 208 | log write 4 initcsets "Created [nsp $n {revision changeset}]" |
| 195 | 209 | return |
| 196 | 210 | } |
| 197 | 211 | |
| 198 | - proc CreateSymbolChangesets {cv} { | |
| 199 | - upvar 1 $cv csets | |
| 200 | - | |
| 212 | + proc CreateSymbolChangesets {} { | |
| 201 | 213 | log write 3 initcsets {Create changesets based on symbols} |
| 202 | 214 | |
| 203 | 215 | # Tags and branches induce changesets as well, containing the |
| 204 | 216 | # revisions they are attached to (tags), or spawned from |
| 205 | 217 | # (branches). |
| @@ -222,11 +234,11 @@ | ||
| 222 | 234 | }] { |
| 223 | 235 | if {$lastsymbol != $sid} { |
| 224 | 236 | if {[llength $revisions]} { |
| 225 | 237 | incr n |
| 226 | 238 | set p [repository projectof $lastproject] |
| 227 | - lappend csets [project::rev %AUTO% $p sym $lastsymbol $revisions] | |
| 239 | + project::rev %AUTO% $p sym $lastsymbol $revisions | |
| 228 | 240 | set revisions {} |
| 229 | 241 | } |
| 230 | 242 | set lastsymbol $sid |
| 231 | 243 | set lastproject $pid |
| 232 | 244 | } |
| @@ -234,11 +246,11 @@ | ||
| 234 | 246 | } |
| 235 | 247 | |
| 236 | 248 | if {[llength $revisions]} { |
| 237 | 249 | incr n |
| 238 | 250 | set p [repository projectof $lastproject] |
| 239 | - lappend csets [project::rev %AUTO% $p sym $lastsymbol $revisions] | |
| 251 | + project::rev %AUTO% $p sym $lastsymbol $revisions | |
| 240 | 252 | } |
| 241 | 253 | |
| 242 | 254 | set lastsymbol {} |
| 243 | 255 | set lasproject {} |
| 244 | 256 | set revisions {} |
| @@ -252,11 +264,11 @@ | ||
| 252 | 264 | }] { |
| 253 | 265 | if {$lastsymbol != $sid} { |
| 254 | 266 | if {[llength $revisions]} { |
| 255 | 267 | incr n |
| 256 | 268 | set p [repository projectof $lastproject] |
| 257 | - lappend csets [project::rev %AUTO% $p sym $lastsymbol $revisions] | |
| 269 | + project::rev %AUTO% $p sym $lastsymbol $revisions | |
| 258 | 270 | set revisions {} |
| 259 | 271 | } |
| 260 | 272 | set lastsymbol $sid |
| 261 | 273 | set lastproject $pid |
| 262 | 274 | } |
| @@ -264,45 +276,43 @@ | ||
| 264 | 276 | } |
| 265 | 277 | |
| 266 | 278 | if {[llength $revisions]} { |
| 267 | 279 | incr n |
| 268 | 280 | set p [repository projectof $lastproject] |
| 269 | - lappend csets [project::rev %AUTO% $p sym $lastsymbol $revisions] | |
| 281 | + project::rev %AUTO% $p sym $lastsymbol $revisions | |
| 270 | 282 | } |
| 271 | 283 | |
| 272 | 284 | log write 4 initcsets "Created [nsp $n {symbol changeset}]" |
| 273 | 285 | return |
| 274 | 286 | } |
| 275 | 287 | |
| 276 | - proc BreakInternalDependencies {cv} { | |
| 277 | - upvar 1 $cv csets | |
| 278 | - | |
| 288 | + proc BreakInternalDependencies {} { | |
| 279 | 289 | # This code operates on the revision changesets created by |
| 280 | 290 | # 'CreateRevisionChangesets'. As such it has to follow after |
| 281 | 291 | # it, before the symbol changesets are made. The changesets |
| 282 | 292 | # are inspected for internal conflicts and any such are broken |
| 283 | 293 | # by splitting the problematic changeset into multiple |
| 284 | 294 | # fragments. The results are changesets which have no internal |
| 285 | 295 | # dependencies, only external ones. |
| 286 | 296 | |
| 287 | 297 | log write 3 initcsets {Break internal dependencies} |
| 288 | - set old [llength $csets] | |
| 298 | + set old [llength [project::rev all]] | |
| 289 | 299 | |
| 290 | - foreach cset $csets { | |
| 291 | - $cset breakinternaldependencies csets | |
| 300 | + foreach cset [project::rev all] { | |
| 301 | + $cset breakinternaldependencies | |
| 292 | 302 | } |
| 293 | 303 | |
| 294 | - set n [expr {[llength $csets] - $old}] | |
| 304 | + set n [expr {[llength [project::rev all]] - $old}] | |
| 295 | 305 | log write 4 initcsets "Created [nsp $n {additional revision changeset}]" |
| 296 | 306 | log write 4 initcsets Ok. |
| 297 | 307 | return |
| 298 | 308 | } |
| 299 | 309 | |
| 300 | - proc PersistTheChangesets {csets} { | |
| 301 | - log write 3 initcsets "Saving [nsp [llength $csets] {initial changeset}] to the persistent state" | |
| 310 | + proc PersistTheChangesets {} { | |
| 311 | + log write 3 initcsets "Saving [nsp [llength [project::rev all]] {initial changeset}] to the persistent state" | |
| 302 | 312 | |
| 303 | - foreach cset $csets { | |
| 313 | + foreach cset [project::rev all] { | |
| 304 | 314 | $cset persist |
| 305 | 315 | } |
| 306 | 316 | |
| 307 | 317 | log write 4 initcsets Ok. |
| 308 | 318 | return |
| 309 | 319 |
| --- tools/cvs2fossil/lib/c2f_pinitcsets.tcl | |
| +++ tools/cvs2fossil/lib/c2f_pinitcsets.tcl | |
| @@ -98,26 +98,42 @@ | |
| 98 | |
| 99 | typemethod load {} { |
| 100 | # Pass manager interface. Executed to load data computed by |
| 101 | # this pass into memory when this pass is skipped instead of |
| 102 | # executed. |
| 103 | # /TODO/load changesets |
| 104 | |
| 105 | project::rev getcstypes |
| 106 | return |
| 107 | } |
| 108 | |
| 109 | typemethod run {} { |
| 110 | # Pass manager interface. Executed to perform the |
| 111 | # functionality of the pass. |
| 112 | |
| 113 | set csets {} |
| 114 | state transaction { |
| 115 | CreateRevisionChangesets csets ; # Group file revisions into csets. |
| 116 | BreakInternalDependencies csets ; # Split the csets based on internal conflicts. |
| 117 | CreateSymbolChangesets csets ; # Create csets for tags and branches. |
| 118 | PersistTheChangesets $csets |
| 119 | } |
| 120 | return |
| 121 | } |
| 122 | |
| 123 | typemethod discard {} { |
| @@ -132,13 +148,11 @@ | |
| 132 | } |
| 133 | |
| 134 | # # ## ### ##### ######## ############# |
| 135 | ## Internal methods |
| 136 | |
| 137 | proc CreateRevisionChangesets {cv} { |
| 138 | upvar 1 $cv csets |
| 139 | |
| 140 | log write 3 initcsets {Create changesets based on revisions} |
| 141 | |
| 142 | # To get the initial of changesets we first group all file |
| 143 | # level revisions using the same meta data entry together. As |
| 144 | # the meta data encodes not only author and log message, but |
| @@ -174,11 +188,11 @@ | |
| 174 | }] { |
| 175 | if {$lastmeta != $mid} { |
| 176 | if {[llength $revisions]} { |
| 177 | incr n |
| 178 | set p [repository projectof $lastproject] |
| 179 | lappend csets [project::rev %AUTO% $p rev $lastmeta $revisions] |
| 180 | set revisions {} |
| 181 | } |
| 182 | set lastmeta $mid |
| 183 | set lastproject $pid |
| 184 | } |
| @@ -186,20 +200,18 @@ | |
| 186 | } |
| 187 | |
| 188 | if {[llength $revisions]} { |
| 189 | incr n |
| 190 | set p [repository projectof $lastproject] |
| 191 | lappend csets [project::rev %AUTO% $p rev $lastmeta $revisions] |
| 192 | } |
| 193 | |
| 194 | log write 4 initcsets "Created [nsp $n {revision changeset}]" |
| 195 | return |
| 196 | } |
| 197 | |
| 198 | proc CreateSymbolChangesets {cv} { |
| 199 | upvar 1 $cv csets |
| 200 | |
| 201 | log write 3 initcsets {Create changesets based on symbols} |
| 202 | |
| 203 | # Tags and branches induce changesets as well, containing the |
| 204 | # revisions they are attached to (tags), or spawned from |
| 205 | # (branches). |
| @@ -222,11 +234,11 @@ | |
| 222 | }] { |
| 223 | if {$lastsymbol != $sid} { |
| 224 | if {[llength $revisions]} { |
| 225 | incr n |
| 226 | set p [repository projectof $lastproject] |
| 227 | lappend csets [project::rev %AUTO% $p sym $lastsymbol $revisions] |
| 228 | set revisions {} |
| 229 | } |
| 230 | set lastsymbol $sid |
| 231 | set lastproject $pid |
| 232 | } |
| @@ -234,11 +246,11 @@ | |
| 234 | } |
| 235 | |
| 236 | if {[llength $revisions]} { |
| 237 | incr n |
| 238 | set p [repository projectof $lastproject] |
| 239 | lappend csets [project::rev %AUTO% $p sym $lastsymbol $revisions] |
| 240 | } |
| 241 | |
| 242 | set lastsymbol {} |
| 243 | set lasproject {} |
| 244 | set revisions {} |
| @@ -252,11 +264,11 @@ | |
| 252 | }] { |
| 253 | if {$lastsymbol != $sid} { |
| 254 | if {[llength $revisions]} { |
| 255 | incr n |
| 256 | set p [repository projectof $lastproject] |
| 257 | lappend csets [project::rev %AUTO% $p sym $lastsymbol $revisions] |
| 258 | set revisions {} |
| 259 | } |
| 260 | set lastsymbol $sid |
| 261 | set lastproject $pid |
| 262 | } |
| @@ -264,45 +276,43 @@ | |
| 264 | } |
| 265 | |
| 266 | if {[llength $revisions]} { |
| 267 | incr n |
| 268 | set p [repository projectof $lastproject] |
| 269 | lappend csets [project::rev %AUTO% $p sym $lastsymbol $revisions] |
| 270 | } |
| 271 | |
| 272 | log write 4 initcsets "Created [nsp $n {symbol changeset}]" |
| 273 | return |
| 274 | } |
| 275 | |
| 276 | proc BreakInternalDependencies {cv} { |
| 277 | upvar 1 $cv csets |
| 278 | |
| 279 | # This code operates on the revision changesets created by |
| 280 | # 'CreateRevisionChangesets'. As such it has to follow after |
| 281 | # it, before the symbol changesets are made. The changesets |
| 282 | # are inspected for internal conflicts and any such are broken |
| 283 | # by splitting the problematic changeset into multiple |
| 284 | # fragments. The results are changesets which have no internal |
| 285 | # dependencies, only external ones. |
| 286 | |
| 287 | log write 3 initcsets {Break internal dependencies} |
| 288 | set old [llength $csets] |
| 289 | |
| 290 | foreach cset $csets { |
| 291 | $cset breakinternaldependencies csets |
| 292 | } |
| 293 | |
| 294 | set n [expr {[llength $csets] - $old}] |
| 295 | log write 4 initcsets "Created [nsp $n {additional revision changeset}]" |
| 296 | log write 4 initcsets Ok. |
| 297 | return |
| 298 | } |
| 299 | |
| 300 | proc PersistTheChangesets {csets} { |
| 301 | log write 3 initcsets "Saving [nsp [llength $csets] {initial changeset}] to the persistent state" |
| 302 | |
| 303 | foreach cset $csets { |
| 304 | $cset persist |
| 305 | } |
| 306 | |
| 307 | log write 4 initcsets Ok. |
| 308 | return |
| 309 |
| --- tools/cvs2fossil/lib/c2f_pinitcsets.tcl | |
| +++ tools/cvs2fossil/lib/c2f_pinitcsets.tcl | |
| @@ -98,26 +98,42 @@ | |
| 98 | |
| 99 | typemethod load {} { |
| 100 | # Pass manager interface. Executed to load data computed by |
| 101 | # this pass into memory when this pass is skipped instead of |
| 102 | # executed. |
| 103 | |
| 104 | state reading changeset |
| 105 | state reading csrevision |
| 106 | state reading cstype |
| 107 | |
| 108 | foreach {id pid cstype srcid} [state run { |
| 109 | SELECT C.cid, C.pid, C.type, C.src |
| 110 | FROM changeset C |
| 111 | ORDER BY C.cid |
| 112 | }] { |
| 113 | set r [project::rev %AUTO% [repository projectof $pid] $cstype $srcid [state run { |
| 114 | SELECT C.rid |
| 115 | FROM csrevision C |
| 116 | WHERE C.cid = $id |
| 117 | ORDER BY C.pos |
| 118 | }]] |
| 119 | $r setid $id |
| 120 | } |
| 121 | |
| 122 | project::rev getcstypes |
| 123 | return |
| 124 | } |
| 125 | |
| 126 | typemethod run {} { |
| 127 | # Pass manager interface. Executed to perform the |
| 128 | # functionality of the pass. |
| 129 | |
| 130 | state transaction { |
| 131 | CreateRevisionChangesets ; # Group file revisions into csets. |
| 132 | BreakInternalDependencies ; # Split the csets based on internal conflicts. |
| 133 | CreateSymbolChangesets ; # Create csets for tags and branches. |
| 134 | PersistTheChangesets |
| 135 | } |
| 136 | return |
| 137 | } |
| 138 | |
| 139 | typemethod discard {} { |
| @@ -132,13 +148,11 @@ | |
| 148 | } |
| 149 | |
| 150 | # # ## ### ##### ######## ############# |
| 151 | ## Internal methods |
| 152 | |
| 153 | proc CreateRevisionChangesets {} { |
| 154 | log write 3 initcsets {Create changesets based on revisions} |
| 155 | |
| 156 | # To get the initial of changesets we first group all file |
| 157 | # level revisions using the same meta data entry together. As |
| 158 | # the meta data encodes not only author and log message, but |
| @@ -174,11 +188,11 @@ | |
| 188 | }] { |
| 189 | if {$lastmeta != $mid} { |
| 190 | if {[llength $revisions]} { |
| 191 | incr n |
| 192 | set p [repository projectof $lastproject] |
| 193 | project::rev %AUTO% $p rev $lastmeta $revisions |
| 194 | set revisions {} |
| 195 | } |
| 196 | set lastmeta $mid |
| 197 | set lastproject $pid |
| 198 | } |
| @@ -186,20 +200,18 @@ | |
| 200 | } |
| 201 | |
| 202 | if {[llength $revisions]} { |
| 203 | incr n |
| 204 | set p [repository projectof $lastproject] |
| 205 | project::rev %AUTO% $p rev $lastmeta $revisions |
| 206 | } |
| 207 | |
| 208 | log write 4 initcsets "Created [nsp $n {revision changeset}]" |
| 209 | return |
| 210 | } |
| 211 | |
| 212 | proc CreateSymbolChangesets {} { |
| 213 | log write 3 initcsets {Create changesets based on symbols} |
| 214 | |
| 215 | # Tags and branches induce changesets as well, containing the |
| 216 | # revisions they are attached to (tags), or spawned from |
| 217 | # (branches). |
| @@ -222,11 +234,11 @@ | |
| 234 | }] { |
| 235 | if {$lastsymbol != $sid} { |
| 236 | if {[llength $revisions]} { |
| 237 | incr n |
| 238 | set p [repository projectof $lastproject] |
| 239 | project::rev %AUTO% $p sym $lastsymbol $revisions |
| 240 | set revisions {} |
| 241 | } |
| 242 | set lastsymbol $sid |
| 243 | set lastproject $pid |
| 244 | } |
| @@ -234,11 +246,11 @@ | |
| 246 | } |
| 247 | |
| 248 | if {[llength $revisions]} { |
| 249 | incr n |
| 250 | set p [repository projectof $lastproject] |
| 251 | project::rev %AUTO% $p sym $lastsymbol $revisions |
| 252 | } |
| 253 | |
| 254 | set lastsymbol {} |
| 255 | set lasproject {} |
| 256 | set revisions {} |
| @@ -252,11 +264,11 @@ | |
| 264 | }] { |
| 265 | if {$lastsymbol != $sid} { |
| 266 | if {[llength $revisions]} { |
| 267 | incr n |
| 268 | set p [repository projectof $lastproject] |
| 269 | project::rev %AUTO% $p sym $lastsymbol $revisions |
| 270 | set revisions {} |
| 271 | } |
| 272 | set lastsymbol $sid |
| 273 | set lastproject $pid |
| 274 | } |
| @@ -264,45 +276,43 @@ | |
| 276 | } |
| 277 | |
| 278 | if {[llength $revisions]} { |
| 279 | incr n |
| 280 | set p [repository projectof $lastproject] |
| 281 | project::rev %AUTO% $p sym $lastsymbol $revisions |
| 282 | } |
| 283 | |
| 284 | log write 4 initcsets "Created [nsp $n {symbol changeset}]" |
| 285 | return |
| 286 | } |
| 287 | |
| 288 | proc BreakInternalDependencies {} { |
| 289 | # This code operates on the revision changesets created by |
| 290 | # 'CreateRevisionChangesets'. As such it has to follow after |
| 291 | # it, before the symbol changesets are made. The changesets |
| 292 | # are inspected for internal conflicts and any such are broken |
| 293 | # by splitting the problematic changeset into multiple |
| 294 | # fragments. The results are changesets which have no internal |
| 295 | # dependencies, only external ones. |
| 296 | |
| 297 | log write 3 initcsets {Break internal dependencies} |
| 298 | set old [llength [project::rev all]] |
| 299 | |
| 300 | foreach cset [project::rev all] { |
| 301 | $cset breakinternaldependencies |
| 302 | } |
| 303 | |
| 304 | set n [expr {[llength [project::rev all]] - $old}] |
| 305 | log write 4 initcsets "Created [nsp $n {additional revision changeset}]" |
| 306 | log write 4 initcsets Ok. |
| 307 | return |
| 308 | } |
| 309 | |
| 310 | proc PersistTheChangesets {} { |
| 311 | log write 3 initcsets "Saving [nsp [llength [project::rev all]] {initial changeset}] to the persistent state" |
| 312 | |
| 313 | foreach cset [project::rev all] { |
| 314 | $cset persist |
| 315 | } |
| 316 | |
| 317 | log write 4 initcsets Ok. |
| 318 | return |
| 319 |
+13
-4
| --- tools/cvs2fossil/lib/c2f_prev.tcl | ||
| +++ tools/cvs2fossil/lib/c2f_prev.tcl | ||
| @@ -34,18 +34,20 @@ | ||
| 34 | 34 | set myid [incr mycounter] |
| 35 | 35 | set myproject $project |
| 36 | 36 | set mytype $cstype |
| 37 | 37 | set mysrcid $srcid |
| 38 | 38 | set myrevisions $revisions |
| 39 | + | |
| 40 | + # Keep track of the generated changesets. | |
| 41 | + lappend mychangesets $self | |
| 39 | 42 | return |
| 40 | 43 | } |
| 41 | 44 | |
| 42 | 45 | method id {} { return $myid } |
| 46 | + method setid {id} { set myid $id ; return } | |
| 43 | 47 | |
| 44 | - method breakinternaldependencies {cv} { | |
| 45 | - upvar 2 $cv csets ; # simple-dispatch! | |
| 46 | - | |
| 48 | + method breakinternaldependencies {} { | |
| 47 | 49 | # This method inspects the changesets for internal |
| 48 | 50 | # dependencies. Nothing is done if there are no |
| 49 | 51 | # such. Otherwise the changeset is split into a set of |
| 50 | 52 | # fragments without internal dependencies, transforming the |
| 51 | 53 | # internal dependencies into external ones. The new changesets |
| @@ -165,11 +167,10 @@ | ||
| 165 | 167 | if {$laste != ($s - 1)} { |
| 166 | 168 | trouble internal "Bad fragment border <$laste | $s>, gap or overlap" |
| 167 | 169 | } |
| 168 | 170 | |
| 169 | 171 | set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myrevisions $s $e]] |
| 170 | - lappend csets $new | |
| 171 | 172 | |
| 172 | 173 | log write 4 csets "Breaking <$myid> @ $laste, new <[$new id]>, cutting $breaks($laste)" |
| 173 | 174 | |
| 174 | 175 | set laste $e |
| 175 | 176 | } |
| @@ -466,10 +467,18 @@ | ||
| 466 | 467 | upvar 1 $sv s $ev e |
| 467 | 468 | set s [lindex $range 0] |
| 468 | 469 | set e [lindex $range end] |
| 469 | 470 | return |
| 470 | 471 | } |
| 472 | + | |
| 473 | + # # ## ### ##### ######## ############# | |
| 474 | + | |
| 475 | + typevariable mychangesets {} ; # List of all known changesets. | |
| 476 | + | |
| 477 | + typemethod all {} { | |
| 478 | + return $mychangesets | |
| 479 | + } | |
| 471 | 480 | |
| 472 | 481 | # # ## ### ##### ######## ############# |
| 473 | 482 | ## Configuration |
| 474 | 483 | |
| 475 | 484 | pragma -hastypeinfo no ; # no type introspection |
| 476 | 485 |
| --- tools/cvs2fossil/lib/c2f_prev.tcl | |
| +++ tools/cvs2fossil/lib/c2f_prev.tcl | |
| @@ -34,18 +34,20 @@ | |
| 34 | set myid [incr mycounter] |
| 35 | set myproject $project |
| 36 | set mytype $cstype |
| 37 | set mysrcid $srcid |
| 38 | set myrevisions $revisions |
| 39 | return |
| 40 | } |
| 41 | |
| 42 | method id {} { return $myid } |
| 43 | |
| 44 | method breakinternaldependencies {cv} { |
| 45 | upvar 2 $cv csets ; # simple-dispatch! |
| 46 | |
| 47 | # This method inspects the changesets for internal |
| 48 | # dependencies. Nothing is done if there are no |
| 49 | # such. Otherwise the changeset is split into a set of |
| 50 | # fragments without internal dependencies, transforming the |
| 51 | # internal dependencies into external ones. The new changesets |
| @@ -165,11 +167,10 @@ | |
| 165 | if {$laste != ($s - 1)} { |
| 166 | trouble internal "Bad fragment border <$laste | $s>, gap or overlap" |
| 167 | } |
| 168 | |
| 169 | set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myrevisions $s $e]] |
| 170 | lappend csets $new |
| 171 | |
| 172 | log write 4 csets "Breaking <$myid> @ $laste, new <[$new id]>, cutting $breaks($laste)" |
| 173 | |
| 174 | set laste $e |
| 175 | } |
| @@ -466,10 +467,18 @@ | |
| 466 | upvar 1 $sv s $ev e |
| 467 | set s [lindex $range 0] |
| 468 | set e [lindex $range end] |
| 469 | return |
| 470 | } |
| 471 | |
| 472 | # # ## ### ##### ######## ############# |
| 473 | ## Configuration |
| 474 | |
| 475 | pragma -hastypeinfo no ; # no type introspection |
| 476 |
| --- tools/cvs2fossil/lib/c2f_prev.tcl | |
| +++ tools/cvs2fossil/lib/c2f_prev.tcl | |
| @@ -34,18 +34,20 @@ | |
| 34 | set myid [incr mycounter] |
| 35 | set myproject $project |
| 36 | set mytype $cstype |
| 37 | set mysrcid $srcid |
| 38 | set myrevisions $revisions |
| 39 | |
| 40 | # Keep track of the generated changesets. |
| 41 | lappend mychangesets $self |
| 42 | return |
| 43 | } |
| 44 | |
| 45 | method id {} { return $myid } |
| 46 | method setid {id} { set myid $id ; return } |
| 47 | |
| 48 | method breakinternaldependencies {} { |
| 49 | # This method inspects the changesets for internal |
| 50 | # dependencies. Nothing is done if there are no |
| 51 | # such. Otherwise the changeset is split into a set of |
| 52 | # fragments without internal dependencies, transforming the |
| 53 | # internal dependencies into external ones. The new changesets |
| @@ -165,11 +167,10 @@ | |
| 167 | if {$laste != ($s - 1)} { |
| 168 | trouble internal "Bad fragment border <$laste | $s>, gap or overlap" |
| 169 | } |
| 170 | |
| 171 | set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myrevisions $s $e]] |
| 172 | |
| 173 | log write 4 csets "Breaking <$myid> @ $laste, new <[$new id]>, cutting $breaks($laste)" |
| 174 | |
| 175 | set laste $e |
| 176 | } |
| @@ -466,10 +467,18 @@ | |
| 467 | upvar 1 $sv s $ev e |
| 468 | set s [lindex $range 0] |
| 469 | set e [lindex $range end] |
| 470 | return |
| 471 | } |
| 472 | |
| 473 | # # ## ### ##### ######## ############# |
| 474 | |
| 475 | typevariable mychangesets {} ; # List of all known changesets. |
| 476 | |
| 477 | typemethod all {} { |
| 478 | return $mychangesets |
| 479 | } |
| 480 | |
| 481 | # # ## ### ##### ######## ############# |
| 482 | ## Configuration |
| 483 | |
| 484 | pragma -hastypeinfo no ; # no type introspection |
| 485 |