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

[PATCH 05/14] merge: do not check argc to determine number of remote heads

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

To reject merging multiple commits into an unborn branch, we check argc, thinking that collect_parents() that reads the remaining command line arguments from <argc, argv> will give us the same number of commits as its input, i.e. argc.

Because what we really care about is the number of commits, let the function run and then make sure it returns only one commit instead.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin/merge.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/builtin/merge.c b/builtin/merge.c
index 878f82a..1d4fbd3 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1185,9 +1185,6 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 		 * to forbid "git merge" into a branch yet to be born.
 		 * We do the same for "git pull".
 		 */
-		if (argc != 1)
-			die(_("Can merge only exactly one commit into "
-				"empty head"));
 		if (squash)
 			die(_("Squash commit into empty head not supported yet"));
 		if (fast_forward == FF_NO)
@@ -1197,6 +1194,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 		remote_head = remoteheads->item;
 		if (!remote_head)
 			die(_("%s - not something we can merge"), argv[0]);
+		if (remoteheads->next)
+			die(_("Can merge only exactly one commit into empty head"));
 		read_empty(remote_head->object.sha1, 0);
 		update_ref("initial pull", "HEAD", remote_head->object.sha1,
 			   NULL, 0, UPDATE_REFS_DIE_ON_ERR);
-- 
2.4.0-rc3-238-g36f5934
Previous: Junio C HamanoNext: Junio C Hamano
Message 13 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.