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

[PATCH 04/14] merge: clarify "pulling into void" special case

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 26, 2015, 05:25 UTC
Message-ID
<1430025967-24479-5-git-send-email-gitster@pobox.com>
In-Reply-To
<1430025967-24479-1-git-send-email-gitster@pobox.com>

Instead of having it as one of the three if/elseif/.. case arms, test the condition and handle this special case upfront. This makes it easier to follow the flow of logic.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin/merge.c | 35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)
diff --git a/builtin/merge.c b/builtin/merge.c
index 8477878..878f82a 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1178,23 +1178,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 		usage_with_options(builtin_merge_usage,
 			builtin_merge_options);
 
-	/*
-	 * This could be traditional "merge <msg> HEAD <commit>..."  and
-	 * the way we can tell it is to see if the second token is HEAD,
-	 * but some people might have misused the interface and used a
-	 * commit-ish that is the same as HEAD there instead.
-	 * Traditional format never would have "-m" so it is an
-	 * additional safety measure to check for it.
-	 */
-
-	if (!have_message && head_commit &&
-	    is_old_style_invocation(argc, argv, head_commit->object.sha1)) {
-		strbuf_addstr(&merge_msg, argv[0]);
-		head_arg = argv[1];
-		argv += 2;
-		argc -= 2;
-		remoteheads = collect_parents(head_commit, &head_subsumed, argc, argv);
-	} else if (!head_commit) {
+	if (!head_commit) {
 		struct commit *remote_head;
 		/*
 		 * If the merged head is a valid one there is no reason
@@ -1217,6 +1201,23 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 		update_ref("initial pull", "HEAD", remote_head->object.sha1,
 			   NULL, 0, UPDATE_REFS_DIE_ON_ERR);
 		goto done;
+	}
+
+	/*
+	 * This could be traditional "merge <msg> HEAD <commit>..."  and
+	 * the way we can tell it is to see if the second token is HEAD,
+	 * but some people might have misused the interface and used a
+	 * commit-ish that is the same as HEAD there instead.
+	 * Traditional format never would have "-m" so it is an
+	 * additional safety measure to check for it.
+	 */
+	if (!have_message &&
+	    is_old_style_invocation(argc, argv, head_commit->object.sha1)) {
+		strbuf_addstr(&merge_msg, argv[0]);
+		head_arg = argv[1];
+		argv += 2;
+		argc -= 2;
+		remoteheads = collect_parents(head_commit, &head_subsumed, argc, argv);
 	} else {
 		struct strbuf merge_names = STRBUF_INIT;
 
-- 
2.4.0-rc3-238-g36f5934
Previous: Junio C HamanoNext: Junio C Hamano
Message 12 of 42 in “[BUG] "git pull" will regress between 'master' and 'pu'”
  1. Junio C HamanoApr 19, 2015
  2. Jeff KingApr 19, 2015
  3. brian m. carlsonApr 19, 2015
  4. Jeff KingApr 19, 2015
  5. Junio C HamanoApr 20, 2015
  6. Jeff KingApr 20, 2015
  7. Junio C HamanoApr 20, 2015
  8. 00/14 Teach "git merge FETCH_HEAD" octopus mergesJunio C Hamano, Apr 26, 2015
  9. 01/14 merge: simplify code flowJunio C Hamano, Apr 26, 2015
  10. 02/14 t5520: style fixesJunio C Hamano, Apr 26, 2015
  11. 03/14 t5520: test pulling an octopus into an unborn branchJunio C Hamano, Apr 26, 2015
  12. 04/14 merge: clarify "pulling into void" special caseJunio C Hamano, Apr 26, 2015
  13. 05/14 merge: do not check argc to determine number of remote headsJunio C Hamano, Apr 26, 2015
  14. 06/14 merge: small leakfix and code simplificationJunio C Hamano, Apr 26, 2015
  15. 07/14 merge: clarify collect_parents() logicJunio C Hamano, Apr 26, 2015
  16. 08/14 merge: split reduce_parents() out of collect_parents()Junio C Hamano, Apr 26, 2015
  17. 09/14 merge: narrow scope of merge_namesJunio C Hamano, Apr 26, 2015
  18. 10/14 merge: extract prepare_merge_message() logic outJunio C Hamano, Apr 26, 2015
  19. 11/14 merge: make collect_parents() auto-generate the merge messageJunio C Hamano, Apr 26, 2015
  20. 12/14 merge: decide if we auto-generate the message early in collect_parents()Junio C Hamano, Apr 26, 2015
  21. 13/14 merge: handle FETCH_HEAD internallyJunio C Hamano, Apr 26, 2015
  22. 14/14 merge: deprecate 'git merge <message> HEAD <commit>' syntaxJunio C Hamano, Apr 26, 2015
  23. 00/15 Teach "git merge FETCH_HEAD" octopus mergesJunio C Hamano, Apr 29, 2015
  24. 01/15 merge: test the top-level merge driverJunio C Hamano, Apr 29, 2015
  25. 02/15 merge: simplify code flowJunio C Hamano, Apr 29, 2015
  26. 03/15 t5520: style fixesJunio C Hamano, Apr 29, 2015
  27. Paul TanMay 1, 2015
  28. Junio C HamanoMay 3, 2015
  29. 04/15 t5520: test pulling an octopus into an unborn branchJunio C Hamano, Apr 29, 2015
  30. 05/15 merge: clarify "pulling into void" special caseJunio C Hamano, Apr 29, 2015
  31. 06/15 merge: do not check argc to determine number of remote headsJunio C Hamano, Apr 29, 2015
  32. 07/15 merge: small leakfix and code simplificationJunio C Hamano, Apr 29, 2015
  33. 08/15 merge: clarify collect_parents() logicJunio C Hamano, Apr 29, 2015
  34. 09/15 merge: split reduce_parents() out of collect_parents()Junio C Hamano, Apr 29, 2015
  35. 10/15 merge: narrow scope of merge_namesJunio C Hamano, Apr 29, 2015
  36. 11/15 merge: extract prepare_merge_message() logic outJunio C Hamano, Apr 29, 2015
  37. 12/15 merge: make collect_parents() auto-generate the merge messageJunio C Hamano, Apr 29, 2015
  38. 13/15 merge: decide if we auto-generate the message early in collect_parents()Junio C Hamano, Apr 29, 2015
  39. 14/15 merge: handle FETCH_HEAD internallyJunio C Hamano, Apr 29, 2015
  40. 15/15 merge: deprecate 'git merge <message> HEAD <commit>' syntaxJunio C Hamano, Apr 29, 2015
  41. Junio C HamanoApr 20, 2015
  42. Johannes SchindelinApr 21, 2015

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.