@@ -64,37 +64,87 @@
64 64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Tag <- Symbol <- Event
65 65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Branch <- Symbol <- Event
66 66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Revision <- Event
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!
state writing revision {
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Revisions. Identified by a global numeric id each
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- belongs to a single file, identified by its id. It
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- further has a dotted revision number (DTN).
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ --
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Constraint: The dotted revision number is unique within
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- the file. See end of definition.
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
69 76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
rid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- fid INTEGER NOT NULL REFERENCES file, -- File the item belongs to
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lod INTEGER REFERENCES symbol, -- Line of development (NULL => Trunk)
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- -- The tags and branches belonging to a revision can be
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- -- determined by selecting on the backreferences in the
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- -- tag and branch tables.
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- rev TEXT NOT NULL, -- revision number
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- date INTEGER NOT NULL, -- date of entry, seconds since epoch
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- state TEXT NOT NULL, -- state of revision
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- mid INTEGER NOT NULL REFERENCES meta, -- meta data (author, commit message)
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cs INTEGER NOT NULL, -- Revision content as offset and
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cl INTEGER NOT NULL, -- length into the archive file.
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- -- Derived information, and links
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- -- Basic: Parent/Child
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- -- NTDB: DefaultParent/DefaultChild
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- -- Branches: Branch parent revision
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- op INTEGER NOT NULL,
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- isdefault INTEGER NOT NULL,
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- parent INTEGER REFERENCES revision,
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- child INTEGER REFERENCES revision,
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dbparent INTEGER REFERENCES revision,
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dbchild INTEGER REFERENCES revision,
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- bparent INTEGER REFERENCES symbol
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ fid INTEGER NOT NULL REFERENCES file, -- File owning revision.
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ rev TEXT NOT NULL, -- Dotted Rev Number.
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- All revisions belong to a line-of-development,
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- identified by a symbol (project level). During data
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- collection it was a file-level branch symbol.
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ --
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Constraint: All the LOD symbols are in the same project
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- as the file itself. This cannot be
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- expressed in CREATE TABLE syntax.
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lod INTEGER NOT NULL REFERENCES symbol, -- Line of development
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- The revisions in a file are organized in a forest of
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- trees, with the main lines defined through the parent /
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- child references. A revision without a parent is the
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- root of a tree, and a revision without a child is a
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- leaf.
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Constraints: All revisions coupled through parent/child
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- refer to the same LOD symbol. The parent
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- of a child of X is X. The child of a
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- parent of X is X.
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ parent INTEGER REFERENCES revision,
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ child INTEGER REFERENCES revision,
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- The representation of a branch in a tree is the
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- exception to the three constraints above.
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- The beginning of a branch is represented by a non-NULL
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- bparent of a revision. This revision B is the first on
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- the branch. Its parent P is the revision the branch is
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- rooted in, and it is not the child of P. B and P refer
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- to different LOD symbols. The bparent of B is also its
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- LOD, and the LOD of its children.
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bparent INTEGER REFERENCES symbol,
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Lastly we keep information is about non-trunk default
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- branches (NTDB) in the revisions.
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- All revisions on the NTDB have 'isdefault' TRUE,
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- everyone else FALSE. The last revision X on the NTDB
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- which is still considered to be on the trunk as well
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- has a non-NULL 'dbchild' which refers to the root of
123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- the trunk. The root also has a non-NULL dbparent
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- refering to X.
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ isdefault INTEGER NOT NULL,
127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dbparent INTEGER REFERENCES revision,
128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dbchild INTEGER REFERENCES revision,
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- The main payload of the revision are the date/time it
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- was entered, its state, operation (= type/class), text
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- content, and meta data (author, log message, branch,
133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- project). The last is encoded as single id, see table
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- 'meta'. The date/time is given in seconds since the
135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- epoch, for easy comparison. The text content is an
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- (offset,length) pair into the rcs archive.
137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ op INTEGER NOT NULL,
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ date INTEGER NOT NULL,
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ state TEXT NOT NULL,
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ mid INTEGER NOT NULL REFERENCES meta,
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ coff INTEGER NOT NULL,
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ clen INTEGER NOT NULL,
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ UNIQUE (fid, rev) -- The DTN is unique within the revision's file.
96 146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
97 147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
98 148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
state writing tag {
99 149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
100 150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fid INTEGER NOT NULL REFERENCES file, -- File the item belongs to
@@ -155,20 +205,39 @@
155 205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pid INTEGER NOT NULL REFERENCES symbol, -- Possible parent of sid
156 206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNIQUE (sid, pid)
157 207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
158 208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
159 209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
state writing meta {
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Meta data of revisions. See revision.mid for the
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- reference. Many revisions can share meta data. This is
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- actually one of the criterions used to sort revisions
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- into changesets.
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
160 215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- pid INTEGER NOT NULL REFERENCES project, -- project the commit was on
162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- bid INTEGER REFERENCES symbol, -- branch the commit was on, NULL for :trunk:
163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- aid INTEGER NOT NULL REFERENCES author,
164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- cid INTEGER NOT NULL REFERENCES cmessage,
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Meta data belongs to a specific project, stronger, to a
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- branch in that project. It further has a log message,
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- and its author. This is unique with the project and
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- branch.
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pid INTEGER NOT NULL REFERENCES project, --
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ bid INTEGER NOT NULL REFERENCES symbol, --
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aid INTEGER NOT NULL REFERENCES author, --
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cid INTEGER NOT NULL REFERENCES cmessage, --
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
165 227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
UNIQUE (pid, bid, aid, cid)
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- Constraints: The project of the meta data of a revision
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- X is the same as the project of X itself.
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ --
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- ............ The branch of the meta data of a revision
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- X is the same as the line of development
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ -- of X itself.
166 235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
167 236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Author and commit message information is fully global,
169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # i.e. per repository.
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Authors and commit messages are fully global, i.e. per
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # repository.
170 239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
171 240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
state writing author {
172 241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
173 242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
name TEXT NOT NULL UNIQUE
174 243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -176,18 +245,10 @@
176 245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
state writing cmessage {
177 246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
178 247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
text TEXT NOT NULL UNIQUE
179 248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
180 249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Consistency constraints.
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Items (Tags, Branches, Revisions) belong to a file to a
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # project. All refer to other items, and symbols, which again
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # belong to a project. The projects have to agree with each
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # other. I.e. items may not refer to items or symbols which
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # belong to a different project than their own.
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
189 250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
190 251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
191 252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
192 253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod load {} {
193 254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# TODO
194 255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!