From b8de136a05e8571f21c2d03b003c8735da615a69 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 29 Jan 2012 20:58:57 +0000 Subject: [PATCH] metadata merging plan --- DESIGN | 15 +++++++++++++++ FORMAT | 27 ++++++++++++++++++--------- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/DESIGN b/DESIGN index 036cbec..a3e5c97 100644 --- a/DESIGN +++ b/DESIGN @@ -220,3 +220,18 @@ OK so here is a plan: Commit, adjusting the parents of the new commit to the original parents if we made the merge with special massaged parents. We may still need to have custom merge drivers for metadata. + + +Strategies for each metadata file merge: + + in base/tip same patch's tip dep -> base base -> tip + + msg T textual merge rm from src not in src + deps T list merge rm from src not in src + deleted T std existence merge rm from src not in src + patch- BT must be same rm from src must be same + topgit- T must be same rm from src not in src + [^+]*- ?? textual merge rm from src rm from src + +included BT list merge rm from non-tb src list merge + +*- ?? textual merge rm from non-tb src textual merge + *[^-] ?? die, aborting all ops, if found in any tb src or branch diff --git a/FORMAT b/FORMAT index 473946e..7313ab8 100644 --- a/FORMAT +++ b/FORMAT @@ -11,43 +11,52 @@ In-tree, there are metadata files in .topbloke or changes from bases or dependencies: msg patch "commit message" - ("# not applicable" in bases) + exist only in tip branch deps direct dependencies, one per line as either: .f .tg - (empty in base branches) + exist only in tip branch deleted exists (but empty) if branch is deleted - exist in tip only branch + exist only in tip branch patch- name of this topbloke patch (plus a newline) - exists in base and tip + exists in base and tip, identical value topgit- name of the topgit branch that this was imported from and which we should merge from - (plus a newline); exists in tip only + (plus a newline) + exist only in tip branch [^+]*- another property that applies to this patch; if not known to this version of topbloke then it is safe to: - merge this file as text when merging - from base into base or tip into tip + from base into base, or tip into tip, + and perhaps ask user to fix up conflicts + after warning if they feel expert - throw away this file when merging from - base into tip or from dep into base + from dep into base or base into tip Files which inherit contents and changes from dependencies have names starting with "+": +included actual included deps, one per line - format as for deps + format as for deps + exists in tip and base branches +*- another property that is inherited; it is also safe to: - merge this file as text when merging - from tb deps into bases or bases into tips + from tb dep into base, base into tip + or tip into tip + + Any unknown metadata files not ending in "-" are fatal: tb + will refuse to operate on patches either of whose branches + have such files. has the format: -- 2.30.2