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

Re: [PATCH] git apply: do not match beginning in special unidiff-zero case

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 30, 2008, 19:54 UTC
Message-ID
<7vfxomgtxc.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<20080830190302.GA29851@localhost>
Clemens Buchacher <drizzd@aon.at> writes:
> If a unidiff patch without any context modifies the second line, it does
> not match the beginning, even though oldpos == 1.

Heh, it seems we independently reached the same patch, so I'll squash in your new test.

Having did all this, I have to warn you, git-gui, and anybody who is tempted to use --unidiff-zero in "add -i [e]dit" that the -U0 format is inherently unreliable _unless the patch you are feeding is perfect_.

By reducing the context, especially when you have only addition without deletion next to it (iow, "modification to an existing line"), the only information as to where that line needs to be inserted that you are telling "apply" is the postimage offset, so you have to be absolutely sure that the hunk header "@@ -K,L +M,N @@" you are feeding has the correct value for "M".

For git-gui's "pick and apply", you should be able to, but once you start allowing random manual editing of hunks, by definition the patch is _not_ perfect ("add -i [e]dit" even admits that it does not know what it is doing by passing --recount to "apply").

So try to avoid --unidiff-zero. git-gui should have _enough_ information to add surrounding context back to the lines the user picked from the UI, and I do not see a reason other than sheer lazyness for it to be using the option.

Previous: Clemens BuchacherNext: Junio C Hamano
Message 5 of 17 in “git gui: show diffs with a minimum of 1 context line”
  1. git gui: show diffs with a minimum of 1 context lineClemens Buchacher, Aug 30, 2008
  2. git gui: use apply --unidiff-zero when staging hunks without contextClemens Buchacher, Aug 30, 2008
  3. Junio C HamanoAug 30, 2008
  4. git apply: do not match beginning in special unidiff-zero caseClemens Buchacher, Aug 30, 2008
  5. Junio C HamanoAug 30, 2008
  6. git-apply: Loosen "match_beginning" logicJunio C Hamano, Aug 30, 2008
  7. Johannes SixtAug 30, 2008
  8. Clemens BuchacherAug 30, 2008
  9. Junio C HamanoAug 30, 2008
  10. Clemens BuchacherAug 30, 2008
  11. Shawn O. PearceSep 1, 2008
  12. Junio C HamanoAug 30, 2008
  13. Junio C HamanoAug 30, 2008
  14. git gui: show diffs with a minimum of 1 context lineClemens Buchacher, Aug 30, 2008
  15. Shawn O. PearceSep 1, 2008
  16. Clemens BuchacherSep 1, 2008
  17. Shawn O. PearceSep 1, 2008

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.