Skip to contentSkip to conversation

RFH: is the current file available to a custom merge driver?

DISCUSSION Eric Raible 2 participants 3 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

[Note: this is a resend - the initial attempt got no responses]

Hello All -

In writing a custom merge driver to support $dayjob requirements I've failed to find a simple way of getting the current file name that the driver is supposed to be merging.

I of course have the "ancestor", "ours", and "theirs" temporary files, but for Ui purposes I'd like to know the filename as well.

As a workaround, I'm grepping for the git-hash-object of %A (aka "ours) from the output of "git ls-tree -r HEAD".

I've examined the environment, and saw nothing relevant. "git-ls-files -u" isn't useful, since the items aren't unmerged yet.

Can anyone offer hints/help/tips?

Thanks - Eric

git version 1.7.0.2.msysgit.0

#1 lore raw

Hi Eric,

Quoted 8 lines · Eric Raible

In writing a custom merge driver to support $dayjob requirements I've failed to find a simple way of getting the current file name that the driver is supposed to be merging.

I of course have the "ancestor", "ours", and "theirs" temporary files, but for Ui purposes I'd like to know the filename as well.

It's not available. You can try modifying ll-merge.c to expose it if you have an idea about how that should work.

#2 lore raw
Quoted 9 lines · Jonathan Nieder

Hi Eric,

Quoted 5 lines · Eric Raible

In writing a custom merge driver to support $dayjob requirements I've failed to find a simple way of getting the current file name that the driver is supposed to be merging.

Quoted 7 lines
Quoted 3 lines

I of course have the "ancestor", "ours", and "theirs" temporary files, but for Ui purposes I'd like to know the filename as well.

It's not available. You can try modifying ll-merge.c to expose it if you have an idea about how that should work. .

Thanks Jonathan for the (very!) quick response, but since time is short I think I'll stick with my current technique (grepping $(git ls-tree -r HEAD) for $(git hash-object %A))