diff options
author | Ramkumar Ramachandra <artagnon@gmail.com> | 2015-01-10 09:55:11 -0500 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2015-01-15 08:35:55 +0000 |
commit | a94655dcfedc6b266ba32a3d32b0d52a1ce6a928 (patch) | |
tree | af148a7688eaab3a22e871ad5519de50addc0971 | |
parent | Git::SVN: handle missing ref_id case correctly (diff) | |
download | tgif-a94655dcfedc6b266ba32a3d32b0d52a1ce6a928.tar.xz |
git-svn: make it play nicely with submodules
It's a simple matter of opening the directory specified in the gitfile.
[ew: tweaked check to avoid open() on directories]
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
-rwxr-xr-x | git-svn.perl | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/git-svn.perl b/git-svn.perl index 60f8814cc5..32d109ebdf 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -337,6 +337,12 @@ for (my $i = 0; $i < @ARGV; $i++) { # make sure we're always running at the top-level working directory if ($cmd && $cmd =~ /(?:clone|init|multi-init)$/) { $ENV{GIT_DIR} ||= ".git"; + # catch the submodule case + if (-f $ENV{GIT_DIR}) { + open(my $fh, '<', $ENV{GIT_DIR}) or + die "failed to open $ENV{GIT_DIR}: $!\n"; + $ENV{GIT_DIR} = $1 if <$fh> =~ /^gitdir: (.+)$/; + } } else { my ($git_dir, $cdup); git_cmd_try { |