about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/Admin.pm4
-rw-r--r--lib/PublicInbox/Config.pm2
-rwxr-xr-xscript/public-inbox-convert2
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};