chiark / gitweb /
git-debrebase: new-upstream-v0: use update_head_postlaunder
[dgit.git] / git-debrebase
index 931a0124bf367e678f39da4ef26cc2571e10efdc..86958820221ec4b1212f708a7e1749572f7a8e29 100755 (executable)
@@ -785,13 +785,18 @@ sub update_head_checkout ($$$) {
     update_head $old, $new, $mrest;
 }
 
+sub update_head_postlaunder ($$$) {
+    my ($old, $tip, $reflogmsg) = @_;
+    update_head $old, $tip, $reflogmsg;
+    # no tree changes except debian/patches
+    runcmd @git, qw(rm --quiet --ignore-unmatch -rf debian/patches);
+}
+
 sub cmd_launder () {
     badusage "no arguments to launder allowed" if @ARGV;
     my $old = get_head();
     my ($tip,$breakwater,$last_upstream_merge) = walk $old;
-    update_head $old, $tip, 'launder';
-    # no tree changes except debian/patches
-    runcmd @git, qw(rm --quiet --ignore-unmatch -rf debian/patches);
+    update_head_postlaunder $old, $tip, 'launder';
     printf "# breakwater tip\n%s\n", $breakwater;
     printf "# working tip\n%s\n", $tip;
     printf "# last upstream merge\n%s\n", $last_upstream_merge;
@@ -962,8 +967,9 @@ sub cmd_new_upstream_v0 () {
        # Now we have to add a changelog stanza so the Debian version
        # is right.
        die if unlink "debian";
-       die $! unless $!==ENOTEMPTY;
-       unlink "debian/changelog" or die $!;
+       die $! unless $!==ENOENT or $!==ENOTEMPTY;
+       unlink "debian/changelog" or $!==ENOENT or die $!;
+        mkdir "debian" or die $!;
        open CN, ">", "debian/changelog" or die $!;
        my $oldclog = git_cat_file ":debian/changelog";
        $oldclog =~ m/^($package_re) \(\S+\) / or
@@ -991,7 +997,8 @@ END
     # the laundering output, because git-rebase can't easily be made
     # to make a replay list which is based on some other branch
 
-    update_head $old_head, $old_laundered_tip, 'launder for new upstream';
+    update_head_postlaunder $old_head, $old_laundered_tip,
+        'launder for new upstream';
 
     my @cmd = (@git, qw(rebase --onto), $new_bw, $old_bw);
     runcmd @cmd;