@@ -30,10 +30,15 @@
30 30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
##
31 31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
32 32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
snit::type ::vc::fossil::import::cvs::cyclebreaker {
33 33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# # ## ### ##### ######## #############
34 34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
## Public API
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typemethod savecmd {cmd} {
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ::variable mysavecmd $cmd
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
35 40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
36 41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod dotsto {path} {
37 42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
::variable mydotdestination $path
38 43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
39 44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -46,12 +51,11 @@
46 51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Mark $dg
47 52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
$dg destroy
48 53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
49 54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
50 55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typemethod run {label changesets {savecmd {}}} {
52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ::variable mysave $savecmd
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typemethod run {label changesets} {
53 57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
::variable myat 0
54 58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
::variable mydotprefix $label
55 59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
::variable mydotid 0
56 60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
57 61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# We create a graph of the revision changesets, using the file
@@ -83,10 +87,12 @@
83 87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
84 88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
85 89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dg destroy
86 90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
87 91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
log write 3 cyclebreaker Done.
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ClearHooks
88 94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
89 95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
90 96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
91 97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# # ## ### ##### ######## #############
92 98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
## Internal methods
@@ -171,21 +177,13 @@
171 177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1
172 178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
173 179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
174 180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc SaveAndRemove {dg n} {
175 181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
::variable myat
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ::variable mysave
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Give the user of the cycle breaker the opportunity to work
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # with the changeset before it is removed from the graph.
180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[llength $mysave]} {
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- uplevel #0 [linsert $mysave end $myat $n]
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- incr myat
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ProcessedHook $n $myat
186 183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
$dg node delete $n
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ incr myat
187 185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
188 186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
189 187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
190 188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc FindCycle {dg} {
191 189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# This procedure is run if and only the graph is not empty and
@@ -327,17 +325,44 @@
327 325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
328 326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
log write 5 cyclebreaker ".dot export $fname"
329 327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
330 328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
331 329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typevariable myat 0 ; # Counter for commit ids for the changesets.
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typevariable mybottom {} ; # List of candidate nodes for committing.
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typevariable mysave {} ; # The command to call for each processed node
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # # ## ### ##### ######## #############
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## Callback invokation ...
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc ProcessedHook {cset pos} {
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Give the user of the cycle breaker the opportunity to work
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # with the changeset before it is removed from the graph.
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ::variable mysavecmd
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {![llength $mysavecmd]} return
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ uplevel #0 [linsert $mysavecmd end $pos $cset]
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc ClearHooks {} {
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ::variable mysavecmd {}
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # # ## ### ##### ######## #############
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typevariable myat 0 ; # Counter for commit ids for the
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # changesets.
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typevariable mybottom {} ; # List of the candidate nodes for
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # committing.
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typevariable mysavecmd {} ; # Callback, for each processed node.
335 357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typevariable mydotdestination {} ; # Destination directory for .dot files.
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typevariable mydotprefix {} ; # Prefix for dot files when exporting the graphs.
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typevariable mydotid 0 ; # Counter for dot file name generation.
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typevariable mydotdestination {} ; # Destination directory for the
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # generated .dot files.
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typevariable mydotprefix {} ; # Prefix for dot files when
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # exporting the graphs.
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typevariable mydotid 0 ; # Counter for dot file name
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # generation.
339 364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
340 365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# # ## ### ##### ######## #############
341 366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
## Configuration
342 367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
343 368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pragma -hasinstances no ; # singleton
344 369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!