summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-04-23 13:56:34 -0700
committerJunio C Hamano <gitster@pobox.com>2015-04-29 13:17:52 -0700
commiteaa4e59c8545f61c6e61559df33dc4792e455d5a (patch)
tree502198d8fb5df6d56f347719b2c98dc68cfd99ed
parent1faac1cedca475a364c72b063c79da08caee0fe9 (diff)
downloadgit-eaa4e59c8545f61c6e61559df33dc4792e455d5a.tar.gz
merge: do not check argc to determine number of remote heads
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>
-rw-r--r--builtin/merge.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/builtin/merge.c b/builtin/merge.c
index 878f82a410..1d4fbd3288 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);