Fossil SCM
Merged bugfix [b3d61d7829] into the main branch for optimization of memory usage.
Commit
efec424a194ee41528af9700549eb4336e21eed4
Parent
c2ad73ed9243ac9…
3 files changed
+4
-2
+4
-2
+4
-2
| --- tools/cvs2fossil/lib/c2f_pinitcsets.tcl | ||
| +++ tools/cvs2fossil/lib/c2f_pinitcsets.tcl | ||
| @@ -211,13 +211,14 @@ | ||
| 211 | 211 | set p [repository projectof $lastproject] |
| 212 | 212 | log write 14 initcsets meta_cset_begin |
| 213 | 213 | mem::mark |
| 214 | 214 | set cset [project::rev %AUTO% $p rev $lastmeta $revisions] |
| 215 | 215 | log write 14 initcsets meta_cset_done |
| 216 | - $cset breakinternaldependencies nx | |
| 216 | + set spawned [$cset breakinternaldependencies nx] | |
| 217 | 217 | $cset persist |
| 218 | 218 | $cset destroy |
| 219 | + foreach cset $spawned { $cset persist ; $cset destroy } | |
| 219 | 220 | mem::mark |
| 220 | 221 | set revisions {} |
| 221 | 222 | } |
| 222 | 223 | set lastmeta $mid |
| 223 | 224 | set lastproject $pid |
| @@ -230,13 +231,14 @@ | ||
| 230 | 231 | set p [repository projectof $lastproject] |
| 231 | 232 | log write 14 initcsets meta_cset_begin |
| 232 | 233 | mem::mark |
| 233 | 234 | set cset [project::rev %AUTO% $p rev $lastmeta $revisions] |
| 234 | 235 | log write 14 initcsets meta_cset_done |
| 235 | - $cset breakinternaldependencies nx | |
| 236 | + set spawned [$cset breakinternaldependencies nx] | |
| 236 | 237 | $cset persist |
| 237 | 238 | $cset destroy |
| 239 | + foreach cset $spawned { $cset persist ; $cset destroy } | |
| 238 | 240 | mem::mark |
| 239 | 241 | } |
| 240 | 242 | |
| 241 | 243 | log write 14 initcsets meta_done |
| 242 | 244 | mem::mark |
| 243 | 245 |
| --- tools/cvs2fossil/lib/c2f_pinitcsets.tcl | |
| +++ tools/cvs2fossil/lib/c2f_pinitcsets.tcl | |
| @@ -211,13 +211,14 @@ | |
| 211 | set p [repository projectof $lastproject] |
| 212 | log write 14 initcsets meta_cset_begin |
| 213 | mem::mark |
| 214 | set cset [project::rev %AUTO% $p rev $lastmeta $revisions] |
| 215 | log write 14 initcsets meta_cset_done |
| 216 | $cset breakinternaldependencies nx |
| 217 | $cset persist |
| 218 | $cset destroy |
| 219 | mem::mark |
| 220 | set revisions {} |
| 221 | } |
| 222 | set lastmeta $mid |
| 223 | set lastproject $pid |
| @@ -230,13 +231,14 @@ | |
| 230 | set p [repository projectof $lastproject] |
| 231 | log write 14 initcsets meta_cset_begin |
| 232 | mem::mark |
| 233 | set cset [project::rev %AUTO% $p rev $lastmeta $revisions] |
| 234 | log write 14 initcsets meta_cset_done |
| 235 | $cset breakinternaldependencies nx |
| 236 | $cset persist |
| 237 | $cset destroy |
| 238 | mem::mark |
| 239 | } |
| 240 | |
| 241 | log write 14 initcsets meta_done |
| 242 | mem::mark |
| 243 |
| --- tools/cvs2fossil/lib/c2f_pinitcsets.tcl | |
| +++ tools/cvs2fossil/lib/c2f_pinitcsets.tcl | |
| @@ -211,13 +211,14 @@ | |
| 211 | set p [repository projectof $lastproject] |
| 212 | log write 14 initcsets meta_cset_begin |
| 213 | mem::mark |
| 214 | set cset [project::rev %AUTO% $p rev $lastmeta $revisions] |
| 215 | log write 14 initcsets meta_cset_done |
| 216 | set spawned [$cset breakinternaldependencies nx] |
| 217 | $cset persist |
| 218 | $cset destroy |
| 219 | foreach cset $spawned { $cset persist ; $cset destroy } |
| 220 | mem::mark |
| 221 | set revisions {} |
| 222 | } |
| 223 | set lastmeta $mid |
| 224 | set lastproject $pid |
| @@ -230,13 +231,14 @@ | |
| 231 | set p [repository projectof $lastproject] |
| 232 | log write 14 initcsets meta_cset_begin |
| 233 | mem::mark |
| 234 | set cset [project::rev %AUTO% $p rev $lastmeta $revisions] |
| 235 | log write 14 initcsets meta_cset_done |
| 236 | set spawned [$cset breakinternaldependencies nx] |
| 237 | $cset persist |
| 238 | $cset destroy |
| 239 | foreach cset $spawned { $cset persist ; $cset destroy } |
| 240 | mem::mark |
| 241 | } |
| 242 | |
| 243 | log write 14 initcsets meta_done |
| 244 | mem::mark |
| 245 |
| --- tools/cvs2fossil/lib/c2f_prev.tcl | ||
| +++ tools/cvs2fossil/lib/c2f_prev.tcl | ||
| @@ -184,11 +184,11 @@ | ||
| 184 | 184 | # the state, and limited to successors within the changeset. |
| 185 | 185 | |
| 186 | 186 | array set dependencies {} |
| 187 | 187 | $mytypeobj internalsuccessors dependencies $myitems |
| 188 | 188 | if {![array size dependencies]} { |
| 189 | - return 0 | |
| 189 | + return {} | |
| 190 | 190 | } ; # Nothing to break. |
| 191 | 191 | |
| 192 | 192 | log write 5 csets ...[$self str]....................................................... |
| 193 | 193 | vc::tools::mem::mark |
| 194 | 194 | |
| @@ -296,10 +296,11 @@ | ||
| 296 | 296 | |
| 297 | 297 | # Create changesets for the fragments, reusing the current one |
| 298 | 298 | # for the first fragment. We sort them in order to allow |
| 299 | 299 | # checking for gaps and nice messages. |
| 300 | 300 | |
| 301 | + set newcsets {} | |
| 301 | 302 | set fragments [lsort -index 0 -integer $fragments] |
| 302 | 303 | |
| 303 | 304 | #puts \t.[join [PRs $fragments] .\n\t.]. |
| 304 | 305 | |
| 305 | 306 | Border [lindex $fragments 0] firsts firste |
| @@ -310,10 +311,11 @@ | ||
| 310 | 311 | foreach fragment [lrange $fragments 1 end] { |
| 311 | 312 | Border $fragment s e |
| 312 | 313 | integrity assert {$laste == ($s - 1)} {Bad fragment border <$laste | $s>, gap or overlap} |
| 313 | 314 | |
| 314 | 315 | set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myitems $s $e]] |
| 316 | + lappend newcsets $new | |
| 315 | 317 | incr counter |
| 316 | 318 | |
| 317 | 319 | log write 4 csets "Breaking [$self str ] @ $laste, new [$new str], cutting $breaks($laste)" |
| 318 | 320 | |
| 319 | 321 | set laste $e |
| @@ -335,11 +337,11 @@ | ||
| 335 | 337 | set key [list $mytype $iid] |
| 336 | 338 | set myitemmap($key) $self |
| 337 | 339 | log write 8 csets {MAP+ item <$key> $self = [$self str]} |
| 338 | 340 | } |
| 339 | 341 | |
| 340 | - return 1 | |
| 342 | + return $newcsets | |
| 341 | 343 | } |
| 342 | 344 | |
| 343 | 345 | method persist {} { |
| 344 | 346 | set tid $mycstype($mytype) |
| 345 | 347 | set pid [$myproject id] |
| 346 | 348 |
| --- tools/cvs2fossil/lib/c2f_prev.tcl | |
| +++ tools/cvs2fossil/lib/c2f_prev.tcl | |
| @@ -184,11 +184,11 @@ | |
| 184 | # the state, and limited to successors within the changeset. |
| 185 | |
| 186 | array set dependencies {} |
| 187 | $mytypeobj internalsuccessors dependencies $myitems |
| 188 | if {![array size dependencies]} { |
| 189 | return 0 |
| 190 | } ; # Nothing to break. |
| 191 | |
| 192 | log write 5 csets ...[$self str]....................................................... |
| 193 | vc::tools::mem::mark |
| 194 | |
| @@ -296,10 +296,11 @@ | |
| 296 | |
| 297 | # Create changesets for the fragments, reusing the current one |
| 298 | # for the first fragment. We sort them in order to allow |
| 299 | # checking for gaps and nice messages. |
| 300 | |
| 301 | set fragments [lsort -index 0 -integer $fragments] |
| 302 | |
| 303 | #puts \t.[join [PRs $fragments] .\n\t.]. |
| 304 | |
| 305 | Border [lindex $fragments 0] firsts firste |
| @@ -310,10 +311,11 @@ | |
| 310 | foreach fragment [lrange $fragments 1 end] { |
| 311 | Border $fragment s e |
| 312 | integrity assert {$laste == ($s - 1)} {Bad fragment border <$laste | $s>, gap or overlap} |
| 313 | |
| 314 | set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myitems $s $e]] |
| 315 | incr counter |
| 316 | |
| 317 | log write 4 csets "Breaking [$self str ] @ $laste, new [$new str], cutting $breaks($laste)" |
| 318 | |
| 319 | set laste $e |
| @@ -335,11 +337,11 @@ | |
| 335 | set key [list $mytype $iid] |
| 336 | set myitemmap($key) $self |
| 337 | log write 8 csets {MAP+ item <$key> $self = [$self str]} |
| 338 | } |
| 339 | |
| 340 | return 1 |
| 341 | } |
| 342 | |
| 343 | method persist {} { |
| 344 | set tid $mycstype($mytype) |
| 345 | set pid [$myproject id] |
| 346 |
| --- tools/cvs2fossil/lib/c2f_prev.tcl | |
| +++ tools/cvs2fossil/lib/c2f_prev.tcl | |
| @@ -184,11 +184,11 @@ | |
| 184 | # the state, and limited to successors within the changeset. |
| 185 | |
| 186 | array set dependencies {} |
| 187 | $mytypeobj internalsuccessors dependencies $myitems |
| 188 | if {![array size dependencies]} { |
| 189 | return {} |
| 190 | } ; # Nothing to break. |
| 191 | |
| 192 | log write 5 csets ...[$self str]....................................................... |
| 193 | vc::tools::mem::mark |
| 194 | |
| @@ -296,10 +296,11 @@ | |
| 296 | |
| 297 | # Create changesets for the fragments, reusing the current one |
| 298 | # for the first fragment. We sort them in order to allow |
| 299 | # checking for gaps and nice messages. |
| 300 | |
| 301 | set newcsets {} |
| 302 | set fragments [lsort -index 0 -integer $fragments] |
| 303 | |
| 304 | #puts \t.[join [PRs $fragments] .\n\t.]. |
| 305 | |
| 306 | Border [lindex $fragments 0] firsts firste |
| @@ -310,10 +311,11 @@ | |
| 311 | foreach fragment [lrange $fragments 1 end] { |
| 312 | Border $fragment s e |
| 313 | integrity assert {$laste == ($s - 1)} {Bad fragment border <$laste | $s>, gap or overlap} |
| 314 | |
| 315 | set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myitems $s $e]] |
| 316 | lappend newcsets $new |
| 317 | incr counter |
| 318 | |
| 319 | log write 4 csets "Breaking [$self str ] @ $laste, new [$new str], cutting $breaks($laste)" |
| 320 | |
| 321 | set laste $e |
| @@ -335,11 +337,11 @@ | |
| 337 | set key [list $mytype $iid] |
| 338 | set myitemmap($key) $self |
| 339 | log write 8 csets {MAP+ item <$key> $self = [$self str]} |
| 340 | } |
| 341 | |
| 342 | return $newcsets |
| 343 | } |
| 344 | |
| 345 | method persist {} { |
| 346 | set tid $mycstype($mytype) |
| 347 | set pid [$myproject id] |
| 348 |
| --- tools/cvs2fossil/lib/c2f_prev.tcl | ||
| +++ tools/cvs2fossil/lib/c2f_prev.tcl | ||
| @@ -184,11 +184,11 @@ | ||
| 184 | 184 | # the state, and limited to successors within the changeset. |
| 185 | 185 | |
| 186 | 186 | array set dependencies {} |
| 187 | 187 | $mytypeobj internalsuccessors dependencies $myitems |
| 188 | 188 | if {![array size dependencies]} { |
| 189 | - return 0 | |
| 189 | + return {} | |
| 190 | 190 | } ; # Nothing to break. |
| 191 | 191 | |
| 192 | 192 | log write 5 csets ...[$self str]....................................................... |
| 193 | 193 | vc::tools::mem::mark |
| 194 | 194 | |
| @@ -296,10 +296,11 @@ | ||
| 296 | 296 | |
| 297 | 297 | # Create changesets for the fragments, reusing the current one |
| 298 | 298 | # for the first fragment. We sort them in order to allow |
| 299 | 299 | # checking for gaps and nice messages. |
| 300 | 300 | |
| 301 | + set newcsets {} | |
| 301 | 302 | set fragments [lsort -index 0 -integer $fragments] |
| 302 | 303 | |
| 303 | 304 | #puts \t.[join [PRs $fragments] .\n\t.]. |
| 304 | 305 | |
| 305 | 306 | Border [lindex $fragments 0] firsts firste |
| @@ -310,10 +311,11 @@ | ||
| 310 | 311 | foreach fragment [lrange $fragments 1 end] { |
| 311 | 312 | Border $fragment s e |
| 312 | 313 | integrity assert {$laste == ($s - 1)} {Bad fragment border <$laste | $s>, gap or overlap} |
| 313 | 314 | |
| 314 | 315 | set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myitems $s $e]] |
| 316 | + lappend newcsets $new | |
| 315 | 317 | incr counter |
| 316 | 318 | |
| 317 | 319 | log write 4 csets "Breaking [$self str ] @ $laste, new [$new str], cutting $breaks($laste)" |
| 318 | 320 | |
| 319 | 321 | set laste $e |
| @@ -335,11 +337,11 @@ | ||
| 335 | 337 | set key [list $mytype $iid] |
| 336 | 338 | set myitemmap($key) $self |
| 337 | 339 | log write 8 csets {MAP+ item <$key> $self = [$self str]} |
| 338 | 340 | } |
| 339 | 341 | |
| 340 | - return 1 | |
| 342 | + return $newcsets | |
| 341 | 343 | } |
| 342 | 344 | |
| 343 | 345 | method persist {} { |
| 344 | 346 | set tid $mycstype($mytype) |
| 345 | 347 | set pid [$myproject id] |
| 346 | 348 |
| --- tools/cvs2fossil/lib/c2f_prev.tcl | |
| +++ tools/cvs2fossil/lib/c2f_prev.tcl | |
| @@ -184,11 +184,11 @@ | |
| 184 | # the state, and limited to successors within the changeset. |
| 185 | |
| 186 | array set dependencies {} |
| 187 | $mytypeobj internalsuccessors dependencies $myitems |
| 188 | if {![array size dependencies]} { |
| 189 | return 0 |
| 190 | } ; # Nothing to break. |
| 191 | |
| 192 | log write 5 csets ...[$self str]....................................................... |
| 193 | vc::tools::mem::mark |
| 194 | |
| @@ -296,10 +296,11 @@ | |
| 296 | |
| 297 | # Create changesets for the fragments, reusing the current one |
| 298 | # for the first fragment. We sort them in order to allow |
| 299 | # checking for gaps and nice messages. |
| 300 | |
| 301 | set fragments [lsort -index 0 -integer $fragments] |
| 302 | |
| 303 | #puts \t.[join [PRs $fragments] .\n\t.]. |
| 304 | |
| 305 | Border [lindex $fragments 0] firsts firste |
| @@ -310,10 +311,11 @@ | |
| 310 | foreach fragment [lrange $fragments 1 end] { |
| 311 | Border $fragment s e |
| 312 | integrity assert {$laste == ($s - 1)} {Bad fragment border <$laste | $s>, gap or overlap} |
| 313 | |
| 314 | set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myitems $s $e]] |
| 315 | incr counter |
| 316 | |
| 317 | log write 4 csets "Breaking [$self str ] @ $laste, new [$new str], cutting $breaks($laste)" |
| 318 | |
| 319 | set laste $e |
| @@ -335,11 +337,11 @@ | |
| 335 | set key [list $mytype $iid] |
| 336 | set myitemmap($key) $self |
| 337 | log write 8 csets {MAP+ item <$key> $self = [$self str]} |
| 338 | } |
| 339 | |
| 340 | return 1 |
| 341 | } |
| 342 | |
| 343 | method persist {} { |
| 344 | set tid $mycstype($mytype) |
| 345 | set pid [$myproject id] |
| 346 |
| --- tools/cvs2fossil/lib/c2f_prev.tcl | |
| +++ tools/cvs2fossil/lib/c2f_prev.tcl | |
| @@ -184,11 +184,11 @@ | |
| 184 | # the state, and limited to successors within the changeset. |
| 185 | |
| 186 | array set dependencies {} |
| 187 | $mytypeobj internalsuccessors dependencies $myitems |
| 188 | if {![array size dependencies]} { |
| 189 | return {} |
| 190 | } ; # Nothing to break. |
| 191 | |
| 192 | log write 5 csets ...[$self str]....................................................... |
| 193 | vc::tools::mem::mark |
| 194 | |
| @@ -296,10 +296,11 @@ | |
| 296 | |
| 297 | # Create changesets for the fragments, reusing the current one |
| 298 | # for the first fragment. We sort them in order to allow |
| 299 | # checking for gaps and nice messages. |
| 300 | |
| 301 | set newcsets {} |
| 302 | set fragments [lsort -index 0 -integer $fragments] |
| 303 | |
| 304 | #puts \t.[join [PRs $fragments] .\n\t.]. |
| 305 | |
| 306 | Border [lindex $fragments 0] firsts firste |
| @@ -310,10 +311,11 @@ | |
| 311 | foreach fragment [lrange $fragments 1 end] { |
| 312 | Border $fragment s e |
| 313 | integrity assert {$laste == ($s - 1)} {Bad fragment border <$laste | $s>, gap or overlap} |
| 314 | |
| 315 | set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myitems $s $e]] |
| 316 | lappend newcsets $new |
| 317 | incr counter |
| 318 | |
| 319 | log write 4 csets "Breaking [$self str ] @ $laste, new [$new str], cutting $breaks($laste)" |
| 320 | |
| 321 | set laste $e |
| @@ -335,11 +337,11 @@ | |
| 337 | set key [list $mytype $iid] |
| 338 | set myitemmap($key) $self |
| 339 | log write 8 csets {MAP+ item <$key> $self = [$self str]} |
| 340 | } |
| 341 | |
| 342 | return $newcsets |
| 343 | } |
| 344 | |
| 345 | method persist {} { |
| 346 | set tid $mycstype($mytype) |
| 347 | set pid [$myproject id] |
| 348 |