chiark / gitweb /
Merge tag 'archive/debian/3.11_deb9u1' into stable
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 Jul 2017 21:58:53 +0000 (22:58 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 Jul 2017 21:58:53 +0000 (22:58 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Debian/Dgit.pm
debian/changelog
dgit
tests/tests/quilt

index ba1c288..dcecbd1 100644 (file)
@@ -50,7 +50,7 @@ BEGIN {
                      git_get_ref git_for_each_ref
                       git_for_each_tag_referring is_fast_fwd
                       $package_re $component_re $deliberately_re
-                     $distro_re $versiontag_re
+                     $distro_re $versiontag_re $series_filename_re
                       $branchprefix
                       initdebug enabledebug enabledebuglevel
                       printdebug debugcmd
@@ -69,6 +69,7 @@ our $deliberately_re = "(?:TEST-)?$package_re";
 our $distro_re = $component_re;
 our $versiontag_re = qr{[-+.\%_0-9a-zA-Z/]+};
 our $branchprefix = 'dgit';
+our $series_filename_re = qr{(?:^|\.)series(?!\n)$}s;
 
 # policy hook exit status bits
 # see dgit-repos-server head comment for documentation
index 5ca1f5c..1d912c0 100644 (file)
@@ -1,3 +1,13 @@
+dgit (3.12~) unstable; urgency=medium
+
+  Important bugfixes to dgit:
+  * Pass --no-renames to git diff-tree -z, avoiding potential trouble.
+  * Defend against commit subject lines which would generate patches which
+    look like series files, etc.  Involves adding .patch to all generated
+    patch filenames.
+
+ --
+
 dgit (3.11~deb9u1) stretch; urgency=high
 
   * Rebuild and upload to stretch.
diff --git a/dgit b/dgit
index ccf5009..5197596 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -4891,7 +4891,7 @@ sub quiltify_trees_differ ($$;$$$) {
     #  a list of unrepresentable changes (removals of upstream files
     #  (as messages)
     local $/=undef;
-    my @cmd = (@git, qw(diff-tree -z));
+    my @cmd = (@git, qw(diff-tree -z --no-renames));
     push @cmd, qw(--name-only) unless $unrepres;
     push @cmd, qw(-r) if $finegrained || $unrepres;
     push @cmd, $x, $y;
@@ -5274,6 +5274,7 @@ sub quiltify ($$$$) {
                die "contains unexpected slashes\n" if m{//} || m{/$};
                die "contains leading punctuation\n" if m{^\W} || m{/\W};
                die "contains bad character(s)\n" if m{[^-a-z0-9_.+=~/]}i;
+               die "is series file\n" if m{$series_filename_re}o;
                die "too long" if length > 200;
            };
            return $_ unless $@;
@@ -5312,6 +5313,7 @@ sub quiltify ($$$$) {
            $patchname =~ y/-a-z0-9_.+=~//cd;
            $patchname =~ s/^\W/x-$&/;
            $patchname = substr($patchname,0,40);
+           $patchname .= ".patch";
        }
        if (!defined $patchdir) {
            $patchdir = '';
index 1a921b3..f26f744 100755 (executable)
@@ -41,8 +41,8 @@ iteration
 
 diff <<END - debian/patches/series
 ups-topic/ups-yml
-spongiform-upstream-new-file-incl-change
-zorkmid-options-=-42
+spongiform-upstream-new-file-incl-change.patch
+zorkmid-options-=-42.patch
 END
 
 for f in `cat debian/patches/series`; do