Teach git-remote to update existing remotes by fetching from them

This allows users to use the command "git remote update" to update all
remotes that are being tracked in the repository.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Theodore Ts'o 2007-02-18 23:00:00 -05:00 коммит произвёл Junio C Hamano
Родитель 0bce7a52f2
Коммит 1e592d65b5
3 изменённых файлов: 26 добавлений и 1 удалений

Просмотреть файл

@ -439,6 +439,10 @@ pull.octopus::
pull.twohead::
The default merge strategy to use when pulling a single branch.
remote.fetch::
The list of remotes which are fetched by "git remote update".
See gitlink:git-remote[1].
remote.<name>.url::
The URL of a remote repository. See gitlink:git-fetch[1] or
gitlink:git-push[1].

Просмотреть файл

@ -13,6 +13,7 @@ SYNOPSIS
'git-remote' add <name> <url>
'git-remote' show <name>
'git-remote' prune <name>
'git-remote' update
DESCRIPTION
-----------
@ -40,7 +41,14 @@ Gives some information about the remote <name>.
Deletes all stale tracking branches under <name>.
These stale branches have already been removed from the remote repository
referenced by <name>, but are still locally available in "remotes/<name>".
referenced by <name>, but are still locally available in
"remotes/<name>".
'update'::
Fetch updates for the remotes in the repository. By default all remotes
are updated, but this can be configured via the configuration parameter
'remote.fetch'. (See gitlink:git-config[1]).
DISCUSSION

Просмотреть файл

@ -303,6 +303,18 @@ elsif ($ARGV[0] eq 'show') {
show_remote($ARGV[$i], $ls_remote);
}
}
elsif ($ARGV[0] eq 'update') {
my $conf = $git->config("remote.fetch");
if (defined($conf)) {
@remotes = split(' ', $conf);
} else {
@remotes = sort keys %$remote;
}
for (@remotes) {
print "Fetching $_\n";
$git->command('fetch', "$_");
}
}
elsif ($ARGV[0] eq 'prune') {
my $ls_remote = 1;
my $i;
@ -360,5 +372,6 @@ else {
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";
exit(1);
}