From e9bcefd93e14d2d8d2906efdd713cde6be4c4fa5 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 26 Feb 2012 00:37:33 +0000 Subject: [PATCH] update some docs for new metadata/theory --- BUGS | 10 ------ DESIGN | 101 ++------------------------------------------------------- 2 files changed, 3 insertions(+), 108 deletions(-) diff --git a/BUGS b/BUGS index 0225abf..ec692dd 100644 --- a/BUGS +++ b/BUGS @@ -1,11 +1,4 @@ -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 @@ -15,9 +8,6 @@ wibblings: 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 diff --git a/DESIGN b/DESIGN index e4066e4..66252ce 100644 --- a/DESIGN +++ b/DESIGN @@ -96,107 +96,12 @@ Strategies for each metadata file merge: 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 -- 2.30.2