chiark / gitweb /
git-debrebase: fix changelog manip
[dgit.git] / git-debrebase
index 931a0124bf367e678f39da4ef26cc2571e10efdc..9a71bd30e4607039aa79b47307be4e797664356e 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