From: Junio C Hamano Date: Mon, 17 Sep 2012 19:48:14 GMT Subject: Re: [PATCH] git-jump: ignore (custom) prefix in diff mode Message-ID: <7vlig8v3b5.fsf@alter.siamese.dyndns.org> In-Reply-To: <20120917173945.GA22000@sigill.intra.peff.net> Jeff King writes: > On Sun, Sep 16, 2012 at 10:24:04PM -0700, Junio C Hamano wrote: > >> Mischa POSLAWSKY 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 >> > --- >> > 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 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.