Duy Nguyen <[email protected]> wrote:
> On Thu, Oct 13, 2016 at 8:52 AM, Eric Wong <[email protected]> wrote:
> > +sub svn_dir {
> > + my $git_dir = scalar @_ ? $_[0] : $ENV{GIT_DIR};
> > + my $common = $ENV{GIT_COMMON_DIR} || "$git_dir/commondir";
> > + $git_dir .= '/'.::file_to_s($common) if -e $common;
> > + my $svn_dir = $git_dir . '/svn';
> > + $svn_dir =~ tr!/!/!s;
> > + $svn_dir;
> > +}
>
>
> If this is shell script, this function could be just
>
> svn_dir() {
> git rev-parse --git-path svn
> }
Ah, thanks; I missed --git-path. I will do this in Git/SVN.pm:
--- a/perl/Git/SVN.pm
+++ b/perl/Git/SVN.pm
@@ -808,12 +808,7 @@ sub get_fetch_range {
}
sub svn_dir {
- my $git_dir = scalar @_ ? $_[0] : $ENV{GIT_DIR};
- my $common = $ENV{GIT_COMMON_DIR} || "$git_dir/commondir";
- $git_dir .= '/'.::file_to_s($common) if -e $common;
- my $svn_dir = $git_dir . '/svn';
- $svn_dir =~ tr!/!/!s;
- $svn_dir;
+ command_oneline(qw(rev-parse --git-path svn));
}
sub tmp_config {
> which should give you correct path in either single or multi-worktree
> context and you don't need to bother with details like
> $GIT_COMMON_DIR. But I don't know how Perl bindings are implemented, I
> don't know if we have something similar (or easy to add it, like
> Git::git_path()).
I'm not sure it's necessary given the convenience of command_oneline,
and I'd rather avoid the overhead of documenting+supporting a new API
for Git.pm
> I don't know much about git-svn, but from the look of it I agree
> replacing $ENV{GIT_DIR}/svn with svn_dir() should fix it, assuming
> that you don't hard code $ENV{GIT_DIR}/blahblah somewhere else. I
> don't see any other potential problems (from multi-worktree
> perspective).
I think there was a place where $GIT_DIR/config was used, but
only for documentation purposes.