@@ -51,10 +51,11 @@
51 51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set mypos {} ; # Commit location is not known yet.
52 52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
53 53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Keep track of the generated changesets and of the inverse
54 54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# mapping from items to them.
55 55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend mychangesets $self
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend mytchangesets($cstype) $self
56 57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set myidmap($myid) $self
57 58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach iid $items {
58 59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set key [list $cstype $iid]
59 60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set myitemmap($key) $self
60 61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend mytitems $key
@@ -86,16 +87,43 @@
86 87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
delegate method isbranch to mytypeobj
87 88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
delegate method istag to mytypeobj
88 89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
89 90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
method setpos {p} { set mypos $p ; return }
90 91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
method pos {} { return $mypos }
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ method determinesuccessors {} {
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Pass 6 operation. Compute project-level dependencies from
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # the file-level data and save it back to the state. This may
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # be called during the cycle breaker passes as well, to adjust
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # the successor information of changesets which are the
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # predecessors of dropped changesets. For them we have to
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # remove their existing information first before inserting the
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # new data.
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ state run {
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DELETE FROM cssuccessor WHERE cid = $myid;
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set loop 0
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach nid [$mytypeobj cs_successors $myitems] {
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ state run {
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ INSERT INTO cssuccessor (cid, nid)
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VALUES ($myid,$nid)
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$nid == $myid} { set loop 1 }
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Report after the complete structure has been saved.
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$loop} { $self reportloop }
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
91 116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
92 117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# result = list (changeset)
93 118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
method successors {} {
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return [struct::list map \
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- [$mytypeobj cs_successors $myitems] \
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- [mytypemethod of]]
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Use the data saved by pass 6.
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return [struct::list map [state run {
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT S.nid
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM cssuccessor S
123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE S.cid = $myid
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }] [mytypemethod of]]
97 125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
98 126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
99 127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# result = dict (item -> list (changeset))
100 128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
method successormap {} {
101 129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# NOTE / FUTURE: Definitive bottleneck (can be millions of pairs).
@@ -172,11 +200,11 @@
172 200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# one. The previous algorithm, adapted from cvs2svn, computed
173 201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# a lot of state which was thrown away and then computed again
174 202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# for each of the fragments. It should be easier to update and
175 203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# reuse that state.
176 204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # The code checks only sucessor dependencies, as this
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The code checks only successor dependencies, as this
178 206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# automatically covers the predecessor dependencies as well (A
179 207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# successor dependency a -> b is also a predecessor dependency
180 208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# b -> a).
181 209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
182 210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Array of dependencies (parent -> child). This is pulled from
@@ -356,52 +384,56 @@
356 384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
method drop {} {
357 385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
log write 8 csets {Dropping $self = [$self str]}
358 386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
359 387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
state transaction {
360 388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
state run {
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- DELETE FROM changeset WHERE cid = $myid;
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- DELETE FROM csitem WHERE cid = $myid;
389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DELETE FROM changeset WHERE cid = $myid;
390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DELETE FROM csitem WHERE cid = $myid;
391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ DELETE FROM cssuccessor WHERE cid = $myid;
363 392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
364 393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
365 394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach iid $myitems {
366 395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set key [list $mytype $iid]
367 396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unset myitemmap($key)
368 397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
log write 8 csets {MAP- item <$key> $self = [$self str]}
369 398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
370 399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set pos [lsearch -exact $mychangesets $self]
371 400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set mychangesets [lreplace $mychangesets $pos $pos]
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- method loopcheck {} {
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- log write 7 csets {Checking [$self str] for loops /[llength $myitems]}
377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {![struct::set contains [$self successors] $self]} {
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[log verbosity?] < 8} { return 1 }
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Print the detailed successor structure of the self-
384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # referential changeset, if the verbosity of the log is dialed
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # high enough.
386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- log write 8 csets [set hdr {Self-referential changeset [$self str] __________________}]
388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- array set nmap [$self nextmap]
389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach item [lsort -dict [array names nmap]] {
390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach succitem $nmap($item) {
391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set succcs $myitemmap($succitem)
392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set hint [expr {($succcs eq $self)
393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ? "LOOP"
394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- : " "}]
395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set i "<$item [$type itemstr $item]>"
396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set s "<$succitem [$type itemstr $succitem]>"
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set scs [$succcs str]
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- log write 8 csets {$hint * $i --> $s --> cs $scs}
399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- log write 8 csets [regsub -all {[^ ]} $hdr {_}]
402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1
401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set pos [lsearch -exact $mytchangesets($mytype) $self]
402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set mytchangesets($mytype) [lreplace $mytchangesets($mytype) $pos $pos]
403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Return the list of predecessors so that they can be adjusted.
405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return [struct::list map [state run {
406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT cid
407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM cssuccessor
408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE nid = $myid
409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }] [mytypemethod of]]
410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ method reportloop {{kill 1}} {
413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # We print the items which are producing the loop, and how.
414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set hdr "Self-referential changeset [$self str] __________________"
416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set ftr [regsub -all {[^ ]} $hdr {_}]
417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ log write 0 csets $hdr
419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach {item nextitem} [$mytypeobj loops $myitems] {
420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Create tagged items from the id and our type.
421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set item [list $mytype $item]
422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set nextitem [list $mytype $nextitem]
423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Printable labels.
424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set i "<[$type itemstr $item]>"
425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set n "<[$type itemstr $nextitem]>"
426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set ncs $myitemmap($nextitem)
427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Print
428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ log write 0 csets {* $i --> $n --> cs [$ncs str]}
429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ log write 0 csets $ftr
431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {!$kill} return
433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ trouble internal "[$self str] depends on itself"
434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return
403 435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
404 436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
405 437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod split {cset args} {
406 438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# As part of the creation of the new changesets specified in
407 439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# ARGS as sets of items, all subsets of CSET's item set, CSET
@@ -417,28 +449,32 @@
417 449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
418 450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All checks pass, actually perform the split.
419 451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
420 452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct::list assign [$cset data] project cstype cssrc
421 453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- $cset drop
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set predecessors [$cset drop]
423 455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
$cset destroy
424 456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
425 457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set newcsets {}
426 458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach fragmentitems $args {
427 459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
log write 8 csets {MAKE: [lsort $fragmentitems]}
428 460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
429 461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set fragment [$type %AUTO% $project $cstype $cssrc \
430 462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
[Untag $fragmentitems $cstype]]
431 463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend newcsets $fragment
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
432 465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
$fragment persist
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $fragment determinesuccessors
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
433 468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[$fragment loopcheck]} {
435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- trouble fatal "[$fragment str] depends on itself"
436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The predecessors have to recompute their successors, i.e.
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # remove the dropped changeset and put one of the fragments
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # into its place.
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach p $predecessors {
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $p determinesuccessors
437 474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
438 475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- trouble abort?
440 476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return $newcsets
441 477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
442 478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
443 479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod itemstr {item} {
444 480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
struct::list assign $item itype iid
@@ -560,10 +596,11 @@
560 596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
561 597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
562 598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
563 599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod loadcounter {} {
564 600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Initialize the counter from the state
601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ log write 2 initcsets {Loading changeset counter}
565 602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set mycounter [state one { SELECT MAX(cid) FROM changeset }]
566 603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
567 604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
568 605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
569 606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod num {} { return $mycounter }
@@ -778,22 +815,30 @@
778 815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
779 816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
780 817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
781 818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# # ## ### ##### ######## #############
782 819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typevariable mychangesets {} ; # List of all known changesets.
784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- typevariable myitemmap -array {} ; # Map from items (tagged) to
785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # the list of changesets
786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # containing it. Each item can
787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # be used by only one
788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # changeset.
820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typevariable mychangesets {} ; # List of all known
821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # changesets.
822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typevariable mytchangesets -array {} ; # List of all known
823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # changesets of a type.
824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typevariable myitemmap -array {} ; # Map from items (tagged)
825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # to the list of changesets
826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # containing it. Each item
827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # can be used by only one
828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # changeset.
789 829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typevariable myidmap -array {} ; # Map from changeset id to
790 830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# changeset.
791 831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
792 832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod all {} { return $mychangesets }
793 833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod of {cid} { return $myidmap($cid) }
794 834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod ofitem {iid} { return $myitemmap($iid) }
835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typemethod rev {} { return $mytchangesets(rev) }
837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typemethod sym {} { return [concat \
838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ${mytchangesets(sym::branch)} \
839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ${mytchangesets(sym::tag)}] }
795 840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
796 841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# # ## ### ##### ######## #############
797 842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
## Configuration
798 843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
799 844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pragma -hastypeinfo no ; # no type introspection
@@ -924,10 +969,46 @@
924 969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
925 970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
926 971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
927 972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
928 973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
975 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # result = 4-list (itemtype itemid nextitemtype nextitemid ...)
976 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typemethod loops {revisions} {
977 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Note: Tags and branches cannot cause the loop. Their id's,
978 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # bein of a fundamentally different type than the revisions
979 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # coming in cannot be in the set.
980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
981 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set theset ('[join $revisions {','}]')
982 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return [state run [subst -nocommands -nobackslashes {
983 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- (1) Primary child
984 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT R.rid, R.child
985 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM revision R
986 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE R.rid IN $theset -- Restrict to revisions of interest
987 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND R.child IS NOT NULL -- Has primary child
988 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND R.child IN $theset -- Loop
989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ --
990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNION
991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- (2) Secondary (branch) children
992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT R.rid, B.brid
993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM revision R, revisionbranchchildren B
994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE R.rid IN $theset -- Restrict to revisions of interest
995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND R.rid = B.rid -- Select subset of branch children
996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND B.rid IN $theset -- Loop
997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ --
998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNION
999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- (4) Child of trunk root successor of last NTDB on trunk.
1000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT R.rid, RA.child
1001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM revision R, revision RA
1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE R.rid IN $theset -- Restrict to revisions of interest
1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND R.isdefault -- Restrict to NTDB
1004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND R.dbchild IS NOT NULL -- and last NTDB belonging to trunk
1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND RA.rid = R.dbchild -- Go directly to trunk root
1006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND RA.child IS NOT NULL -- Has primary child.
1007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND RA.child IN $theset -- Loop
1008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }]]
1009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
929 1010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
930 1011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# var(dv) = dict (item -> list (item)), item = list (type id)
931 1012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod successors {dv revisions} {
932 1013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
upvar 1 $dv dependencies
933 1014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set theset ('[join $revisions {','}]')
@@ -986,19 +1067,19 @@
986 1067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend dependencies([list rev $rid]) [list rev $child]
987 1068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
988 1069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach {rid child} [state run "
989 1070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SELECT R.rid, T.tid
990 1071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FROM revision R, tag T
991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- WHERE R.rid in $theset
1072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE R.rid IN $theset
992 1073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AND T.rev = R.rid
993 1074 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"] {
994 1075 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend dependencies([list rev $rid]) [list sym::tag $child]
995 1076 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
996 1077 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach {rid child} [state run "
997 1078 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SELECT R.rid, B.bid
998 1079 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FROM revision R, branch B
999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- WHERE R.rid in $theset
1080 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE R.rid IN $theset
1000 1081 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AND B.root = R.rid
1001 1082 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"] {
1002 1083 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend dependencies([list rev $rid]) [list sym::branch $child]
1003 1084 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1004 1085 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
@@ -1159,10 +1240,16 @@
1159 1240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# var(dv) = dict (item -> list (item)), item = list (type id)
1160 1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod successors {dv tags} {
1161 1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Tags have no successors.
1162 1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
1163 1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # result = 4-list (itemtype itemid nextitemtype nextitemid ...)
1247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typemethod loops {tags} {
1248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Tags have no successors, therefore cannot cause loops
1249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return {}
1250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1164 1251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1165 1252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# var(dv) = dict (item -> list (item)), item = list (type id)
1166 1253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod predecessors {dv tags} {
1167 1254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
upvar 1 $dv dependencies
1168 1255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# The predecessors of a tag are all the revisions the tags are
@@ -1244,10 +1331,27 @@
1244 1331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FROM branch B, revision R
1245 1332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WHERE B.bid IN $theset
1246 1333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AND R.rid = B.root
1247 1334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"]
1248 1335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # result = 4-list (itemtype itemid nextitemtype nextitemid ...)
1338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typemethod loops {branches} {
1339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Note: Revisions and tags cannot cause the loop. Being of a
1340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # fundamentally different type they cannot be in the incoming
1341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # set of ids.
1342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set theset ('[join $branches {','}]')
1344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return [state run [subst -nocommands -nobackslashes {
1345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT B.bid, BX.bid
1346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM branch B, preferedparent P, branch BX
1347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE B.bid IN $theset
1348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND B.sid = P.pid
1349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND BX.sid = P.sid
1350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND BX.bid IN $theset
1351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }]]
1352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1249 1353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1250 1354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# var(dv) = dict (item -> list (item)), item = list (type id)
1251 1355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod successors {dv branches} {
1252 1356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
upvar 1 $dv dependencies
1253 1357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# The first revision committed on a branch, and all branches
@@ -1259,29 +1363,29 @@
1259 1363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SELECT B.bid, R.rid
1260 1364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FROM branch B, revision R
1261 1365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WHERE B.bid IN $theset
1262 1366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AND B.first = R.rid
1263 1367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"] {
1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lappend dependencies([list sym::tag $bid]) [list rev $child]
1368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend dependencies([list sym::branch $bid]) [list rev $child]
1265 1369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1266 1370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach {bid child} [state run "
1267 1371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SELECT B.bid, BX.bid
1268 1372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FROM branch B, preferedparent P, branch BX
1269 1373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WHERE B.bid IN $theset
1270 1374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AND B.sid = P.pid
1271 1375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AND BX.sid = P.sid
1272 1376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"] {
1273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lappend dependencies([list sym::tag $bid]) [list sym::branch $child]
1377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend dependencies([list sym::branch $bid]) [list sym::branch $child]
1274 1378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1275 1379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach {bid child} [state run "
1276 1380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SELECT B.bid, T.tid
1277 1381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FROM branch B, preferedparent P, tag T
1278 1382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
WHERE B.bid IN $theset
1279 1383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AND B.sid = P.pid
1280 1384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
AND T.sid = P.sid
1281 1385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"] {
1282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lappend dependencies([list sym::tag $bid]) [list sym::tag $child]
1386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend dependencies([list sym::branch $bid]) [list sym::tag $child]
1283 1387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1284 1388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
1285 1389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1286 1390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1287 1391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# var(dv) = dict (item -> list (item)), item = list (type id)
1288 1392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!