- proposed (elsewhere)
- / \ | |
- / \ | |
- / | | |
- REMOVAL rm | | |
- | | | |
- inc | | |
- / | | | |
- / inc | | |
- | | `------------ | ----<-------- | -.|
- inc inc | | *2
- |`- | ------------- | ----<--------.| |
- `---inc | 1* /
- | | | /
- RE-INCLUDE inc rm REMOVAL |'
- \ | / |
- * REMOVAL rm / |
- | inc |
- inc / |
- | / |
- inc / |
- | /`--------<-----------.|
- inc / |
- | / |
- RE-INCLUDE inc / |
- \ | / |
- * REMOVAL rm / |
- | / |
- inc |
- \ |
- `------------<-------------.|
- |
- |
- IT
+ 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.
+ 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