X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=public-inbox-init;h=8847eb68fdf0a1384448a5de77404cda55f0a315;hb=f76f265a851944b5dedcc3be5f3b5224b6ebda89;hp=5fc9d3eff6fd975809d8fed5330d5a43be2654eb;hpb=e925ee9eacaac438c87471bda8c28d5edff7523e;p=public-inbox.git diff --git a/public-inbox-init b/public-inbox-init old mode 100644 new mode 100755 index 5fc9d3ef..8847eb68 --- a/public-inbox-init +++ b/public-inbox-init @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright (C) 2014, all contributors (git clone git://80x24.org/public-inbox) +# Copyright (C) 2014-2015 all contributors # License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt) use strict; use warnings; @@ -18,6 +18,7 @@ my $git_dir = shift @ARGV or usage(); my $http_url = shift @ARGV or usage(); my (@address) = @ARGV; @address or usage(); +my %seen; my $pi_config = PublicInbox::Config->default_file; my $dir = dirname($pi_config); @@ -25,8 +26,11 @@ mkpath($dir); # will croak on fatal errors my ($fh, $filename) = tempfile('pi-init-XXXXXXXX', DIR => $dir); if (-e $pi_config) { open(my $oh, '<', $pi_config) or die "unable to read $pi_config: $!\n"; - local $/; - my $old = <$oh>; + my $old; + { + local $/; + $old = <$oh>; + } print $fh $old or die "failed to write: $!\n"; close $oh or die "failed to close $pi_config: $!\n"; @@ -36,12 +40,16 @@ if (-e $pi_config) { my $conflict; foreach my $addr (@address) { my $found = $cfg->lookup($addr); - if ($found && ($found->{listname} ne $name)) { - print STDERR - "`$addr' already defined for ", - "`$found->{listname}',\n", - "does not match intend `$name'\n"; - $conflict = 1; + if ($found) { + if ($found->{listname} ne $name) { + print STDERR + "`$addr' already defined for ", + "`$found->{listname}',\n", + "does not match intend `$name'\n"; + $conflict = 1; + } else { + $seen{lc($addr)} = 1; + } } } @@ -54,7 +62,8 @@ my @x = (qw/git config/, "--file=$filename"); $git_dir = expand_filename($git_dir); x(qw(git init -q --bare), $git_dir); foreach my $addr (@address) { - x(@x, "$pfx.address", $addr); + next if $seen{lc($addr)}; + x(@x, "--add", "$pfx.address", $addr); } x(@x, "$pfx.url", $http_url); x(@x, "$pfx.mainrepo", $git_dir);