Re: [PATCH] git-jump: ignore (custom) prefix in diff mode
Jeff King <peff@peff.net> writes:
Show 26 quoted lines
> On Sun, Sep 16, 2012 at 10:24:04PM -0700, Junio C Hamano wrote:
>
>> Mischa POSLAWSKY <git@shiar.nl> writes:
>>
>> > Matching the default file prefix b/ does not yield any results if config
>> > option diff.noprefix or diff.mnemonicprefix is enabled.
>> >
>> > Signed-off-by: Mischa POSLAWSKY <git@shiar.nl>
>> > ---
>> > Very useful script otherwise; thanks.
>> >
>> > contrib/git-jump/git-jump | 4 ++--
>> > 1 file changed, 2 insertions(+), 2 deletions(-)
>> >
>> > diff --git contrib/git-jump/git-jump contrib/git-jump/git-jump
>> > index a33674e..dc90cd6 100755
>> > --- contrib/git-jump/git-jump
>> > +++ contrib/git-jump/git-jump
>> > @@ -21,9 +21,9 @@ open_editor() {
>> > ...
>>
>> Makes sense to me. Peff?
>
> Yes, looks obviously correct. Thanks.
>
> Acked-by: Jeff King <peff@peff.net>Thanks.
It may not be obvious to many people, so here is tip of the day.
I knew Mischa knew that the patch was prepared with wrong src/dst prefix (notice the lack of a/ and b/), but I did not say anything special when I drove "git am". I just did the usual "git am -s3c" and the patch was applied just fine ;-)
What is happening is that:
- I didn't give '-p0" to "git am", so it thought that patch was
based on a tree that has "git-jump" directory at the top-level
of the working tree, and the file that is being patched lived at
"git-jump/git-jump" in Mischa's working tree;
- However, the official git.git tree has the corresponding file at
"contrib/git-jump/git-jump", and there is no such file at
"git-jump/git-jump".
- The three-way merge logic kicks in because of the "-3" option,
using a (fake) tree that is shaped like Mischa's tree with the
version before the patch as a common ancestor, to merge the
version "git am" thought Mischa has (i.e. no contrib/ directory)
and the version in my tree. From the point of view of the
three-way merge logic, I renamed the path to be in contrib/
directory while Mischa kept the path intact and fixed the
contents of the script. This merges cleanly to produce the
expected result.