Differences From:
File
tools/cvs2fossil/lib/c2f_cyclebreaker.tcl
part of check-in
[eabaea870a]
- Added a number of assertions and must-not-happens with associated log output. Plus some small tweaks, and notes.
by
aku on
2007-11-24 04:15:46.
[view]
To:
File
tools/cvs2fossil/lib/c2f_cyclebreaker.tcl
part of check-in
[87cf609021]
- Created convenience methods to create the human readable repesentation of a changeset and lists of such, and made liberal use of them.
by
aku on
2007-11-24 05:31:30.
[view]
@@ -154,9 +154,9 @@
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
@@ -183,15 +183,15 @@
# 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]]"
}
}
}
}
@@ -263,9 +263,9 @@
"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
@@ -299,18 +299,16 @@
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 {}
@@ -337,9 +335,9 @@
$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]
@@ -389,9 +387,9 @@
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 {
@@ -400,9 +398,9 @@
# 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 {