git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git am oddity

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 31, 2014, 22:15 UTC
Message-ID
<xmqqbnwm2ex1.fsf@gitster.dls.corp.google.com>
In-Reply-To
<CAGdFq_gZoiE_ah0VT5ZfQwg-zHNj6Q-RSB80f=BTf=U6+9L5UA@mail.gmail.com>
Sverre Rabbelier <srabbelier@gmail.com> writes:
Show 33 quoted lines
> Hi,
>
> I noticed something very odd with git am, and have been able to narrow
> it down to a minimal example.
>
>  git init tmp
>  cd tmp
>  mkdir -p foo/bar/baz
>  cd foo/bar/baz
>  echo file > file
>  git add file
>  git commit -m "1"
>  echo other > other
>  echo more >> file
>  git add file other
>  git commit -m "my test"
>  git format-patch HEAD~..
>  git reset --hard HEAD~
>  # apply the patch in the current directory, chop off the leading directories
>  git am -3 -p 3 0001-my-test.patch
>  cd ../../..
>  git ls-files
>
> Expected output:
> foo/bar/baz/file
> foo/bar/baz/other
>
> Actual output:
> baz/other # the file addition was applied to the root of the
> repository, instead of the current directory
> foo/bar/baz/file # the file modification was correctly applied, yay
>
> Is this expected behavior?
As you are doing -3 (not the -p3), it would have:
 * noticed that the patch is trying to update "baz/file";
 * noticed that there is no "baz/file" but it could salvage the
   patch by doing a three-way merge, in case that the patch was
   prepared against a tree that moved path "foo/bar/baz" to "baz";
   and
 * such a three-way merge succeeds cleanly for a path whose movement
   was detected correctly.

So it does not look odd at all to me (the use of "-p 3" does look odd, but I know this is an effort to come up with a minimum example, so it is understandable that it may look contribed ;-).

Previous: Sverre RabbelierNext: Sverre Rabbelier
Message 2 of 3 in “git am oddity”
  1. Sverre RabbelierMar 31, 2014
  2. Junio C HamanoMar 31, 2014
  3. Sverre RabbelierMar 31, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.