- proposed
- / \ |
- /`---------- \ -----<--------.|
- / | |
- | | |
- RE-INCLUDE inc rm REMOVAL |
- \ | / / |
- * REMOVAL rm / / |
- | inc * |
- rm / |
- | / |
- rm / |
- | /`--------<-----------.|
- 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. ???
+
+
+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