Check-in [87cf609021]
Not logged in
Overview

SHA1 Hash:87cf60902113c7564a2ae43de7ede9e83d23af1c
Date: 2007-11-24 05:31:30
User: aku
Comment:Created convenience methods to create the human readable repesentation of a changeset and lists of such, and made liberal use of them.
Timelines: ancestors | descendants | both | trunk
Other Links: files | ZIP archive | manifest

Tags And Properties
Changes
[hide diffs]

Modified tools/cvs2fossil/lib/c2f_cyclebreaker.tcl from [a02d54b2ad] to [ddec7fb99c].

@@ -153,11 +153,11 @@
 	set dg [struct::graph dg]
 
 	foreach cset $changesets {
 	    $dg node insert $cset
 	    $dg node set    $cset timerange [$cset timerange]
-	    $dg node set    $cset label     [ID $cset]
+	    $dg node set    $cset label     [$cset str]
 	    $dg node set    $cset __id__    [$cset id]
 	}
 
 	# 2. Find for all relevant changeset their revisions and their
 	#    dependencies. Map the latter back to changesets and
@@ -182,17 +182,17 @@
 		# breaking the relevant changesets apart. So having
 		# one indicates big trouble in pass 5. We report them
 		# and dump internal structures to make it easier to
 		# trace the links causing the problem.
 		if {$succ eq $cset} {
-		    trouble fatal "Self-referencing changeset <[$cset id]>"
-		    log write 2 cyclebreaker "LOOP changeset <[$cset id]> __________________"
+		    trouble fatal "Self-referencing changeset [$cset str]"
+		    log write 2 cyclebreaker "LOOP changeset [$cset str] __________________"
 		    array set nmap [$cset nextmap]
 		    foreach r [lsort -dict [array names nmap]] {
 			foreach succrev $nmap($r) {
 			    log write 2 cyclebreaker \
-				"LOOP * rev <$r> --> rev <$succrev> --> cs [join [struct::list map [project::rev ofrev $succrev] [myproc ID]] { }]"
+				"LOOP * rev <$r> --> rev <$succrev> --> cs [project::rev strlist [project::rev ofrev $succrev]]"
 			}
 		    }
 		}
 	    }
 	}
@@ -262,11 +262,11 @@
 	log write 10 cyclebreaker \
 	    "Pending: [struct::list map $mybottom [myproc FormatPendingItem]]"
 	return
     }
 
-    proc FormatPendingItem {item} { lreplace $item 0 0 <[[lindex $item 0] id]> }
+    proc FormatPendingItem {item} { lreplace $item 0 0 [[lindex $item 0] str] }
 
     proc FindCycle {dg} {
 	# This procedure is run if and only the graph is not empty and
 	# all nodes have predecessors. This means that each node is
 	# either part of a cycle or (indirectly) depending on a node
@@ -298,20 +298,18 @@
 	}
 
 	return [struct::list reverse [lrange $path $seen($start) end]]
     }
 
-    proc ID {cset} { return "<[$cset id]>" }
-
     proc BreakCycle {dg cycle} {
 	# The cycle we have gotten is broken by breaking apart one or
 	# more of the changesets in the cycle. This causes us to
 	# create one or more changesets which are to be committed,
 	# added to the graph, etc. pp.
 
 	# NOTE/TODO. Move this map operation to project::rev, as typemethod.
-	set cprint [join [struct::list map $cycle [myproc ID]] { }]
+	set cprint [project::rev strlist $cycle]
 
 	lappend cycle [lindex $cycle 0] [lindex $cycle 1]
 	set bestlink {}
 	set bestnode {}
 
@@ -336,11 +334,11 @@
 		} else {
 		    $link destroy
 		}
 	    }
 
-	log write 5 cyclebreaker "Breaking cycle ($cprint) by splitting changeset <[$bestnode id]>"
+	log write 5 cyclebreaker "Breaking cycle ($cprint) by splitting changeset [$bestnode str]"
 	set ID [$bestnode id]
 	Mark $dg -${ID}-before
 
 	set newcsets [$bestlink break]
 	$bestlink destroy
@@ -388,11 +386,11 @@
         $dg node delete $n
 
 	foreach cset $replacements {
 	    $dg node insert $cset
 	    $dg node set    $cset timerange [$cset timerange]
-	    $dg node set    $cset label     [ID $cset]
+	    $dg node set    $cset label     [$cset str]
 	    $dg node set    $cset __id__    [$cset id]
 	}
 
 	foreach cset $replacements {
 	    foreach succ [$cset successors] {
@@ -399,11 +397,11 @@
 		# The new changesets may have dependencies outside of
 		# the chosen set. These are ignored
 		if {![$dg node exists $succ]} continue
 		$dg arc insert $cset $succ
 		if {$succ eq $cset} {
-		    trouble internal "Self-referencing changeset <[$cset id]>"
+		    trouble internal "Self-referencing changeset [$cset str]"
 		}
 	    }
 	}
 	foreach cset $pre {
 	    foreach succ [$cset successors] {

Modified tools/cvs2fossil/lib/c2f_pbreakacycle.tcl from [42309dffc2] to [c41eb33de6].

@@ -133,11 +133,11 @@
 	return
     }
 
     proc CheckAndBreakBackwardBranch {graph cset} {
 	while {[IsABackwardBranch $graph $cset]} {
-	    log write 5 breakacycle "Breaking backward branch changeset <[$cset id]>"
+	    log write 5 breakacycle "Breaking backward branch changeset [$cset str]"
 
 	    # Knowing that the branch is backward we now look at the
 	    # individual revisions in the changeset and determine
 	    # which of them are responsible for the overlap. This
 	    # allows us to split them into two sets, one of
@@ -302,11 +302,20 @@
     }
 
 
     # # ## ### ##### ######## #############
 
-    proc SaveOrder {graph cset pos} {
+    proc SaveOrder {graph at cset} {
+	set cid [$cset id]
+
+	log write 4 breakacycle "Comitting @ $at: [$cset str]"
+	state run {
+	    INSERT INTO csorder (cid,  pos)
+	    VALUES              ($cid, $at)
+	}
+	# MAYBE TODO: Write the project level changeset dependencies as well.
+	return
     }
 
     # # ## ### ##### ######## #############
 
     proc BreakCycle {graph} {

Modified tools/cvs2fossil/lib/c2f_pbreakrcycle.tcl from [956cfdff4d] to [e139c81d89].

@@ -104,16 +104,16 @@
     proc IsByRevision {cset} { $cset byrevision }
 
     proc SaveOrder {graph at cset} {
 	set cid [$cset id]
 
-	log write 4 breakrcycle "Comitting @ $at: <$cid>"
+	log write 4 breakrcycle "Comitting @ $at: [$cset str]"
 	state run {
 	    INSERT INTO csorder (cid,  pos)
 	    VALUES              ($cid, $at)
 	}
-	# TODO: Write the project level changeset dependencies as well.
+	# MAYBE TODO: Write the project level changeset dependencies as well.
 	return
     }
 
     # # ## ### ##### ######## #############
     ## Configuration

Modified tools/cvs2fossil/lib/c2f_prev.tcl from [d8c9727907] to [82795e9f92].

@@ -50,10 +50,12 @@
 	set     myidmap($myid) $self
 	foreach r $revisions { lappend myrevmap($r) $self }
 	return
     }
 
+    method str {} { return "<${myid}>" }
+
     method id        {} { return $myid }
     method revisions {} { return $myrevisions }
     method data      {} { return [list $myproject $mytype $mysrcid] }
 
     method bysymbol   {} { return [expr {$mytype eq "sym"}] }
@@ -155,11 +157,11 @@
 
 	array set dependencies {}
 	PullInternalSuccessorRevisions dependencies $myrevisions
 	if {![array size dependencies]} {return 0} ; # Nothing to break.
 
-	log write 6 csets ...<$myid>.......................................................
+	log write 6 csets ...[$self str].......................................................
 
 	# We have internal dependencies to break. We now iterate over
 	# all positions in the list (which is chronological, at least
 	# as far as the timestamps are correct and unique) and
 	# determine the best position for the break, by trying to
@@ -261,11 +263,11 @@
 		trouble internal "Bad fragment border <$laste | $s>, gap or overlap"
 	    }
 
 	    set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myrevisions $s $e]]
 
-            log write 4 csets "Breaking <$myid> @ $laste, new <[$new id]>, cutting $breaks($laste)"
+            log write 4 csets "Breaking [$self str ] @ $laste, new [$new str], cutting $breaks($laste)"
 
 	    set laste $e
 	}
 
 	if {$laste != ([llength $myrevisions]-1)} {
@@ -356,10 +358,16 @@
 	}
 
 	foreach c $newcsets { $c persist }
 	return $newcsets
     }
+
+    typemethod strlist {changesets} {
+	return [join [struct::list map $changesets [myproc ID]]]
+    }
+
+    proc ID {cset} { $cset str }
 
     # # ## ### ##### ######## #############
     ## State
 
     variable myid        {} ; # Id of the cset for the persistent

Modified tools/cvs2fossil/lib/c2f_prevlink.tcl from [b25fedd0c7] to [4abdaecd6f].

@@ -123,11 +123,11 @@
 	return 0 ; # Self is worse or equal, i.e. not better.
     }
 
     method break {} {
 	if {![$self breakable]} {
-	    trouble internal "Changeset <[$mycset id]> is not breakable."
+	    trouble internal "Changeset [$mycset str] is not breakable."
 	}
 
 	# One thing to choose when splitting CSET is where the
 	# revision in categories 1 and 2 (none and passthrough
 	# respectively) are moved to. This is done using the counters.