git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2] remote show: fix the -n option

From
OMOlivier Marin <dkr+ml.git@free.fr>
Date
Jun 9, 2008, 15:58 UTC
Message-ID
<484D5322.6050309@free.fr>
In-Reply-To
<484C7DCC.6080303@free.fr>
From: Olivier Marin <dkr@freesurf.fr>

The perl version accepted a -n flag, to show local informations only without querying remote heads, that seems to have been lost in the C revrite.

This restores the older behaviour and add a test case.
Signed-off-by: Olivier Marin <dkr@freesurf.fr>
---
 builtin-remote.c  |   44 +++++++++++++++++++++++---------------------
 t/t5505-remote.sh |   17 +++++++++++++++++
 2 files changed, 40 insertions(+), 21 deletions(-)
diff --git a/builtin-remote.c b/builtin-remote.c
index c49f00f..efe74c7 100644
--- a/builtin-remote.c
+++ b/builtin-remote.c
@@ -421,10 +421,10 @@ static void show_list(const char *title, struct path_list *list)
 
 static int show_or_prune(int argc, const char **argv, int prune)
 {
-	int dry_run = 0, result = 0;
+	int no_query = 0, result = 0;
 	struct option options[] = {
 		OPT_GROUP("show specific options"),
-		OPT__DRY_RUN(&dry_run),
+		OPT_BOOLEAN('n', NULL, &no_query, "do not query remotes"),
 		OPT_END()
 	};
 	struct ref_states states;
@@ -442,21 +442,23 @@ static int show_or_prune(int argc, const char **argv, int prune)
 		struct transport *transport;
 		const struct ref *ref;
 		struct strbuf buf;
-		int i, got_states;
+		int i;
 
 		states.remote = remote_get(*argv);
 		if (!states.remote)
 			return error("No such remote: %s", *argv);
-		transport = transport_get(NULL, states.remote->url_nr > 0 ?
-			states.remote->url[0] : NULL);
-		ref = transport_get_remote_refs(transport);
-		transport_disconnect(transport);
 
 		read_branches();
-		got_states = get_ref_states(ref, &states);
-		if (got_states)
-			result = error("Error getting local info for '%s'",
-					states.remote->name);
+
+		if (!no_query) {
+			transport = transport_get(NULL,
+				states.remote->url_nr > 0 ?
+				states.remote->url[0] : NULL);
+			ref = transport_get_remote_refs(transport);
+			transport_disconnect(transport);
+
+			get_ref_states(ref, &states);
+		}
 
 		if (prune) {
 			for (i = 0; i < states.stale.nr; i++) {
@@ -486,17 +488,17 @@ static int show_or_prune(int argc, const char **argv, int prune)
 			printf("\n");
 		}
 
-		if (got_states)
-			continue;
-		strbuf_init(&buf, 0);
-		strbuf_addf(&buf, "  New remote branch%%s (next fetch will "
-			"store in remotes/%s)", states.remote->name);
-		show_list(buf.buf, &states.new);
-		strbuf_release(&buf);
-		show_list("  Stale tracking branch%s (use 'git remote prune')",
-				&states.stale);
-		show_list("  Tracked remote branch%s",
+		if (!no_query) {
+			strbuf_init(&buf, 0);
+			strbuf_addf(&buf, "  New remote branch%%s (next fetch "
+				"will store in remotes/%s)", states.remote->name);
+			show_list(buf.buf, &states.new);
+			strbuf_release(&buf);
+			show_list("  Stale tracking branch%s (use 'git remote "
+				"prune')", &states.stale);
+			show_list("  Tracked remote branch%s",
 				&states.tracked);
+		}
 
 		if (states.remote->push_refspec_nr) {
 			printf("  Local branch%s pushed with 'git push'\n   ",
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh
index 0d7ed1f..c6a7bfb 100755
--- a/t/t5505-remote.sh
+++ b/t/t5505-remote.sh
@@ -138,6 +138,23 @@ test_expect_success 'show' '
 	 test_cmp expect output)
 '
 
+cat > test/expect << EOF
+* remote origin
+  URL: $(pwd)/one/.git
+  Remote branch merged with 'git pull' while on branch master
+    master
+  Local branches pushed with 'git push'
+    master:upstream +refs/tags/lastbackup
+EOF
+
+test_expect_success 'show -n' '
+	(mv one one.unreachable &&
+	 cd test &&
+	 git remote show -n origin > output &&
+	 mv ../one.unreachable ../one &&
+	 test_cmp expect output)
+'
+
 test_expect_success 'prune' '
 	(cd one &&
 	 git branch -m side side2) &&
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 15 of 36 in “remote show/prune: strange -n(--dry-run) option.”
  1. Olivier MarinJun 8, 2008
  2. Documentation/git-remote.txt: remove description for useless -n optionOlivier Marin, Jun 8, 2008
  3. Documentation/git-remote.txt: remove description for useless -n optiondkr+ml.git@free.fr, Jun 8, 2008
  4. Junio C HamanoJun 8, 2008
  5. Olivier MarinJun 9, 2008
  6. remote show: fix the -n optionOlivier Marin, Jun 9, 2008
  7. Johannes SchindelinJun 9, 2008
  8. Olivier MarinJun 9, 2008
  9. Johannes SchindelinJun 9, 2008
  10. Olivier MarinJun 9, 2008
  11. Johannes SchindelinJun 9, 2008
  12. Olivier MarinJun 9, 2008
  13. Olivier MarinJun 9, 2008
  14. Johannes SchindelinJun 9, 2008
  15. remote show: fix the -n optionOlivier Marin, Jun 9, 2008
  16. Johannes SchindelinJun 9, 2008
  17. Olivier MarinJun 9, 2008
  18. Johannes SchindelinJun 9, 2008
  19. Olivier MarinJun 9, 2008
  20. builtin-remote: make reuse of code easier by not die()ingJohannes Schindelin, Jun 9, 2008
  21. Olivier MarinJun 9, 2008
  22. Junio C HamanoJun 10, 2008
  23. Shawn O. PearceJun 10, 2008
  24. Johannes SchindelinJun 10, 2008
  25. 0/4 remote show/prune improvementOlivier Marin, Jun 10, 2008
  26. 1/4 remote show: fix the -n optionOlivier Marin, Jun 10, 2008
  27. 2/4 builtin-remote: split show_or_prune() in two separate functionsOlivier Marin, Jun 10, 2008
  28. 3/4 remote prune: print the list of pruned branchesOlivier Marin, Jun 10, 2008
  29. Junio C HamanoJun 12, 2008
  30. Olivier MarinJun 12, 2008
  31. 4/4 remote show: list tracked remote branches with -nOlivier Marin, Jun 10, 2008
  32. Junio C HamanoJun 10, 2008
  33. Olivier MarinJun 10, 2008
  34. Jakub NarebskiJun 10, 2008
  35. Olivier MarinJun 10, 2008
  36. Jakub NarebskiJun 10, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.