]> Sergey Matveev's repositories - public-inbox.git/commitdiff
v2writable: hoist out fill_alternates
authorEric Wong <e@80x24.org>
Fri, 8 Mar 2019 22:52:16 +0000 (22:52 +0000)
committerEric Wong <e@80x24.org>
Fri, 8 Mar 2019 22:52:43 +0000 (22:52 +0000)
We'll be using this sub to fill $GIT_DIR/objects/info/alternates
if somebody uses clone --mirror, too

lib/PublicInbox/V2Writable.pm

index b1d8095f598408c76012f7ec8bf292f3feadde3f..bc31ffa5edc79a0425baea3244836b926bb401ca 100644 (file)
@@ -509,14 +509,12 @@ sub done {
        $self->{-inbox}->git->cleanup;
 }
 
-sub git_init {
+sub fill_alternates ($$) {
        my ($self, $epoch) = @_;
-       my $pfx = "$self->{-inbox}->{mainrepo}/git";
-       my $git_dir = "$pfx/$epoch.git";
-       my @cmd = (qw(git init --bare -q), $git_dir);
-       PublicInbox::Import::run_die(\@cmd);
 
+       my $pfx = "$self->{-inbox}->{mainrepo}/git";
        my $all = "$self->{-inbox}->{mainrepo}/all.git";
+       my @cmd;
        unless (-d $all) {
                @cmd = (qw(git init --bare -q), $all);
                PublicInbox::Import::run_die(\@cmd);
@@ -524,8 +522,7 @@ sub git_init {
                                'repack.writeBitmaps', 'true');
                PublicInbox::Import::run_die(\@cmd);
        }
-
-       @cmd = (qw/git config/, "--file=$git_dir/config",
+       @cmd = (qw/git config/, "--file=$pfx/$epoch.git/config",
                        'include.path', '../../all.git/config');
        PublicInbox::Import::run_die(\@cmd);
 
@@ -540,12 +537,20 @@ sub git_init {
                my $dir = "../../git/$i.git/objects";
                push @add, $dir if !$alts{$dir} && -d "$pfx/$i.git";
        }
-       return $git_dir unless @add;
+       return unless @add;
        open my $fh, '>>', $alt or die "open >> $alt: $!\n";
        foreach my $dir (@add) {
                print $fh "$dir\n" or die "print >> $alt: $!\n";
        }
        close $fh or die "close $alt: $!\n";
+}
+
+sub git_init {
+       my ($self, $epoch) = @_;
+       my $git_dir = "$self->{-inbox}->{mainrepo}/git/$epoch.git";
+       my @cmd = (qw(git init --bare -q), $git_dir);
+       PublicInbox::Import::run_die(\@cmd);
+       fill_alternates($self, $epoch);
        $git_dir
 }