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

[RFH] shifting xdiff hunks?

From
Junio C Hamano <junkio@cox.net>
Date
Apr 13, 2006, 06:30 UTC
Message-ID
<7vmzeqyolw.fsf@assigned-by-dhcp.cox.net>

I was looking at one diff produced from my work-in-progress, which looked like this...

    diff --git a/Documentation/git.txt b/Documentation/git.txt
    index 06b2e53..f72abfc 100644
    --- a/Documentation/git.txt
    +++ b/Documentation/git.txt
    @@ -265,6 +265,9 @@ gitlink:git-checkout[1]::
     gitlink:git-cherry-pick[1]::
            Cherry-pick the effect of an existing commit.
    +gitlink:git-clean[1]::
    +       Remove untracked files from the working tree.
    +
     gitlink:git-clone[1]::
            Clones a repository into a new directory.
    @@ -318,6 +321,9 @@ gitlink:git-resolve[1]::
     gitlink:git-revert[1]::
            Revert an existing commit.
    +
    +gitlink:git-rm[1]::
    +       Remove files from the working tree and from the index.
     gitlink:git-shortlog[1]::
            Summarizes 'git log' output.

The first hunk begins by an addition of a couple of non-blank line followed by an addition of a blank line. The second hunk, while it does the same thing, is shown differently.

Now, from correctness point of view, this is not a problem at all, but I am wondering if xdiff can help to always shift the hunk down or up to consistently produce one way or another (personally I feel the former is easier to read).

Here is a rough sketch of what I think I want. When we have additions, as long as the first line added happens to match the first line that is common between the versions that comes after the added hunk (that is, in the case of the second hunk above, the empty line before "gitlink:git-rm[1]" happens to match the empty line after the added three lines), roll the hunk down by one, until you cannot roll it down anymore.

Just in case I get misinterpreted, I am not talking about treating empty lines in any special way. It is more about "starting the hunk with actually changed line". The first hunk above clearly begins with something added, while the second one does not.

Is this something easy to do with the xdiff code?
Next: Davide Libenzi
Message 1 of 5 in “[RFH] shifting xdiff hunks?”
  1. Junio C HamanoApr 13, 2006
  2. Davide LibenziApr 13, 2006
  3. Davide LibenziApr 13, 2006
  4. Junio C HamanoApr 13, 2006
  5. Jakub NarebskiApr 13, 2006

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.