chiark / gitweb /
git-debrebase: wip pseudomerge handling
[dgit.git] / git-debrebase
index e000e55624b3f2c5e94e3898c09c2d9642ab5b0f..3469f33d0a0ef285e17d2a04ff34df4ec6fdff66 100755 (executable)
@@ -63,7 +63,7 @@
 #             - no fast forward checks
 #  for now only explicit with commitids
 
-    # implicitly uses `upstream'
+#         implicitly uses `upstream'
 #                                     # (or multiple other branches)
 #       git-debrebase new-upstream \
 #             [<subdir>/]=<commitid>
 #  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
+#
+# git-debrebase without start, if already started, is willing
+# to strip pseudomerges provided that they overwrite exactly
+# the previous HEAD
+#  xxxx is this right ?  what matters is have we pushed
+#    I think in fact the right answer is:
+#       git-debrebase always strips out pseudomerges from its branch
+#       a pseudomerge is put in at the time we want to push
+#       at that time, we make a pseudomerge of the remote tracking
+#           branch (if raw git) or the dgit view (if dgit)
+#       for raw git git-ffqrebase, do want preciseley to record
+#           value of remote tracking branch or our branch, on start, so we
+#           overwrite only things we intend to
+#  the previous pseudomerge    check for tags and remote branches ?
 
 use strict;
 
@@ -288,7 +302,7 @@ sub classify ($) {
 
 sub walk ($$$;$$$) {
     my ($input, $pseudos_must_overwrite_this, $wantdebonly,
-       $report, $depth, $report_anomaly, $nogenerate) = @_;
+       $report, $depth, $report_anomaly, $report_only) = @_;
     # go through commits backwards
     # we generate two lists of commits to apply
     # => ($tip, $breakwater_tip)
@@ -323,6 +337,7 @@ sub walk ($$$;$$$) {
        my $st = $cl->{SubType};
        $report->($cl);
        $found{$ty. ( defined($st) ? "-$st" : '' )}++;
+       push @processed, $cl;
        my $p0 = $cl->{Parents}[0]{CommitId};
        if ($ty eq 'AddPatches') {
            $cur = $p0;
@@ -330,12 +345,10 @@ sub walk ($$$;$$$) {
            next;
        } elsif ($ty eq 'Packaging') {
            push @deb_cl, $cl;
-           push @processed, $cl;
            $cur = $p0;
            next;
        } elsif ($ty eq 'Upstream') {
            push @ups_cl, $cl;
-           push @processed, $cl;
            $cur = $p0;
            next;
        } elsif ($ty eq 'Mixed') {
@@ -407,7 +420,7 @@ sub walk ($$$;$$$) {
 
     workarea_fresh();
 
-    my $rewriting = 1;
+    my $rewriting = 0;
 
     my $build = $basis;