From f30603fcf37f44942a2173386c0f580a508158df Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 23 Feb 2007 01:26:26 -0800 Subject: [PATCH] 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 --- git-svn.perl | 10 +++------- 1 file 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: -- 2.30.2