chiark / gitweb /
Split brain: Generate .gitignore patch in deterministic order
[dgit.git] / dgit
diff --git a/dgit b/dgit
index d44f526d160da054402ae038dfbc0929fdeb429c..4af8f34cd2b21ab71b08529c9e0aaf2b6efe8db6 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -2580,6 +2580,7 @@ sub quiltify_splitbrain ($$$$$) {
        !($diffbits->{O2A} & 02)) { # patches do not change .gitignore
        quiltify_splitbrain_needed();
        progress "creating patch to represent .gitignore changes";
+        ensuredir "debian/patches";
        my $gipatch = "debian/patches/auto-gitignore";
        open GIPATCH, ">>", "$gipatch" or die "$gipatch: $!";
        stat GIPATCH or die "$gipatch: $!";
@@ -2592,11 +2593,23 @@ The Debian packaging git branch contains these updates to the upstream
 .gitignore file(s).  This patch is autogenerated, to provide these
 updates to users of the official Debian archive view of the package.
 
+[dgit version $our_version]
 ---
 END
-    die 'xxx gitignore';
-       
+        close GIPATCH or die "$gipatch: $!";
+        runcmd shell_cmd "exec >>$gipatch", @git, qw(diff),
+            $unapplied, $headref, "--", sort keys %$editedignores;
+        open SERIES, "+>>", "debian/patches/series" or die $!;
+        defined seek SERIES, -1, 2 or $!==EINVAL or die $!;
+        my $newline;
+        defined read SERIES, $newline, 1 or die $!;
+       print SERIES "\n" or die $! unless $newline eq "\n";
+       print SERIES "auto-gitignore\n" or die $!;
+       close SERIES or die  $!;
+        runcmd @git, qw(add -- debian/patches/series), $gipatch;
+        commit_admin "Commit patch to update .gitignore";
     }
+
     die 'xxx memoisation via git-reflog';
     die 'xxx fast forward (should not depend on quilt mode, but will always be needed if we did $split_brain)';
 }