Re: [BUG?] Patches created with 'diff.noprefix=true' don't 'git apply'.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 7, 2014 at 9:38 PM, Nathan Collins <nathan.collins@xxxxxxxxx> wrote:
> On Wed, May 7, 2014 at 4:39 PM, Nathan Collins <nathan.collins@xxxxxxxxx> wrote:
>> On Wed, May 7, 2014 at 11:42 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote:
>>> Nathan Collins <nathan.collins@xxxxxxxxx> writes:
>>
>>>> For (2), the solution may be to add a separate
>>>> 'diff.add-clickable-paths' option (probably there is a better name?
>>>> 'diff.add-copyable-paths'? ...),...
>>>> ...
>>>> Concretely, if 'diff.add-clickable-paths' is set, then instead of e.g.
>>>>
>>>>   diff --git a/src/Data/Function/Decorator/Memoizer/Unsafe.hs
>>>> b/src/Data/Function/Decorator/Memoizer
>>>>   index 3ef17da..a0586d3 100644
>>>>   --- a/src/Data/Function/Decorator/Memoizer/Unsafe.hs
>>>>   +++ b/src/Data/Function/Decorator/Memoizer/Unsafe.hs
>>>
>>> If you do something along that line, perhaps
>>>
>>>         Index: src/Data/Function/Decorator/Memoizer/Unsafe.hs
>>>         diff --git a/src/Data/Function/Decorator/Memoizer/Unsafe.hs ...
>>>         index 3ef17da..a0586d3 100644
>>>         --- a/src/Data/Function/Decorator/Memoizer/Unsafe.hs
>>>         +++ b/src/Data/Function/Decorator/Memoizer/Unsafe.hs
>>>
>>> to imitate what "cvs diff" does may be more familar to people.
>>>
>>> What would you propose to make clickable in a renaming diff, though?
>>
>> Your 'Index' header looks good, and I would expect a renaming diff to
>> have something like
>>
>>   Index: foo -> bar
>>
>> as in 'git status', but I just realized that a "clickable paths"
>> option already exists in some sense! There is a '--patch-with-raw'
>> option (which is "short" for '--patch' and '--raw', hahaha) which
>> inserts clickable file names in the patch, above each diff.
>
> Or not: I stupidly only tested this with a single file modified: it
> turns out that all the clickable file names appear at the top of the
> patch, not as one file name above each corresponding diff as I
> claimed.

The following may be a non-option, since presumably many tools depend
on the current Git patch format.

The paths in the "extended header lines" in Git patches are clickable
by default, and respect the '--relative' option. So, adding a path to
the extended header lines that don't already have one would solve the
"clickable paths" problem.

E.g.

  index <hash>..<hash> <mode>

becomes

  index <hash>..<hash> <mode> <path>

The 'man git-diff' description of extended header lines in the
"Generating Patches with -p" section:

  2. It is followed by one or more extended header lines:

         old mode <mode>
         new mode <mode>
         deleted file mode <mode>
         new file mode <mode>
         copy from <path>
         copy to <path>
         rename from <path>
         rename to <path>
         similarity index <number>
         dissimilarity index <number>
         index <hash>..<hash> <mode>

     File modes are printed as 6-digit octal numbers including the
file type and file
     permission bits.

     Path names in extended headers do not include the a/ and b/ prefixes.

Cheers,

-nathan
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]