From 4f7ee209e1e840d8ae3af24eab886d42edb55d91 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 21 Mar 2023 23:07:19 +0000 Subject: admin: ensure resolved GIT_DIR is absolute We'll also support the $base arg of File::Spec->rel2abs since it should make codesearch indexing easier. --- lib/PublicInbox/Admin.pm | 4 +++- lib/PublicInbox/Config.pm | 2 +- script/public-inbox-convert | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/PublicInbox/Admin.pm b/lib/PublicInbox/Admin.pm index b34f2256..abfcbb9c 100644 --- a/lib/PublicInbox/Admin.pm +++ b/lib/PublicInbox/Admin.pm @@ -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 diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm index 4065b256..e095ecd1 100644 --- a/lib/PublicInbox/Config.pm +++ b/lib/PublicInbox/Config.pm @@ -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); diff --git a/script/public-inbox-convert b/script/public-inbox-convert index 42955a48..5f4f2020 100755 --- a/script/public-inbox-convert +++ b/script/public-inbox-convert @@ -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}; -- cgit v1.2.3-24-ge0c7