@@ -0,0 +1,72 @@
1 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #!/bin/sh
2 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # This is a very, very prototype proof-of-concept tool to generate 'push
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # requests'. It diffs two repositories (currently only local ones) and
4 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # generates a bundle which contains all the artifacts needed to
5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # reproduce a particular artifact.
6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The intended workflow is: user says 'I want to make a bundle to update
8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # OLD.fossil to checkin X of NEW.fossil'; the tool walks the checkin tree
9 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # of NEW.fossil to figure out what checkins are necessary to reproduce X;
10 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # then it removes all the checkins which are present in OLD.fossil; t --incremental the bundle.
11 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
12 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set -e
13 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
14 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ oldrepo=$1
15 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ newrepo=$2
16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ artifact=$3
17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ridlist=ridlist
19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fossil sqlite3 >$ridlist <<-EOF
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ATTACH DATABASE "$newrepo" AS new;
23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ATTACH DATABASE "$oldrepo" AS old;
24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Map of parent -> child checkin artifacts. This contains our checkin graph.
26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CREATE TEMPORARY VIEW newcheckinmap AS
28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT
29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ child.uuid AS child,
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ child.rid AS rid,
31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ parent.uuid AS parent,
32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ parent.rid AS parentrid,
33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ plink.mtime AS mtime
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ new.plink,
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ new.blob AS parent,
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ new.blob AS child
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (child.rid = plink.cid)
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND (parent.rid = plink.pid);
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CREATE TEMPORARY VIEW oldcheckinmap AS
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ child.uuid AS child,
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ child.rid AS rid,
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ parent.uuid AS parent,
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ parent.rid AS parentrid,
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ plink.mtime AS mtime
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ old.plink,
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ old.blob AS parent,
52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ old.blob AS child
53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE
54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ (child.rid = plink.cid)
55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND (parent.rid = plink.pid);
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Create sets of all checkins (unordered). We construct these from the graph
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- so we get only checkin artifacts.
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ CREATE TEMPORARY parent AS id, parentrid AS rid #!/bin/sh
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # This is ototyp#!/bin/sh
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # This is a prototype #!/bin/sh
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # This ioall the ancest INNER JOINS old;
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Map of parent -> chilORDER BYf parent -> child cROM
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ new.plink,
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ The set of checkins and files for newrepo's artifact which *aren't* in oldrepocheckinsnotinnew AS
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ desiredcheckins.id
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ desiredcheckins LEFT JOIN olol;ototype proof-of-concept#!/bin/sh
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # This is a very