chiark / gitweb /
wip topbloke-merge-lists
[topbloke.git] / FORMAT
1 Topbloke branch is:
2         - branch in refs/topbloke-tips/<full-name>
3                 contains the working version, fast-forwarding
4         - branch in refs/topbloke-bases/<full-name>
5                 contains the base version, being the pulling
6                 merge of all the bases
7
8 In-tree, there are metadata files in .topbloke
9
10         msg             brach "commit message"
11
12         deps            direct dependencies, one per line
13                         as either:
14                                 topbloke branch name
15                                 /refs/heads/<something>
16
17         included        actual included branches, one per line
18                                 topbloke branch name
19
20         flags           flags that apply to this branch, one per line
21                          unknown flags starting with [a-z] are ok;
22                          otherwise fatal.  Currently defined flags:
23                                 Deleted         branch is deleted
24
25
26 <full-name> has the format:
27         <email>@<domain.name>/<yyyy>-<mm>-<dd>T<hh><mm><ss>Z/<nickname-path>
28 where nickname-path's first component must not start with a digit 
29 contain ~ or @  (: is not allowed in refs hence the squashing)
30 eg
31         ijackson@chiark.greenend.org.uk/2012-01-20T225127Z/reorg/sponge
32 NB only exactly that date format is allowed and timezone must be Z.
33
34 Branches may be specified as
35         [<qualifier>/...]<nickname-path-spec>
36 where <qualifier>/ is one of
37         [<email>]@[<domain.name>/
38                 Only branches matching the specified email local part
39                 or domain name match
40         [<date-spec>/]
41                 A prefix of the ISO8601 date spec, stopping
42                 just after a numeric component (or at the end)
43         [<approx-date-containing-~>/]
44                 Intepreted by date -d after ~s have been replaced by
45                 spaces.  When we come to select, take the branch
46                 nearest that date rather than the most recent
47
48
49 <nickname-path-spec> may be
50         <nickname-path>
51         ./<nickname-new-leaf-component>
52         ../<nickname-path-spec>
53
54 <date-spec> may be
55         <approximate date spec containing at least one ~>
56                 means all branches are candidates
57
58 So overall, if the current branch is
59         ijackson@chiark.greenend.org.uk/2011-08-20T120320Z/fixes/pudding
60 then all of the following can refer to the same branch
61         ./sponge
62         ../reorg/sponge
63         reorg/sponge
64         2012/reorg/sponge
65         2012/reorg/sponge
66         2012/./sponge
67         jan~/./sponge
68         ijackson@/reorg/sponge
69         ijackson@/2012/reorg/sponge
70         ijackson@chiark.greenend.org.uk/reorg/sponge
71         ijackson@chiark.greenend.org.uk/2012-01-20T225127Z/reorg/sponge
72
73 Search algorithm:
74         1. prefer branches with email address (or domain)
75            matching current branch
76         2. prefer branches with our own email address (or domain)
77         3. other branches
78 Within this there may be branches with multiple dates; prefer the most
79 recent.