chiark / gitweb /
git-debrebase: abolish $pseudos_must_overwrite_this
[dgit.git] / git-debrebase
index e000e55624b3f2c5e94e3898c09c2d9642ab5b0f..e2a1a325ed3bb02fa978483f4965bd0610a8710a 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;
 
@@ -286,9 +300,9 @@ sub classify ($) {
     return $unknown->("complex merge");
 }
 
-sub walk ($$$;$$$) {
-    my ($input, $pseudos_must_overwrite_this, $wantdebonly,
-       $report, $depth, $report_anomaly, $nogenerate) = @_;
+sub walk ($$;$$$) {
+    my ($input, $wantdebonly,
+       $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') {
@@ -349,16 +362,6 @@ sub walk ($$$;$$$) {
            $rewrite_from_here->();
            next;
        } elsif ($ty eq 'Pseudomerge') {
-           if (defined $pseudos_must_overwrite_this &&
-               !grep {
-                   is_fast_fwd $pseudos_must_overwrite_this, $_->{CommitId}
-               },
-               @{ $cl->{Overwritten} }) {
-               $report_anomaly->($cl,
-                                 "Pseudomerge should overwrite".
-                                 " $pseudos_must_overwrite_this".
-                                 " but does not do so");
-           }
            push @pseudomerges, $cl;
            $rewrite_from_here->();
            $cur = $ty->{Contributor};
@@ -407,7 +410,7 @@ sub walk ($$$;$$$) {
 
     workarea_fresh();
 
-    my $rewriting = 1;
+    my $rewriting = 0;
 
     my $build = $basis;