]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
multi_git: do not set include.path if already set
authorEric Wong <e@80x24.org>
Mon, 20 Feb 2023 05:32:02 +0000 (05:32 +0000)
committerEric Wong <e@80x24.org>
Mon, 20 Feb 2023 17:20:56 +0000 (17:20 +0000)
The epoch may already be read-only, and we don't need to cause
more I/O traffic and disk wear for no-op stuff.  This fixes
idempotent use of public-inbox-clone to update multi-epoch
inboxes.

lib/PublicInbox/MultiGit.pm

index 9429a00ca64cfa3339608ec0f9f48c592a5cbaaa..74a9e1df1d410f5de4587e59eaa3a46a641afc8e 100644 (file)
@@ -5,7 +5,7 @@
 package PublicInbox::MultiGit;
 use strict;
 use v5.10.1;
-use PublicInbox::Spawn qw(run_die);
+use PublicInbox::Spawn qw(run_die popen_rd);
 use PublicInbox::Import;
 use File::Temp 0.19;
 use List::Util qw(max);
@@ -108,8 +108,14 @@ sub fill_alternates {
 
 sub epoch_cfg_set {
        my ($self, $epoch_nr) = @_;
-       run_die([qw(git config -f), epoch_dir($self)."/$epoch_nr.git/config",
-               'include.path', "../../$self->{all}/config" ]);
+       my $f = epoch_dir($self)."/$epoch_nr.git/config";
+       my $v = "../../$self->{all}/config";
+       if (-r $f) {
+               my $rd = popen_rd([qw(git config -f), $f, 'include.path']);
+               chomp(my $have = <$rd> // '');
+               return if $have eq $v;
+       }
+       run_die([qw(git config -f), $f, 'include.path', $v ]);
 }
 
 sub add_epoch {