@@ -306,47 +306,48 @@
306 306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
307 307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set earcs {} ; # Arcs for expansion graph
308 308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set zarcs {} ; # Arcs for zip graph
309 309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set revmap {} ; # path -> rid map to later merge uuid information
310 310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach {rid revnr parent child coff clen} [state run {
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- SELECT R.rid, R.rev, R.parent, R.child, R.coff, R.clen
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- FROM revision R
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- WHERE R.fid = $myid
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach {rid revnr parent child coff clen cid cparent} [state run {
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT B.rid, R.rev, R.parent, R.child, B.coff, B.clen, B.bid, B.pid
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM blob B
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ LEFT OUTER JOIN revision R
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ON B.rid = R.rid
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE B.fid = $myid
315 317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}] {
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lappend revmap r$revnr $rid
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- $zp node insert $rid
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- $zp node set $rid revnr $revnr
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- $zp node set $rid label <$revnr>
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$child ne ""} {
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lappend zarcs $child $rid
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- $ex node insert $rid
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- $ex node set $rid text [list $coff $clen]
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- $ex node set $rid revnr $revnr
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- $ex node set $rid label <$revnr>
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[rev istrunkrevnr $revnr]} {
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # On the trunk, this revision is a delta based on the
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # child. That makes the child our predecessor.
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$child eq ""} continue
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lappend earcs $child $rid
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Main data are blobs, most will have revisions, but not
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # all. The expansion graph is blob based, whereas the
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # recompression graph is revision based.
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$revnr ne ""} {
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend revmap r$revnr $rid
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $zp node insert $rid
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $zp node set $rid revnr $revnr
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $zp node set $rid label <$revnr>
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$child ne ""} {
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend zarcs $child $rid
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
337 332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # On a branch this revision is a delta based on the
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # parent. That makes the parent our predecessor.
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$parent eq ""} {
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Detached branch root, this is a patch based on
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # the empty string.
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- $ex node set $rid __base__ r__empty__
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- continue
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lappend earcs $parent $rid
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # We fake a revnr for the blobs which have no
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # revision, for use in the expansion graph.
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set revnr ghost$cid
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Now the expansion graph.
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $ex node insert $cid
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $ex node set $cid text [list $coff $clen]
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $ex node set $cid revnr $revnr
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $ex node set $cid label <$revnr>
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$cparent ne ""} {
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The expansion arcs go from baseline to delta
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # descendant, based on the blob information.
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend earcs $cparent $cid
348 349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
349 350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
350 351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
351 352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Phase II: Insert the accumulated dependencies
352 353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
353 354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!