ll-merge: pass the original path to external drivers
commitef45bb1f8156030446658d5bfb3983ce214a9e16
authorJunio C Hamano <gitster@pobox.com>
Thu, 4 Jun 2015 22:10:29 +0000 (4 15:10 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 4 Jun 2015 22:36:32 +0000 (4 15:36 -0700)
tree7f975d0ae99e0b6d6482e26db55b92db988a557c
parentfdf96a20acf96a6ac538df8113b2aafd6ed71d50
ll-merge: pass the original path to external drivers

The interface to custom low-level merge driver was modeled to be
capable of driving programs like "merge" (from the RCS suite) that
can produce result solely by looking at three files that hold
contents of common ancestor, ours and theirs.  The information we
feed to the external drivers via the command line placeholders %O,
%A, and %B were designed to be purely about contents by giving
names of the temporary files that hold these variants without
exposing the original pathname.  No matter where the result goes,
merging the same three variants should produce the same result,
contents is the king, that is the Git way.

The external driver interface, however, is meant to help people to
step outside the Git worldview, and sometimes people want to know
the final path that the resulting merged contents would be stored
in.  Expose this to the external drivers via a new placeholder %P.

Requested-by: Andreas Gondek
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/gitattributes.txt
ll-merge.c
t/t6026-merge-attr.sh