aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2007-02-23 01:26:26 -0800
committerEric Wong <normalperson@yhbt.net>2007-02-23 01:26:26 -0800
commitf30603fcf37f44942a2173386c0f580a508158df (patch)
treef61c02fff9b930734f2a606158ce33eae99a55d6
parenta0d7fe3fcd790876e510c11459df95a0d595e2ad (diff)
downloadgit-f30603fcf37f44942a2173386c0f580a508158df.tar.gz
git-f30603fcf37f44942a2173386c0f580a508158df.tar.xz
git-svn: fix clone when a target directory has been specified
Several bugs caused this to fail: * GIT_DIR was set incorrectly after entering the target directory * Avoid double chdir-ing when clone is called with an explicit path * create target subdirectory *before* running git-init when using the multi-init path Signed-off-by: Eric Wong <normalperson@yhbt.net>
-rwxr-xr-xgit-svn.perl10
1 files changed, 3 insertions, 7 deletions
diff --git a/git-svn.perl b/git-svn.perl
index ea5afb7f8..a5c6eb9fe 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -276,7 +276,7 @@ sub init_subdir {
my $repo_path = shift or return;
mkpath([$repo_path]) unless -d $repo_path;
chdir $repo_path or die "Couldn't chdir to $repo_path: $!\n";
- $ENV{GIT_DIR} = $repo_path . "/.git";
+ $ENV{GIT_DIR} = '.git';
}
sub cmd_clone {
@@ -286,12 +286,8 @@ sub cmd_clone {
$url !~ m#^[a-z\+]+://#) {
$path = $url;
}
- warn "--path: $path\n" if defined $path;
$path = basename($url) if !defined $path || !length $path;
- warn "++path: $path\n" if defined $path;
- mkpath([$path]);
- chdir $path or die "Couldn't chdir to $path\n";
- cmd_init(@_);
+ cmd_init($url, $path);
Git::SVN::fetch_all($Git::SVN::default_repo_id);
}
@@ -459,12 +455,12 @@ sub cmd_multi_init {
unless (defined $_trunk || defined $_branches || defined $_tags) {
usage(1);
}
- do_git_init_db();
$_prefix = '' unless defined $_prefix;
if (defined $url) {
$url =~ s#/+$##;
init_subdir(@_);
}
+ do_git_init_db();
if (defined $_trunk) {
my $trunk_ref = $_prefix . 'trunk';
# try both old-style and new-style lookups: