All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/5] Add the configuration option skipFetchAll
@ 2009-11-09 20:11 Björn Gustavsson
  0 siblings, 0 replies; only message in thread
From: Björn Gustavsson @ 2009-11-09 20:11 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano

Implement the configuration skipFetchAll option to allow
certain remotes to be skipped when doing 'git fetch --all' and
'git remote update'. The existing skipDefaultUpdate variable
is still honored (by 'git fetch --all' and 'git remote update').
(If both are set in the configuration file with different values,
the value of the last occurrence will be used.)

Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com>
---
 Documentation/config.txt  |    8 +++++++-
 builtin-fetch.c           |    3 ++-
 remote.c                  |    3 ++-
 t/t5514-fetch-multiple.sh |   40 +++++++++++++++++++++++++++++++++++++---
 4 files changed, 48 insertions(+), 6 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index d1e2120..348b367 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -1394,7 +1394,13 @@ remote.<name>.mirror::
 
 remote.<name>.skipDefaultUpdate::
 	If true, this remote will be skipped by default when updating
-	using the update subcommand of linkgit:git-remote[1].
+	using linkgit:git-fetch[1] or the `update` subcommand of
+	linkgit:git-remote[1].
+
+remote.<name>.skipFetchAll::
+	If true, this remote will be skipped by default when updating
+	using linkgit:git-fetch[1] or the `update` subcommand of
+	linkgit:git-remote[1].
 
 remote.<name>.receivepack::
 	The default program to execute on the remote side when pushing.  See
diff --git a/builtin-fetch.c b/builtin-fetch.c
index a5a70a0..945dfd8 100644
--- a/builtin-fetch.c
+++ b/builtin-fetch.c
@@ -690,7 +690,8 @@ static void set_option(const char *name, const char *value)
 static int get_one_remote_for_fetch(struct remote *remote, void *priv)
 {
 	struct string_list *list = priv;
-	string_list_append(remote->name, list);
+	if (!remote->skip_default_update)
+		string_list_append(remote->name, list);
 	return 0;
 }
 
diff --git a/remote.c b/remote.c
index 73d33f2..beaf9fb 100644
--- a/remote.c
+++ b/remote.c
@@ -396,7 +396,8 @@ static int handle_config(const char *key, const char *value, void *cb)
 		remote->mirror = git_config_bool(key, value);
 	else if (!strcmp(subkey, ".skipdefaultupdate"))
 		remote->skip_default_update = git_config_bool(key, value);
-
+	else if (!strcmp(subkey, ".skipfetchall"))
+		remote->skip_default_update = git_config_bool(key, value);
 	else if (!strcmp(subkey, ".url")) {
 		const char *v;
 		if (git_config_string(&v, key, value))
diff --git a/t/t5514-fetch-multiple.sh b/t/t5514-fetch-multiple.sh
index 69c64ab..b737332 100755
--- a/t/t5514-fetch-multiple.sh
+++ b/t/t5514-fetch-multiple.sh
@@ -94,9 +94,6 @@ test_expect_success 'git fetch --multiple (but only one remote)' '
 cat > expect << EOF
   one/master
   one/side
-  origin/HEAD -> origin/master
-  origin/master
-  origin/side
   two/another
   two/master
   two/side
@@ -105,6 +102,7 @@ EOF
 test_expect_success 'git fetch --multiple (two remotes)' '
 	(git clone one test4 &&
 	 cd test4 &&
+	 git remote rm origin &&
 	 git remote add one ../one &&
 	 git remote add two ../two &&
 	 git fetch --multiple one two &&
@@ -117,4 +115,40 @@ test_expect_success 'git fetch --multiple (bad remote names)' '
 	 test_must_fail git fetch --multiple four)
 '
 
+
+test_expect_success 'git fetch --all (skipFetchAll)' '
+	(cd test4 &&
+	 for b in $(git branch -r)
+	 do
+		git branch -r -d $b || break
+	 done &&
+	 git remote add three ../three &&
+	 git config remote.three.skipFetchAll true &&
+	 git fetch --all &&
+	 git branch -r > output &&
+	 test_cmp ../expect output)
+'
+
+cat > expect << EOF
+  one/master
+  one/side
+  three/another
+  three/master
+  three/side
+  two/another
+  two/master
+  two/side
+EOF
+
+test_expect_success 'git fetch --multiple (ignoring skipFetchAll)' '
+	(cd test4 &&
+	 for b in $(git branch -r)
+	 do
+		git branch -r -d $b || break
+	 done &&
+	 git fetch --multiple one two three &&
+	 git branch -r > output &&
+	 test_cmp ../expect output)
+'
+
 test_done
-- 
1.6.5.1.69.g36942

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2009-11-09 20:11 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-09 20:11 [PATCH 3/5] Add the configuration option skipFetchAll Björn Gustavsson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.