chiark / gitweb /
git-debrebase: NOTES: avoid merges
[dgit.git] / NOTES.git-debrebase
index b47391af64b61945aff20d2970eaac49e4585870..a8e16aff41eda9230a57f76f9f39471fdf3acf28 100644 (file)
@@ -1,5 +1,16 @@
+TODO
+   more tests, see "todo" in gdr-editw
+   reference docs
+      git-debrebase(5)   data model
+      git-debrebase(1)   command line
+   tutorial
+      dgit-maint-debrebase(7)
+      someone should set branch.<name>.mergeOptions to include --ff-only ?
+
+   clean up remains of NOTES and README
+
+   arrange for dgit to automatically stitch on push
 
 
-#
 #    git-ffqrebase start [BASE]
 #                # records previous HEAD so it can be overwritten
 #                # records base for future git-ffqrebase
 #    git-ffqrebase start [BASE]
 #                # records previous HEAD so it can be overwritten
 #                # records base for future git-ffqrebase
@@ -8,9 +19,7 @@
 #    git-ffqrebase finish
 #    git-ffqrebase status [BRANCH]
 #
 #    git-ffqrebase finish
 #    git-ffqrebase status [BRANCH]
 #
-#  refs/ffqrebase-prev/BRANCH    BRANCH may be refs/...; if not it means
-#  refs/ffqrebase-base/BRANCH      refs/heads/BRANCH
-#                               zero, one, or both of these may exist
+#  refs/ffq-prev/REF    relates to refs/REF
 #
 # git-debrebase without start, if already started, is willing
 # to strip pseudomerges provided that they overwrite exactly
 #
 # git-debrebase without start, if already started, is willing
 # to strip pseudomerges provided that they overwrite exactly
@@ -42,8 +51,9 @@ overall format
 [git-debrebase breakwater: new upstream NEW-UPSTREAM-VERSION, merge]
 [git-debrebase: new upstream NEW-UPSTREAM-VERSION, changelog]
 
 [git-debrebase breakwater: new upstream NEW-UPSTREAM-VERSION, merge]
 [git-debrebase: new upstream NEW-UPSTREAM-VERSION, changelog]
 
-[git-debrebase: gbp2debrebase, drop patches]
+[git-debrebase convert-from-gbp: drop patches]
 [git-debrebase breakwater: declare upstream]
 [git-debrebase breakwater: declare upstream]
+[git-debrebase pseudomerge: stitch]
 
 m{^\[git-debrebase (?:\w*-)?upstream combine \.((?: $extra_orig_namepart_re)+)\]}
 
 
 m{^\[git-debrebase (?:\w*-)?upstream combine \.((?: $extra_orig_namepart_re)+)\]}
 
@@ -208,11 +218,11 @@ They should be made just before (ideally, part of) dgit push.
         (optionally, can use some other commit which is ff
          from all of the above, eg one of them)
 
         (optionally, can use some other commit which is ff
          from all of the above, eg one of them)
 
-N. git-debrebase record-ffqrebase
+N. git-debrebase [--noop-ok] record-ffq-prev
 
      does what is described above
 
 
      does what is described above
 
-2. git-debrebase stitch [--noop-ok]
+2. git-debrebase [--noop-ok] stitch
 
     makes pseudomerge with will-overwrite
     deletes will-overwrite
 
     makes pseudomerge with will-overwrite
     deletes will-overwrite
@@ -233,7 +243,7 @@ N. git-debrebase record-ffqrebase
 will-overwrite for each ref
     refs/heads/FOO
 is
 will-overwrite for each ref
     refs/heads/FOO
 is
-    refs/ffqrebase/FOO
+    refs/ffq-prev/FOO
 
 ========================================
 
 
 ========================================
 
@@ -266,5 +276,42 @@ would need to check that dgit view is actually dgit view of
   ond of our ancestors
 failing that first push will need --overwrite
 
   ond of our ancestors
 failing that first push will need --overwrite
 
-should this be called import or gbp2debrebase as it is now ?
-gbp uses "import" oddly but I'm tempted to use it normally here.
+========================================
+
+divergence, merges:
+
+same problem
+ if merge, look at branches before merge
+ generate new combined branch
+ pseudomerge to overwrite merge
+
+current avaiable strategies:
+
+ maybe launder foreign branch
+
+ if foreign branch is nmuish, can rebase it onto ours
+
+ could merge breakwaters (use analyse to find them)
+ merge breakwaters (assuming same upstream)
+ manually construct new patch queue by inspection of
+  the other two patch queues
+
+ instead of manually constructing patch queue, could use
+  gbp pq export and git merge the patch queues
+  (ie work with interdiffs)
+
+ if upstreams are different and one is ahead
+  simply treat that as "ours" and
+  do the work to import changes from the other
+
+ if upstreams have diverged, can
+  resolve somehow to make new upstream
+  do new-upstream on each branch separately
+  now reduced to previously "solved" problem
+
+ in future, auto patch queue merge algorithm
+  determine next patch to apply
+  there are three versions o..O, l..L, r..R
+  we have already constructed m (previous patch or merged breakwater)
+  try using vector calculus in the implied cube and compute
+   multiple ways to check consistency ?