summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2007-02-19 04:00:00 (GMT)
committerJunio C Hamano <junkio@cox.net>2007-02-20 02:34:33 (GMT)
commit1e592d65b50dbec87fde9f4ef1b7fd8d90bf7b8c (patch)
treeab3514af964cda2bdd08b64bb1c5eb05342affd7
parent0bce7a52f2b723bf6717be2951df7c0a49337592 (diff)
downloadgit-1e592d65b50dbec87fde9f4ef1b7fd8d90bf7b8c.zip
git-1e592d65b50dbec87fde9f4ef1b7fd8d90bf7b8c.tar.gz
git-1e592d65b50dbec87fde9f4ef1b7fd8d90bf7b8c.tar.bz2
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>
-rw-r--r--Documentation/config.txt4
-rw-r--r--Documentation/git-remote.txt10
-rwxr-xr-xgit-remote.perl13
3 files changed, 26 insertions, 1 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 3865535..d8e696f 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -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].
diff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt
index a60c31a..06ba2e6 100644
--- a/Documentation/git-remote.txt
+++ b/Documentation/git-remote.txt
@@ -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
diff --git a/git-remote.perl b/git-remote.perl
index c56c5a8..6e473ec 100755
--- a/git-remote.perl
+++ b/git-remote.perl
@@ -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);
}