chiark / gitweb /
dgit: unrepres. changes: Prepare to tolerate symlinks
[dgit.git] / dgit
diff --git a/dgit b/dgit
index dd3b31c717a60ab0562420f3fce5f3a439a8d929..8b9934b807c020233bc9f90d76487988460e2b30 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -4910,14 +4910,15 @@ 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;
+                   die "mode or type changed\n" if $oldmode ne $newmode;
+                   die "modified symlink\n" unless $newmode =~ m/^10/;
                } else {
-                   die "non-default mode\n"
+                   die "non-default mode or type\n"
                        unless $newmode =~ m/^100644$/ ||
                               $oldmode =~ m/^100644$/;
                }