Thread (2 messages) flat view 2 messages, 2 authors, 2016-06-15

Re: [PATCH 1/2] add--interactive: ignore mode change in 'p'atch command

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:44:26

Jeff King [off-list ref] writes:
When a path is examined in the patch subcommand, any mode
changes in the file are given to use in the diff header by
git-diff. If no hunks are staged, then we throw out that
header. But if _any_ hunks are staged, we use the header,
and the mode is changed.

Since the 'p'atch command should just be dealing with hunks
that are shown to the user, it makes sense to just ignore
mode changes entirely. We do squirrel away the mode, though,
since a future patch will allow users to select the mode
update.
I agree that treating each logical block of the metainformation as if it
is a hunk on its own makes sense.  Possibly, it would be useful to make
the interactive patch session look like this:

    diff --git a/gostak b/doshes
    old mode 100644
    new mode 100755
    Stage the mode change [y/n/a/d/j/J/?]?
    similarity index 90%
    rename from gostak
    rename to doshes
    Stage the name change [y/n/a/d/j/J/?]?
    @@ -1,5 +1,5 @@
     The
    -gostak
    +Gostak
     distims
     doshes
    Stage this hunk [y/n/a/d/j/J/?]?

Handlilng the rename needs a bit more thought and enhancements not just in
your parse_diff_header() code but the way we extract the diff text (we
would need to first find renames by whole-tree diff and then feed two
(src,dst) paths in parse_diff() to obtain the text), but it should be
doable.

By the way, why was it done as a new sub called from parse_diff() and not
as a part of parse_diff() itself?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help