chiark / gitweb /
git-debrebase: DgitImportUnpatched: defer upstream diff check
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 16 Feb 2018 20:24:56 +0000 (20:24 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Jun 2018 15:03:11 +0000 (16:03 +0100)
We can't do this during the initial walk, because what we ought to be
comparing is the previous breakwater with the new one.  So we have to
wait until the walk has proceeded down the overwritten branch, to find
the old breakwater.

This can be done by waiting until we are rebuilding the branch: at
that point, we have just built the previous breakwater, so we can
compare it to the dgit unpatched import.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
git-debrebase

index bdde809d6769b446409159955e87f8bf031ac6c1..ad2672f1cd3e4f7633af0ee3b05874b6f06e80b5 100755 (executable)
@@ -651,22 +651,12 @@ sub walk ($;$$) {
                    %$cl,
                    SpecialMethod => 'DgitImportDebianUpdate',
                     $xmsg->("convert dgit import: debian changes")
+               }, {
+                   %$cl,
+                   SpecialMethod => 'DgitImportUpstreamUpdate',
+                    $xmsg->("convert dgit import: upstream update",
+                           " breakwater")
                };
-               my $differs = (get_differs $ovwr, $cl->{Tree});
-               printf $report " Differs=%#x", $differs if $report;
-               if ($differs & D_UPS) {
-                   printf $report " D_UPS" if $report;
-                   # This will also trigger if a non-dgit git-based NMU
-                   # deleted .gitignore (which is a thing that some of
-                   # the existing git tools do if the user doesn't
-                   # somehow tell them not to).  Ah well.
-                   push @brw_cl, {
-                       %$cl,
-                       SpecialMethod => 'DgitImportUpstreamUpdate',
-                       $xmsg->("convert dgit import: upstream changes",
-                               " breakwater")
-                   };
-               }
                $prline->(" Import");
                $rewrite_from_here->();
                $upp_limit //= $#upp_cl; # further, deeper, patches discarded
@@ -749,6 +739,9 @@ sub walk ($;$$) {
                $read_tree_debian->($cltree);
                rm_subdir_cached qw(debian/patches);
            } elsif ($method eq 'DgitImportUpstreamUpdate') {
+               confess unless $rewriting;
+               my $differs = (get_differs $build, $cltree);
+               next unless $differs & D_UPS;
                $read_tree_upstream->($cltree);
                push @parents, map { $_->{CommitId} } @{ $cl->{OrigParents} };
            } else {