chiark / gitweb /
git-debrebase: convert-to-gbp: mention commit tag
[dgit.git] / NOTES.git-debrebase
index ac6b88b247947ab9b1b0910149e44746b2f2545f..1cfa070b2d2046c3705395687e13825a6524c9ce 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,11 @@ 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]
+
+[git-debrebase convert-to-gbp: commit patches]
 
 m{^\[git-debrebase (?:\w*-)?upstream combine \.((?: $extra_orig_namepart_re)+)\]}
 
 
 m{^\[git-debrebase (?:\w*-)?upstream combine \.((?: $extra_orig_namepart_re)+)\]}
 
@@ -208,16 +220,33 @@ 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)
 
-2. git-debrebase stitch
+N. git-debrebase [--noop-ok] record-ffq-prev
+
+     does what is described above
+
+2. git-debrebase [--noop-ok] stitch
 
     makes pseudomerge with will-overwrite
     deletes will-overwrite
 
 
     makes pseudomerge with will-overwrite
     deletes will-overwrite
 
+    we will teach dgit to do
+       git-debrebase stitch
+
 3. git-debrebase push
 
     like git push only does stitch first
     ??? command line parsing!
 
 3. git-debrebase push
 
     like git push only does stitch first
     ??? command line parsing!
 
+4. git-debrebase release
+
+    stiches, finalises changelog, signs tags, pushes everything
+    for the future, when there is some automatic builder
+
+will-overwrite for each ref
+    refs/heads/FOO
+is
+    refs/ffq-prev/FOO
+
 ========================================
 
 import from gbp
 ========================================
 
 import from gbp
@@ -249,5 +278,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 ?