git whitespace woes

后端 未结 2 1436
南旧
南旧 2020-11-30 01:51

Conflicts on whitespace suck

Whitespace has ended up being a horrible pain for me while using git.

git config apply.whitespace=strip
相关标签:
2条回答
  • 2020-11-30 02:19

    If you are going to turn on those settings, you need to schedule a day where ALL source code in your project gets its whitespace uniformly stripped, by running a script, or by saving every file from an editor that will perform the strip on save. Then, all future commits will be policed by the settings, so all should be well going forward.

    0 讨论(0)
  • 2020-11-30 02:32

    Git1.6.0.4 seems a bit old, especially if you consider that:

    • in 1.6.3.4, "git apply --whitespace=fix" did not fix trailing whitespace on an incomplete line
    • in 1.6.3.2, "whitespace" attribute that is set was meant to detect all errors known to git, but it told git to ignore trailing carriage-returns.

    Could you try with Git1.6.4.1, and rather than setting a global config, set an attribute on the files you want a special whitespace handle, like this patch describes.

    In a given directory, create a .gitattributes file.

    * -whitespace
    

    which will ignore any 'whitespace' errors.

    Now that will not prevent any conflict due to lack of consistency but that may be worth trying.


    The patch was a test about:

    Only ignore whitespace errors in t/tNNNN-*.sh and the t/tNNNN subdirectories.
    Other files (like test libraries) should still be checked.

    t/.gitattributes
    t[0-9][0-9][0-9][0-9]-*.sh  -whitespace
    t[0-9][0-9][0-9][0-9]/*     -whitespace
    

    Note (Git 2.3.2+, Q1 2015, commit 0a80bc9, by Junio C Hamano aka gitster) "git apply --whitespace=fix" is no longer silent:

    "git apply --whitespace=fix" fixed whitespace errors in the common context lines but did so without reporting.

    When the incoming patch has whitespace errors in a common context line (i.e. a line that is expected to be found and is not modified by the patch), "apply --whitespace=fix" corrects the whitespace errors the line has, in addition to the whitespace error on a line that is updated by the patch.
    However, we did not count and report that we fixed whitespace errors on such lines.

    0 讨论(0)
提交回复
热议问题