gitline-endingscore.autocrlfformat-patchgit-am

When to use --keep-cr with am and in which version of git it got introduced?


I am trying to formalize a patch workflow for our org. We have an internal project where we don't mind white-spaces(would like to keep them same for each user if possible), EOF/EOL characters etc. We have developers working on both Mac and Windows platform. AT both places we use git with Cygwin.

I read here that core.autocrlf true does the trick or you can use --keep-cr. But here VonC suggests core.autocrlf false is a better strategy.

My Questions are:

  1. When to use true and when false? (I just don't want git to bug me and patches should apply smooth).
  2. When was --keep-cr introduced? I use git 1.7.2 and am man page does not have this option?
  3. What Ignore-whitespace options to use so as to have smooth patch workflow?

Solution

  • 1.7.2 should have --keep-cr for git am, since it was introduced in commit ad2c928 by Stefan-W. Hahn, included in Git 1.7.1.

    when you know you are feeding output from "git format-patch" directly to "git am", and especially when your contents have CR at the end of line, such stripping is undesirable. To help such a use case, teach --keep-cr option to "git am" and pass that to "git mailinfo".

    However, on Windows, I always use the latest Git For Windows release, not the cygwin one (even though you can have both).

    The issue with core.autocrlf is that it is a repository-wide setting which can affect all files (even non-text ones).
    I prefer core.eol directives.

    For whitespace, you can try "git: patch does not apply":

    git apply --ignore-space-change --ignore-whitespace mychanges.patch