git-merge-tree: generalize the "traverse <n> trees in sync" functionality
[gitweb.git] / git-mv.perl
index 65b1dcfdf2314e2eb8b7bfd1124210ad73269b10..83dc7e45cf205c7575512182bf29516914773209 100755 (executable)
@@ -19,15 +19,9 @@ ()
        exit(1);
 }
 
-# Sanity checks:
-my $GIT_DIR = $ENV{'GIT_DIR'} || ".git";
-
-unless ( -d $GIT_DIR && -d $GIT_DIR . "/objects" && 
-       -d $GIT_DIR . "/objects/" && -d $GIT_DIR . "/refs") {
-    print "Error: git repository not found.";
-    exit(1);
-}
-
+my $GIT_DIR = `git rev-parse --git-dir`;
+exit 1 if $?; # rev-parse would have given "not a git dir" message.
+chomp($GIT_DIR);
 
 our ($opt_n, $opt_f, $opt_h, $opt_k, $opt_v);
 getopts("hnfkv") || usage;
@@ -68,7 +62,7 @@ ()
 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>;
@@ -108,7 +102,7 @@ ()
        }
     }
     
-    if (($bad eq "") && ($dst =~ /^$src\//)) {
+    if (($bad eq "") && ($dst =~ /^$safesrc\//)) {
        $bad = "can not move directory '$src' into itself";
     }