On Thu, Sep 12, 2024 at 06:36:04PM -0400, Jeff King wrote: > diff --git a/perl/Git.pm b/perl/Git.pm > index aebfe0c6e0..cf1ef0b32a 100644 > --- a/perl/Git.pm > +++ b/perl/Git.pm > @@ -197,11 +197,11 @@ sub repository { > my ($bare, $dir) = split /\n/, $out, 2; > > require Cwd; > - if ($bare ne 'true') { > - require File::Spec; > - File::Spec->file_name_is_absolute($dir) or $dir = $opts{Directory} . '/' . $dir; > - $opts{Repository} = Cwd::abs_path($dir); > + require File::Spec; > + File::Spec->file_name_is_absolute($dir) or $dir = $opts{Directory} . '/' . $dir; > + $opts{Repository} = Cwd::abs_path($dir); > > + if ($bare ne 'true') { > # If --git-dir went ok, this shouldn't die either. > my $prefix = $search->command_oneline('rev-parse', '--show-prefix'); > $dir = Cwd::abs_path($opts{Directory}) . '/'; > @@ -214,8 +214,6 @@ sub repository { > $opts{WorkingCopy} = $dir; > $opts{WorkingSubdir} = $prefix; > > - } else { > - $opts{Repository} = Cwd::abs_path($dir); > } > > delete $opts{Directory}; Makes sense. We already knew that the $dir was relative, but only remembered to handle this in case the repository was non-bare. Now both cases use the same code to translate the relative path to an absolute one. > diff --git a/t/t9700-perl-git.sh b/t/t9700-perl-git.sh > index ccc8212d73..4431697122 100755 > --- a/t/t9700-perl-git.sh > +++ b/t/t9700-perl-git.sh > @@ -45,7 +45,8 @@ test_expect_success 'set up test repository' ' > ' > > test_expect_success 'set up bare repository' ' > - git init --bare bare.git > + git init --bare bare.git && > + git -C bare.git --work-tree=. commit --allow-empty -m "bare commit" > ' > > test_expect_success 'use t9700/test.pl to test Git.pm' ' I didn't even know that this hack was possible. I guess the alternative would be to use git-commit-tree(1) with the empty tree ID, but that'd also require us to update branches manually via git-update-ref(1). So... a bit gross, but hey, if it works... Patrick