git-svn: allow --find-copies-harder and -l<num> to be passed on commit
[git.git] / git-mv.perl
index b6c0b48..2ea852c 100755 (executable)
@@ -62,7 +62,7 @@ my $safesrc;
 my (%overwritten, %srcForDst);
 
 $/ = "\0";
-open(F,"-|","git-ls-files","-z")
+open(F, 'git-ls-files -z |')
         or die "Failed to open pipe from git-ls-files: " . $!;
 
 @allfiles = map { chomp; $_; } <F>;
@@ -75,6 +75,15 @@ while(scalar @srcArgs > 0) {
     $dst = shift @dstArgs;
     $bad = "";
 
+    for ($src, $dst) {
+       # Be nicer to end-users by doing ".//a/./b/.//./c" ==> "a/b/c"
+       s|^\./||;
+       s|/\./|/| while (m|/\./|);
+       s|//+|/|g;
+       # Also "a/b/../c" ==> "a/c"
+       1 while (s,(^|/)[^/]+/\.\./,$1,);
+    }
+
     if ($opt_v) {
        print "Checking rename of '$src' to '$dst'\n";
     }