- 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
#
return $dgitview unless defined $archive_hash;
+ return $dgitview if deliberately_not_fast_forward();
printdebug "splitbrain_pseudomerge...\n";
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);