chiark / gitweb /
git-debrebase: abolish $pseudos_must_overwrite_this
[dgit.git] / git-debrebase
index 8c1dba80b881d257ca161305aa63c33e990272da..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,22 +337,18 @@ sub walk ($$$;$$$) {
        my $st = $cl->{SubType};
        $report->($cl);
        $found{$ty. ( defined($st) ? "-$st" : '' )}++;
+       push @processed, $cl;
        my $p0 = $cl->{Parents}[0]{CommitId};
-       $cl->{Abbrev} = lc substr $ty,0,1;
        if ($ty eq 'AddPatches') {
-           $cl->{Abbrev} = 'P';
            $cur = $p0;
            $rewrite_from_here->();
            next;
        } elsif ($ty eq 'Packaging') {
-           $cl->{Abbrev} = 'd';
            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') {
@@ -352,17 +362,6 @@ sub walk ($$$;$$$) {
            $rewrite_from_here->();
            next;
        } elsif ($ty eq 'Pseudomerge') {
-           $cl->{Abbrev} = 'M';
-           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};
@@ -372,7 +371,6 @@ sub walk ($$$;$$$) {
            last;
        } elsif ($ty eq 'DgitImportUnpatched' &&
                 @pseudomerges == 1) {
-           $cl->{Abbrev} = 'I';
            # This import has a tree which is just like a breakwater
            # tree, but it has the wrong history.  Its ought to have
            # the previous breakwater (which dgit ought to have
@@ -412,7 +410,7 @@ sub walk ($$$;$$$) {
 
     workarea_fresh();
 
-    my $rewriting = 1;
+    my $rewriting = 0;
 
     my $build = $basis;