Actual included branches:
- This is tracked explicitly in .topgit/included, one branch per
+ This is tracked explicitly in .topbloke/included, one branch per
line. For compatibility with older versions, every time we think
about a base, branch or source above, we check whether
- .topgit/included is present.
+ .topbloke/included is present.
If it isn't then we calculate a child commit which has a
- .topgit/included. In the case of a remote branch or base, we
+ .topbloke/included. In the case of a remote branch or base, we
substitute this child commit for the relevant remote ref but do
not record it in the remote ref; in the case of a local branch or
base, we advance the local branch or base accordingly.
- When .topgit/included is calculated in this way, it always gets
- the list of desired included branches. (Older versions of topgit,
- which do not support dependency deletion, always have exactly the
+ When .topbloke/included is calculated in this way, it always gets
+ the list of desired included branches. (topgit,
+ which does not support dependency deletion, always has exactly the
desired branches actually included.)
+ Non-topbloke-controlled branches are never recorded in included.
+
Branch removal:
- removed branch wants not to be in list of branches "git-branch"
et al any more
- branches in refs/top-branches ?
- deleted branches do something to the base ?
+ branches in refs/top-branches ? yes
+ deleted branches do something to the base ? no
deleting empty branch: dependencies fine
deleting nonempty branch: if any dependencies found, their
- remove from dependencies of active branches
only makes sense if no active branches depend on it.
+ undeleting
+ - just unmark the branch as deleted
+
+
+Foreign branches:
+ When merging from a foreign dependency, check that it
+ does not have .topbloke/included or .topbloke/flags; if it
+ does, could produce a new commit which has .topbloke removed
+ and merge from that
+
Branch naming:
needs to be globally unique
so put email address in it
- also "tree" or "context" name, found automatically
tg operations search for applicable branches
safe charset for branch names
. - / 0-9 a-z
spc ~ ^ : ? * [ \
@{ .lock.
(apropos of shell)
+
+
+When pulling, which remotes get to update which branches ?
+Complicated question!
+
+For now, have "blessed" remotes, which we always pull and update from.
+All these count as sources above.
+
+Update operation restrictions available, which restrict use of various
+sources above ? What about implications for correctness of merge
+algorithm ?
+
+
+Concept of a "stack" ?
+Unnecessary - instead, deal with leaf branches
+Operations like "go up the stack", goes towards leaf. Hopefully unique.
+"Down" the stack, uses a "conventional" linearisation
+Stack reordering op ? auto adjust deps