Re: [PATCH 0/2] Custom low-level merge driver support.
- From
Junio C Hamano <junkio@cox.net>
- Date
- Apr 18, 2007, 19:00 UTC
- Message-ID
- <7vzm55fqyv.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <alpine.LFD.0.98.0704181136360.2828@woody.linux-foundation.org>
Linus Torvalds <torvalds@linux-foundation.org> writes:
Show 13 quoted lines
> On Wed, 18 Apr 2007, Junio C Hamano wrote: >> >> While I agree with all of the above, I am currently fighting >> with a back-to-drawing-board design problem. >> >> The series made the low-level 3-way merge machinery >> customizable, which is a progress, but I think merge-recursive >> needs a hook to affect middle-level merge decision, similar to >> what git-merge-one-file does. > > Hmm. I think that it's not so much a "hook", as a "recursive merge is a > separate merge policy altogether, that just *defaults* to the same final > merge policy".
I suspect I did not state my problem clearly.
> For example, for a three-way merge, it makes sense to do the three-way > merge for the "internal" merge too. But it might be that that isn't true > for all strategies.
Yes, that is what I alluded to in one of my previous message, but I think the "foo-recursive" idea is a good one. I was planning to give only "3-way" or "pick ancestor" choice to external low-level merge drivers.
But I think that is a separate issue.
The logic I said I wanted to override in the message you are responding to is the big toplevel if () else if () ... chain in process_entry(), and the nested if () else if () ... logic in merge_file(). They roughly implement what git-merge-one-file does.
Currently low-level 3-way merge drivers are invoked only in some cases, exactly where git-merge-one-file used to invoke "RCS merge". The specific case of RelNotes symlink I wanted to override is one of the cases that ll_merge() is not even invoked.