-merge alg needs to check for cyclic dependencies
-
-when creating needs to remove metadata, make a separate commit with no
-metadata to allow us to spot what's happening. should only do this
-with option to permit it! Also need to do this when merging.
-
wibblings:
- what about strangeness in ancient history wrt merge alg
topgit import
topbloke {base,tip} is ff desc of topgit {base,tip}
with metadata adjusted
flags
reject topbloke imports of topgit branches which
also contain topbloke metadata
- need patch name in metadata
- patch dep metadata syntax unsatisfactory: too twiddly
- flags metadata unsatisfactory: wants to be valued properties
"checkout" shouldn't do any updates but also want
"goto" or "push" or "pop" or something which does do updates
in base/tip same patch & branch dep -> base base -> tip
msg T textual merge rm from src not in src
+ patch BT must be same rm from src must be same
+ base T compute specially rm from src not in src
deps B list merge rm from src rm from src
deleted T std existence merge rm from src not in src
- patch- BT must be same rm from src must be same
- topgit- B std exist/text merge rm from src rm from src
[^+]*- ?? textual merge rm from src rm from src
+included BT list merge rm from non-tb src list merge
+ +ends BT compute specially compute specially
+*- ?? textual merge rm from non-tb src textual merge
*[^-] ?? die, aborting all ops, if found in any tb src or branch
-
-
-
-
-
-Unwanted removal search subgraphs:
-
- rm relevant removal
- inc
-
- rm impossible to undo removal, arrgh, terminates search
-inc inc..
-/ ??? \
-
- rm
-inc.. rm.. merge of a removal, search down the rm path
-/ [inc] \
-
- inc ??? call it an inclusion, terminate the search
- rm
-
- inc merge of an inclusion, terminates search
-inc.. rm..
-/ [rm] \
-
- inc ??? call it an inclusion, terminate search
-rm.. rm..
-/ ??? \
-
-
- rm inc inc rm irrelevant
- rm inc inc inc.. rm rm..
-
-
-
- OUR BASE SOURCE OUR IT TIP
- | | |
- | | |
- ADD DEP WH/ inc rm |
- NEEDS IT /| /\ |
- / | rm \ |
- / | ______________'/ \ |
- inc |' / \ | IT tip
- / inc REMOVAL rm \ | elsewhere
- / | / \ | | |
- / | inc \ | | |
- some IT | / | | | |
- | inc | | | |
- / | | | | |
- / inc | | | |
- | / | | | | |
- / / inc | | | |
- / | | `------------ | ----<-------- | -.| |
- / inc inc | | *2 |
- | |`- | ------------- | ----<--------.| | |
- | `---inc | 1* / |
- | | | | / |
- | RE-INCLUDE inc rm REMOVAL |' |
- inc \ | | | |
- | * REMOVAL rm | | |
- | | / | |
- |`-------------- | ----------. / | |
- | | inc ANC2 | |
- inc inc / | |
- |`.____________ | / | |
- | `inc ANC1 / | |
- | | /`--------<----------- | ---. |
- without inc / | \/
- | | / | /
- \ RE-INCLUDE inc / | /
- \ \ | / | /
- \ * REMOVAL rm / | /
- \ | / | /
- \ inc FIRST ADD DEP |/
- \ | \ *3
- \ | `------------<-------------.|
- \ | |
- \ without |
- \_____ | |
- `without |
- | |
- IT
-
-
- Merge 1* and 2*, diff against some relevant base branch commit
- or something, and apply to proposed. ???
-
-
-After we are done:
- source tip is included in our base
-
-Each time:
- * pick common ancestor
- * compute whether merge from common anc would unwantedly remove
- * if so we arrange that the common anc is a "rm" but our branch
- actually contains IT