@@ -66,11 +66,11 @@
66 66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
67 67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
68 68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
69 69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# # ## ### ##### ######## #############
70 70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typemethod run {label changesets} {
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typemethod run {label changesetcmd} {
72 72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
::variable myat 0
73 73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
::variable mydotprefix $label
74 74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
::variable mydotid 0
75 75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
76 76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# We create a graph of the revision changesets, using the file
@@ -79,10 +79,11 @@
79 79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# in that graph and break them.
80 80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
81 81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# 1. Create nodes for all relevant changesets and a mapping
82 82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# from the revisions to their changesets/nodes.
83 83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set changesets [uplevel #0 $changesetcmd]
84 85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set dg [Setup $changesets]
85 86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
86 87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# 3. Lastly we iterate the graph topologically. We mark off
87 88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# the nodes which have no predecessors, in order from
88 89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# oldest to youngest, saving and removing dependencies. If
@@ -103,14 +104,24 @@
103 104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
104 105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
BreakCycleHook $dg
105 106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
InitializeCandidates $dg
106 107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
107 108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dg destroy
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $dg destroy
109 110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
110 111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
log write 3 cyclebreaker Done.
111 112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ClearHooks
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Reread the graph and dump its final form, if graph export
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # was activated.
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ::variable mydotdestination
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$mydotdestination eq ""} return
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set dg [Setup [uplevel #0 $changesetcmd] 0]
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Mark $dg -done
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $dg destroy
112 123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
113 124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
114 125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
115 126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# # ## ### ##### ######## #############
116 127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -153,12 +164,13 @@
153 164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
154 165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
155 166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Run the user hook to manipulate the graph before
156 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# consummation.
157 168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$log} { Mark $dg -start }
158 170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
PreHook $dg
159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return $dg
171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $dg
160 172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161 173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
162 174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Instead of searching the whole graph for the degree-0 nodes in
163 175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# each iteration we compute the list once to start, and then only
164 176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# update it incrementally based on the outgoing neighbours of the
@@ -357,10 +369,11 @@
357 369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
358 370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
::variable myprecmd
359 371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {![llength $myprecmd]} return
360 372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
361 373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
uplevel #0 [linsert $myprecmd end $graph]
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Mark $graph -pre-done
362 375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
363 376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
364 377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
365 378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc ProcessedHook {cset pos} {
366 379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Give the user of the cycle breaker the opportunity to work
367 380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!