Diff
Not logged in

Differences From:

File tools/cvs2fossil/lib/c2f_prev.tcl part of check-in [c2ad73ed92] - Added high-level logging for memory tracing to the code breaking the preliminary changesets. First runs indicate that the DEPC array becomes so very large, caused by a high amount of indirect dependencies (several hundred). by aku on 2008-02-21 05:13:14. [view]

To:

File tools/cvs2fossil/lib/c2f_prev.tcl part of check-in [efec424a19] - Merged bugfix b3d61d7829 into the main branch for optimization of memory usage. by aku on 2008-02-23 06:40:48. [view]

@@ -185,9 +185,9 @@
 
 	array set dependencies {}
 	$mytypeobj internalsuccessors dependencies $myitems
 	if {![array size dependencies]} {
-	    return 0
+	    return {}
 	} ; # Nothing to break.
 
 	log write 5 csets ...[$self str].......................................................
 	vc::tools::mem::mark
@@ -297,8 +297,9 @@
 	# Create changesets for the fragments, reusing the current one
 	# for the first fragment. We sort them in order to allow
 	# checking for gaps and nice messages.
 
+	set newcsets  {}
 	set fragments [lsort -index 0 -integer $fragments]
 
 	#puts \t.[join [PRs $fragments] .\n\t.].
 
@@ -311,8 +312,9 @@
 	    Border $fragment s e
 	    integrity assert {$laste == ($s - 1)} {Bad fragment border <$laste | $s>, gap or overlap}
 
 	    set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myitems $s $e]]
+	    lappend newcsets $new
 	    incr counter
 
             log write 4 csets "Breaking [$self str ] @ $laste, new [$new str], cutting $breaks($laste)"
 
@@ -336,9 +338,9 @@
 	    set myitemmap($key) $self
 	    log write 8 csets {MAP+ item <$key> $self = [$self str]}
 	}
 
-	return 1
+	return $newcsets
     }
 
     method persist {} {
 	set tid $mycstype($mytype)