$git->command(qw(config --get-regexp), '^remote\.');
};
for (@remotes) {
- if (/^remote\.([^.]*)\.(\S*)\s+(.*)$/) {
+ if (/^remote\.(\S+?)\.([^.\s]+)\s+(.*)$/) {
add_remote_config(\%seen, $1, $2, $3);
}
}
}
}
+sub update_remote {
+ my ($name) = @_;
+
+ my $conf = $git->config("remotes." . $name);
+ if (defined($conf)) {
+ @remotes = split(' ', $conf);
+ } elsif ($name eq 'default') {
+ undef @remotes;
+ for (sort keys %$remote) {
+ my $do_fetch = $git->config_boolean("remote." . $_ .
+ ".skipDefaultUpdate");
+ if (!defined($do_fetch) || $do_fetch ne "true") {
+ push @remotes, $_;
+ }
+ }
+ } else {
+ print STDERR "Remote group $name does not exists.\n";
+ exit(1);
+ }
+ for (@remotes) {
+ print "Updating $_\n";
+ $git->command('fetch', "$_");
+ }
+}
+
sub add_usage {
print STDERR "Usage: git remote add [-f] [-t track]* [-m master] <name> <url>\n";
exit(1);
}
}
elsif ($ARGV[0] eq 'update') {
- my $conf = $git->config("remote.fetch");
- if (defined($conf)) {
- @remotes = split(' ', $conf);
- } else {
- @remotes = sort keys %$remote;
+ if (@ARGV <= 1) {
+ update_remote("default");
+ exit(1);
}
- for (@remotes) {
- print "Fetching $_\n";
- $git->command('fetch', "$_");
+ for ($i = 1; $i < @ARGV; $i++) {
+ update_remote($ARGV[$i]);
}
}
elsif ($ARGV[0] eq 'prune') {
print STDERR " git remote add <name> <url>\n";
print STDERR " git remote show <name>\n";
print STDERR " git remote prune <name>\n";
- print STDERR " git remote update\n";
+ print STDERR " git remote update [group]\n";
exit(1);
}