diff options
author | Eric Wong <normalperson@yhbt.net> | 2007-02-23 01:26:26 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2007-02-23 01:26:26 -0800 |
commit | f30603fcf37f44942a2173386c0f580a508158df (patch) | |
tree | f61c02fff9b930734f2a606158ce33eae99a55d6 | |
parent | a0d7fe3fcd790876e510c11459df95a0d595e2ad (diff) | |
download | git-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-x | git-svn.perl | 10 |
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: |