From c4aa293b2320feb805c5afeaa373f608e5bc8618 Mon Sep 17 00:00:00 2001 From: "Eric Wong (Contractor, The Linux Foundation)" Date: Fri, 30 Mar 2018 17:46:31 +0000 Subject: v2: respect core.sharedRepository in git configs Ensure -convert and -compact do not make repositories unreadable on live servers. --- lib/PublicInbox/InboxWritable.pm | 5 +---- lib/PublicInbox/V2Writable.pm | 26 +++++++++++++++----------- 2 files changed, 16 insertions(+), 15 deletions(-) (limited to 'lib/PublicInbox') diff --git a/lib/PublicInbox/InboxWritable.pm b/lib/PublicInbox/InboxWritable.pm index 92b9016e..5c11a36c 100644 --- a/lib/PublicInbox/InboxWritable.pm +++ b/lib/PublicInbox/InboxWritable.pm @@ -168,10 +168,7 @@ sub import_mbox { sub _read_git_config_perm { my ($self) = @_; my @cmd = qw(config); - if (($self->{version} ||= 1) == 2) { - push @cmd, "--file=$self->{mainrepo}/all.git/config"; - } - chomp(my $perm = $self->git->qx(@cmd, 'core.sharedRepository')); + chomp(my $perm = $self->git->qx('config', 'core.sharedRepository')); $perm; } diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index 34f13e26..c4368ccc 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -50,6 +50,7 @@ sub new { } $nparts = nproc() if ($nparts == 0); + $v2ibx = PublicInbox::InboxWritable->new($v2ibx); my $self = { -inbox => $v2ibx, im => undef, # PublicInbox::Import @@ -193,20 +194,23 @@ sub idx_init { # frequently activated. delete $ibx->{$_} foreach (qw(git mm search)); - $self->lock_acquire; + $ibx->umask_prepare; + $ibx->with_umask(sub { + $self->lock_acquire; - # first time initialization, first we create the skeleton pipe: - my $skel = $self->{skel} = PublicInbox::SearchIdxSkeleton->new($self); + # first time initialization, first we create the skeleton pipe: + my $skel = PublicInbox::SearchIdxSkeleton->new($self); + $self->{skel} = $skel; - # need to create all parts before initializing msgmap FD - my $max = $self->{partitions} - 1; - my $idx = $self->{idx_parts} = []; - for my $i (0..$max) { - push @$idx, PublicInbox::SearchIdxPart->new($self, $i, $skel); - } + # need to create all parts before initializing msgmap FD + my $max = $self->{partitions} - 1; + @{$self->{idx_parts}} = map { + PublicInbox::SearchIdxPart->new($self, $_, $skel); + } (0..$max); - # Now that all subprocesses are up, we can open the FD for SQLite: - $skel->_msgmap_init->{dbh}->begin_work; + # Now that all subprocesses are up, we can open the FD for SQLite: + $skel->_msgmap_init->{dbh}->begin_work; + }); } sub purge_oids { -- cgit v1.2.3-24-ge0c7