Diff
Not logged in

Differences From:

File tools/cvs2fossil/lib/c2f_pbreakrcycle.tcl part of check-in [94c39d6375] - Completed pass 6, wrote the code performing the breaking of cycles. Done by analysing each triple of changesets in the cycle at the file dependency level to see which revisions can be sorted apart. Added some additional utility routines. Extended the changeset class with the accessors required by the cycle breaker. by aku on 2007-11-14 05:11:56. [view]

To:

File tools/cvs2fossil/lib/c2f_pbreakrcycle.tcl part of check-in [de64c94f54] - Bugfix. When setting up or extended the changeset graph a changeset's successor may lay outside of the set of changesets under consideration, i.e. without a node in the graph. Ignore these. This did not (or only rarely) happen before the bugfix to the successor computation of changesets in project::rev (list instead of single). by aku on 2007-11-16 03:59:21. [view]

@@ -100,8 +100,11 @@
 	state transaction {
 	    foreach cset [project::rev all] {
 		if {[$cset bysymbol]} continue
 		foreach succ [$cset successors] {
+		    # Changesets may have dependencies outside of the
+		    # chosen set. These are ignored
+		    if {![dg node exists $succ]} continue
 		    dg arc insert $cset $succ
 		}
 	    }
 	}
@@ -285,15 +288,18 @@
 
         $dg node delete $bestnode
 
 	foreach cset $newcsets {
-	    dg node insert $cset
-	    dg node set    $cset timerange [$cset timerange]
+	    $dg node insert $cset
+	    $dg node set    $cset timerange [$cset timerange]
 	}
 
 	foreach cset $newcsets {
 	    foreach succ [$cset successors] {
-		dg arc insert $cset $succ
+		# Changesets may have dependencies outside of the
+		# chosen set. These are ignored
+		if {![dg node exists $succ]} continue
+		$dg arc insert $cset $succ
 	    }
 	}
 	return
     }