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

Re: [PATCH 2/4] Tweak diff output further to make it a bit less distracting.

From
Junio C Hamano <junkio@cox.net>
Date
May 17, 2005, 19:08 UTC
Message-ID
<7vu0l1fz6p.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<Pine.LNX.4.58.0505170812060.18337@ppc970.osdl.org>
>>>>> "LT" == Linus Torvalds <torvalds@osdl.org> writes:

LT> There's also a real technical reason for this: since the rename format LT> would not be a valid patch for a traditional "patch" program, and if we LT> ever want to actually teach "patch" to handle it, we really need to be LT> explicit. There are tons of traditional patches around that say

LT> diff -Nur a/kernel/sched.c.old b/kernel/sched.c LT> --- a/kernel/sched.c.old LT> +++ b/kernel/sched.c LT> ...

LT> and clearly the above is _not_ a rename from "sched.c.old" to "sched.c", LT> so if we want to teach "patch" about the magic git rules, we'd have to LT> have something unambiguous that a GNU patch maintainer might be willing to LT> trigger on. The combination of the "diff -git " and "rename" markers might LT> be such a thing.

LT> So it's a combination of clarity, canonical names, and "patch" issues.

I've been thinking about doing some rename detection in diff-helper for some time. Here is what that would produce in your proposed file format (BTW, wouldn't the earlier patch ready for merge already?), if you move file frotz to file nitfol and at the same time do some edits:

    diff -git a/frotz b/frotz
    rename old frotz
    rename new nitfol
    delete file mode 100644
    --- a/frotz
    +++ /dev/null
    @@ -1,2 +0,0 @@
    -xyzzy
    -rezrov
    diff -git a/nitfol b/nitfol
    rename old frotz
    rename new nitfol
    new file mode 100644
    --- /dev/null
    +++ b/nitfol
    @@ -0,0 +1,2 @@
    +xyzzy
    +rezrov
    diff -git a/nitfol b/nitfol
    rename old frotz
    rename new nitfol
    --- a/nitfol
    +++ b/nitfol
    @@ -1,2 +1,3 @@
     xyzzy
     rezrov
    +gnusto

The basic idea is to express the pure rename with traditional two patches against /dev/null, plus optionally contents patch on top after pure rename patches.

I am still debating myself where rename lines should be, though. I cannot decide so I placed them in all three in the above example.

Previous: Linus TorvaldsNext: Linus Torvalds
Message 16 of 19 in “Tweak diff output further to make it a bit less distracting.”
  1. 2/4 Tweak diff output further to make it a bit less distracting.Junio C Hamano, May 15, 2005
  2. Petr BaudisMay 16, 2005
  3. Junio C HamanoMay 16, 2005
  4. Linus TorvaldsMay 16, 2005
  5. Junio C HamanoMay 16, 2005
  6. Matthias UrlichsMay 18, 2005
  7. Linus TorvaldsMay 18, 2005
  8. Matthias UrlichsMay 18, 2005
  9. Fix diff output take #4.Junio C Hamano, May 18, 2005
  10. Daniel BarkalowMay 17, 2005
  11. Petr BaudisMay 17, 2005
  12. Junio C HamanoMay 17, 2005
  13. Fix diff output take #3.Junio C Hamano, May 17, 2005
  14. Petr BaudisMay 17, 2005
  15. Linus TorvaldsMay 17, 2005
  16. Junio C HamanoMay 17, 2005
  17. Linus TorvaldsMay 17, 2005
  18. Junio C HamanoMay 17, 2005
  19. Linus TorvaldsMay 17, 2005

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.