about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-03-03 20:56:15 +0000
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-03-03 21:02:21 +0000
commitdefb6d12f5b7b63a8e95a2db2d1dff2bd8f9d83c (patch)
tree6c8bcba5f6a34b9d717bbcfd2aa63de447a32917
parent30a72ab33290a9ce57955bbd0799e394feab91ea (diff)
downloadpublic-inbox-defb6d12f5b7b63a8e95a2db2d1dff2bd8f9d83c.tar.gz
We'll let the config of all.git dictate every other subrepo to
ease maintenance and configuration.  The "include" directive has
been supported since git 1.7.10, so it's safe to depend on as v2
requires git 2.6.0+ anyways for "get-mark" in fast-import.
-rw-r--r--lib/PublicInbox/SearchIdx.pm2
-rw-r--r--lib/PublicInbox/V2Writable.pm10
-rw-r--r--t/init.t2
-rw-r--r--t/v2writable.t16
4 files changed, 26 insertions, 4 deletions
diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm
index 71469a95..725bbd83 100644
--- a/lib/PublicInbox/SearchIdx.pm
+++ b/lib/PublicInbox/SearchIdx.pm
@@ -817,7 +817,7 @@ sub _read_git_config_perm {
         my ($self) = @_;
         my @cmd = qw(config);
         if ($self->{version} == 2) {
-                push @cmd, "--file=$self->{mainrepo}/inbox-config";
+                push @cmd, "--file=$self->{mainrepo}/all.git/config";
         }
         my $fh = $self->{git}->popen(@cmd, 'core.sharedRepository');
         local $/ = "\n";
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index 31376db2..461432ea 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -244,16 +244,20 @@ sub git_init {
         die "$git_dir exists\n" if -e $git_dir;
         my @cmd = (qw(git init --bare -q), $git_dir);
         PublicInbox::Import::run_die(\@cmd);
-        @cmd = (qw/git config/, "--file=$git_dir/config",
-                        'repack.writeBitmaps', 'true');
-        PublicInbox::Import::run_die(\@cmd);
 
         my $all = "$self->{-inbox}->{mainrepo}/all.git";
         unless (-d $all) {
                 @cmd = (qw(git init --bare -q), $all);
                 PublicInbox::Import::run_die(\@cmd);
+                @cmd = (qw/git config/, "--file=$all/config",
+                                'repack.writeBitmaps', 'true');
+                PublicInbox::Import::run_die(\@cmd);
         }
 
+        @cmd = (qw/git config/, "--file=$git_dir/config",
+                        'include.path', '../../all.git/config');
+        PublicInbox::Import::run_die(\@cmd);
+
         my $alt = "$all/objects/info/alternates";
         my $new_obj_dir = "../../git/$new.git/objects";
         my %alts;
diff --git a/t/init.t b/t/init.t
index 54b90ec5..6ae608e5 100644
--- a/t/init.t
+++ b/t/init.t
@@ -38,6 +38,8 @@ SKIP: {
         ok(-d "$tmpdir/v2list", 'v2list directory exists');
         ok(-f "$tmpdir/v2list/msgmap.sqlite3", 'msgmap exists');
         ok(-d "$tmpdir/v2list/all.git", 'catch-all.git directory exists');
+        @cmd = (qw(git config), "--file=$tmpdir/v2list/all.git/config",
+                qw(core.sharedRepository 0644));
 }
 
 done_testing();
diff --git a/t/v2writable.t b/t/v2writable.t
index bf8ae5e6..2d35aca3 100644
--- a/t/v2writable.t
+++ b/t/v2writable.t
@@ -32,6 +32,22 @@ my $mime = PublicInbox::MIME->create(
 
 my $im = PublicInbox::V2Writable->new($ibx, 1);
 ok($im->add($mime), 'ordinary message added');
+
+if ('ensure git configs are correct') {
+        my @cmd = (qw(git config), "--file=$mainrepo/all.git/config",
+                qw(core.sharedRepository 0644));
+        is(system(@cmd), 0, "set sharedRepository in all.git");
+        my $git0 = PublicInbox::Git->new("$mainrepo/git/0.git");
+        my $fh = $git0->popen(qw(config core.sharedRepository));
+        my $v = eval { local $/; <$fh> };
+        chomp $v;
+        is($v, '0644', 'child repo inherited core.sharedRepository');
+        $fh = $git0->popen(qw(config --bool repack.writeBitmaps));
+        $v = eval { local $/; <$fh> };
+        chomp $v;
+        is($v, 'true', 'child repo inherited repack.writeBitmaps');
+}
+
 {
         my @warn;
         local $SIG{__WARN__} = sub { push @warn, @_ };