chiark / gitweb /
Some thoughts
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 28 Jan 2012 15:35:07 +0000 (15:35 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 28 Jan 2012 15:35:22 +0000 (15:35 +0000)
BUGS
DESIGN

diff --git a/BUGS b/BUGS
index 14a4a13..df77a9f 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1,10 +1,16 @@
 merge alg needs to check for cyclic dependencies
 
 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
 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
+               topbloke {base,tip} is ff desc of topgit {base,tip}
+                with metadata adjusted
+               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
        need patch name in metadata
        patch dep metadata syntax unsatisfactory: too twiddly
        flags metadata unsatisfactory: wants to be valued properties
diff --git a/DESIGN b/DESIGN
index b7c677d..a7c142b 100644 (file)
--- a/DESIGN
+++ b/DESIGN
@@ -19,7 +19,7 @@ Basic update algorithm:
             - the branch for each direct dep
             - the remote base)
 
             - the branch for each direct dep
             - the remote base)
 
-       Find the common ancestor.
+       Find the (latest) common ancestor.
 
        Check for unwanted dependency removals.  
        An unwanted dependency removal is
 
        Check for unwanted dependency removals.  
        An unwanted dependency removal is
@@ -30,14 +30,23 @@ Basic update algorithm:
           which have already occurred on our base; these will be
           reverted later.)
        For each unwanted dependency removal (ie for each such
           which have already occurred on our base; these will be
           reverted later.)
        For each unwanted dependency removal (ie for each such
-       branch), find the most recent commit which unwantedly removed
-       the dep from the source's actual included deps ("relevant
-       unwanted removal commit").  (Abort if any such commit is a
-       merge.)  Select the earliest relevant unwanted removal commit
-       (from the set of relevant unwanted removal commits
-       corresponding to the unwanted dependency removals).
-       Merge from the ancestor of the relevant unwanted removal commit.
-       Merge from the relevant unwanted removal commit using -s ours.
+       branch), search as follows:
+          * An "unwanted removal commit" is a non-merge commit in the
+            history of the source, which unwantedly removes the dep
+            from the actual included deps.
+          * But the search stops at any point where we would have to
+            traverse a commit where .topbloke/deps is empty (which
+            stops us looking into the hitory of non-topbloke-controlled
+            branches).  This can be done with git-rev-list
+            --remove-empty.
+          * The the relevant unwanted removal commit for that dep is
+            the most recent unwanted removal commit, as defined.
+       Select the unwantedly removed dep whose relevant unwanted
+       removal commit is the earliest.  Merge from the ancestor of
+       that relevant unwanted removal commit.  Merge from the relevant
+       unwanted removal commit using -s ours.
+
+       Now continue to the next unwanted dependency removal.
 
        (The purpose of this, and the result, is that the unwanted
        dependency removal has gone away.  Doing things in this order
 
        (The purpose of this, and the result, is that the unwanted
        dependency removal has gone away.  Doing things in this order
@@ -48,8 +57,6 @@ Basic update algorithm:
        of a patch affected by an unwanted removal will benefit from
        that client's resolution of the situation.)
 
        of a patch affected by an unwanted removal will benefit from
        that client's resolution of the situation.)
 
-       Now continue to the next unwanted dependency removal.
-
        If there are no (more) unwanted dependency removals, merge
        from the source.
 
        If there are no (more) unwanted dependency removals, merge
        from the source.