X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=afe209e2f16fa61cf84828b689fc9021c6ab8672;hb=e8682c0c10fc77771695ca693a16342beaf51b89;hp=8b9934b807c020233bc9f90d76487988460e2b30;hpb=fd9881c5c24f97f7c7421db946e6f09afdb2758a;p=dgit.git diff --git a/dgit b/dgit index 8b9934b8..afe209e2 100755 --- a/dgit +++ b/dgit @@ -30,6 +30,8 @@ use File::Path; use File::Temp qw(tempdir); use File::Basename; use Dpkg::Version; +use Dpkg::Compression; +use Dpkg::Compression::Process; use POSIX; use IPC::Open2; use Digest::SHA; @@ -4915,12 +4917,18 @@ sub quiltify_trees_differ ($$;$$$) { $oldmode =~ m/^(?:10|12)\d{4}$/; if ($oldmode =~ m/[^0]/ && $newmode =~ m/[^0]/) { + # 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 or type\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 ($@) {