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

Re: [PATCH 2/2] git-merge-recursive-{ours,theirs}

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 21, 2008, 09:46 UTC
Message-ID
<7vy74z9l3l.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<alpine.DEB.1.00.0806201351370.6439@racer>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 19 quoted lines
>> @@ -1379,11 +1401,18 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
>>  	struct lock_file *lock = xcalloc(1, sizeof(struct lock_file));
>>  	int index_fd;
>>  
>> +	merge_recursive_variants = 0;
>>  	if (argv[0]) {
>>  		int namelen = strlen(argv[0]);
>>  		if (8 < namelen &&
>>  		    !strcmp(argv[0] + namelen - 8, "-subtree"))
>> -			subtree_merge = 1;
>> +			merge_recursive_variants = MERGE_RECURSIVE_SUBTREE;
>> +		else if (5 < namelen &&
>> +			 !strcmp(argv[0] + namelen - 5, "-ours"))
>> +			merge_recursive_variants = MERGE_RECURSIVE_OURS;
>> +		else if (7 < namelen &&
>> +			 !strcmp(argv[0] + namelen - 7, "-theirs"))
>> +			merge_recursive_variants = MERGE_RECURSIVE_THEIRS;
>
> This just cries out loud for a new function suffixcmp().

Actually, I think "git-merge-recursive-theirs" is a mistake. We should bite the bullet and give "git-merge" an ability to pass backend specific parameters to "git-merge-recursive". The new convention could be that anything that begins with -X is passed to the backend.

E.g.
	git merge -Xfavor=theirs foo
        git merge -Xsubtree=/=gitk-git paulus

As you noticed already, subtree is just a funny optional behaviour attached to recursive, so are theirs and ours. The above two would invoke git-merge-recursive like so:

	git merge-recursive -Xfavor=theirs <base> -- HEAD MERGE_HEAD
	git merge-recursive -Xsubtree=/=gitk-git <base> -- HEAD MERGE_HEAD
We could even mix these two if we are ambitious.
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 15 of 22 in “Guided merge with override”
  1. Geoff RussellJun 16, 2008
  2. Miklos VajnaJun 16, 2008
  3. Johannes SixtJun 16, 2008
  4. Miklos VajnaJun 16, 2008
  5. Sverre RabbelierJun 16, 2008
  6. Geoff RussellJun 16, 2008
  7. Junio C HamanoJun 17, 2008
  8. Johannes SchindelinJun 18, 2008
  9. Johannes SchindelinJun 18, 2008
  10. Junio C HamanoJun 18, 2008
  11. Johannes SchindelinJun 18, 2008
  12. 1/2 git-merge-file --ours, --theirsJunio C Hamano, Jun 20, 2008
  13. 2/2 git-merge-recursive-{ours,theirs}Junio C Hamano, Jun 20, 2008
  14. Johannes SchindelinJun 20, 2008
  15. Junio C HamanoJun 21, 2008
  16. Johannes SchindelinJun 21, 2008
  17. Jakub NarebskiJun 21, 2008
  18. Johannes SixtJun 17, 2008
  19. Sverre RabbelierJun 17, 2008
  20. Johannes SchindelinJun 17, 2008
  21. Sverre RabbelierJun 17, 2008
  22. Johannes SchindelinJun 17, 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.