chiark / gitweb /
Merge branch 'stable' into HEAD base.pbuilder-config
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 16 Jul 2017 20:40:29 +0000 (21:40 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 16 Jul 2017 20:40:29 +0000 (21:40 +0100)
1  2 
debian/changelog
dgit

diff --combined debian/changelog
index 1d57cfa9e610ca1397866cdd0877b678599c27d0,5478618ba2fac6a7de3bf5293097f8a4e24f7ae0..5978c663a65e5630806fba3d6c7dd49f46320f06
@@@ -1,26 -1,37 +1,51 @@@
- dgit (3.12~) unstable; urgency=medium
 +dgit (4.1~) experimental; urgency=medium
 +
 +  Internal changes:
 +  * using-these: New script to help with ad-hoc-testing.
 +
 + --
 +
 +dgit (4.0) experimental; urgency=low
 +
 +  * dgit: --deliberately-not-fast-forward works properly in
 +    split view quilt modes (suppressing the pseudomerge).
 +
 + -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Sun, 12 Feb 2017 22:22:31 +0000
 +
+ dgit (3.12) unstable; urgency=high
  
    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 import: Defend against broken symlinks in ..
+   * dgit import: Right error message for missing files in ..
+   * dgit import: Avoid making broken symlinks in ..
+   * quilt fixup: Tolerate deletion of executable files.
+   * quilt fixup: Tolerate symlink creation (make patches).  Closes:#857382.
  
-  --
+   Important bugfixes to other components:
+   * dgit-repos-server: Do not reject commits with no author/committer
+     email address (but still insist on date, and hence on the actual
+     committer and author commit header fields).  Peter Green reports that
+     eg 66c65d90db100435 in upstream linux.git is such a commit (and is
+     accepted by github).  Closes:#863353.
+   Test suite:
+   * t-report-fail: print $PWD as part of failure message.
+   * import-dsc: Test missing files, particularly in ..
+   * run git gc on tests/worktrees/example_1.0.tar.
+   * quilt fixup: Check we can delete files with funny modes
+   * quilt fixup: Check that funny changes are represented properly
+  -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Sun, 16 Jul 2017 21:36:24 +0100
+ dgit (3.11~deb9u1) stretch; urgency=high
+   * Rebuild and upload to stretch.
+  -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Tue, 11 Jul 2017 09:28:15 +0100
  
  dgit (3.11) unstable; urgency=high
  
diff --combined dgit
index b8d6826928af835898ef5ea85a032ce7682a4758,42647ce02e79d277ef9a211e00eed5986387ffc3..9c7ec734e9f52c4371a31e817a3a392981c0f399
--- 1/dgit
--- 2/dgit
+++ b/dgit
@@@ -3913,7 -3913,6 +3913,7 @@@ sub splitbrain_pseudomerge ($$$$) 
      #
  
      return $dgitview unless defined $archive_hash;
 +    return $dgitview if deliberately_not_fast_forward();
  
      printdebug "splitbrain_pseudomerge...\n";
  
@@@ -4911,16 -4910,23 +4911,23 @@@ sub quiltify_trees_differ ($$;$$$) 
  
        if ($unrepres) {
            eval {
-               die "not a plain file\n"
-                   unless $newmode =~ m/^10\d{4}$/ ||
-                          $oldmode =~ m/^10\d{4}$/;
+               die "not a plain file or symlink\n"
+                   unless $newmode =~ m/^(?:10|12)\d{4}$/ ||
+                          $oldmode =~ m/^(?:10|12)\d{4}$/;
                if ($oldmode =~ m/[^0]/ &&
                    $newmode =~ m/[^0]/) {
-                   die "mode changed\n" if $oldmode ne $newmode;
+                   # both old and new files exist
+                   die "mode or type changed\n" if $oldmode ne $newmode;
+                   die "modified symlink\n" unless $newmode =~ m/^10/;
+               } elsif ($oldmode =~ m/[^0]/) {
+                   # deletion
+                   die "deletion of symlink\n"
+                       unless $oldmode =~ m/^10/;
                } else {
-                   die "non-default mode\n"
-                       unless $newmode =~ m/^100644$/ ||
-                              $oldmode =~ m/^100644$/;
+                   # creation
+                   die "creation with non-default mode\n"
+                       unless $newmode =~ m/^100644$/ or
+                              $newmode =~ m/^120000$/;
                }
            };
            if ($@) {
      foreach my $fi (@dfi) {
        my $f = $fi->{Filename};
        my $here = "../$f";
-       next if lstat $here;
+       if (lstat $here) {
+           next if stat $here;
+           fail "lstat $here works but stat gives $! !";
+       }
        fail "stat $here: $!" unless $! == ENOENT;
        my $there = $dscfn;
        if ($dscfn =~ m#^(?:\./+)?\.\./+#) {
            fail "cannot import $dscfn which seems to be inside working tree!";
        }
        $there =~ s#/+[^/]+$## or
-           fail "cannot import $dscfn which seems to not have a basename";
+           fail "import $dscfn requires ../$f, but it does not exist";
        $there .= "/$f";
+       my $test = $there =~ m{^/} ? $there : "../$there";
+       stat $test or fail "import $dscfn requires $test, but: $!";
        symlink $there, $here or fail "symlink $there to $here: $!";
        progress "made symlink $here -> $there";
  #     print STDERR Dumper($fi);