]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
admin: ensure resolved GIT_DIR is absolute
authorEric Wong <e@80x24.org>
Tue, 21 Mar 2023 23:07:19 +0000 (23:07 +0000)
committerEric Wong <e@80x24.org>
Sat, 25 Mar 2023 09:37:43 +0000 (09:37 +0000)
We'll also support the $base arg of File::Spec->rel2abs
since it should make codesearch indexing easier.

lib/PublicInbox/Admin.pm
lib/PublicInbox/Config.pm
script/public-inbox-convert

index b34f225667ffa749c426a5d8db47afd98c28d7ce..abfcbb9cf531e5cc63967b07a0c75b94f10af913 100644 (file)
@@ -82,7 +82,9 @@ sub resolve_git_dir {
        my $dir = do { local $/; <$fh> };
        close $fh or die "error in @$cmd (cwd:${\($cd // '.')}): $?\n";
        chomp $dir;
-       rel2abs_collapsed($dir eq '.' ? ($cd // $dir) : $dir);
+       # --absolute-git-dir requires git v2.13.0+
+       $dir = rel2abs_collapsed($dir, $cd) if $dir !~ m!\A/!;
+       $dir;
 }
 
 # for unconfigured inboxes
index 4065b256539a1e523091cf1a68057d1ae52eb064..e095ecd1070dd756dd699ce49b0e3c68f321d79c 100644 (file)
@@ -371,7 +371,7 @@ sub git_bool {
 # is sufficient and doesn't leave "/.." or "/../"
 sub rel2abs_collapsed {
        require File::Spec;
-       my $p = File::Spec->rel2abs($_[-1]);
+       my $p = File::Spec->rel2abs(@_);
        return $p if substr($p, -3, 3) ne '/..' && index($p, '/../') < 0;
        require Cwd;
        Cwd::abs_path($p);
index 42955a482ed378bcfaea9d2f1df4909bca6a11a2..5f4f2020c186bcd4b3aa1342ae28a6f97df1e679 100755 (executable)
@@ -75,7 +75,7 @@ if ($opt->{'index'}) {
 }
 local %ENV = (%$env, %ENV) if $env;
 my $new = { %$old };
-$new->{inboxdir} = $cfg->rel2abs_collapsed($new_dir);
+$new->{inboxdir} = PublicInbox::Config::rel2abs_collapsed($new_dir);
 $new->{version} = 2;
 $new = PublicInbox::InboxWritable->new($new, { nproc => $opt->{jobs} });
 $new->{-no_fsync} = 1 if !$opt->{fsync};