Re: [PATCH v1 6/7] correct blame for files commited with CRLF
- From
Torsten Bögershausen <tboegi@web.de>
- Date
- Mar 30, 2016, 17:48 UTC
- Message-ID
- <56FC1184.7010802@web.de>
- In-Reply-To
- <xmqq60w5vwj9.fsf@gitster.mtv.corp.google.com>
7/7 needs to be amended with something like this, and the documentation needs an update.
In any case, the user can normalize the repo like this: $ echo "* text=auto" >>.gitattributes $ rm .git/index # Remove the index to force Git to $ git reset # re-scan the working directory $ git status # Show files that will be normalized $ git add -u $ git add .gitattributes $ git commit -m "Introduce end-of-line normalization"
(or run "dos2unix" filename)
----------------
commit a604db36bb946000776514c220964f32979c8756 Author: Torsten Bögershausen <tboegi@web.de> Date: Wed Mar 30 15:53:52 2016 +0200
convert.c: add warning when eol are wrong after checkout
When line endings are not normalized, they may be different after the
next checkout to what is configured.
Add a warning, similar to the CRLF-LF replacement, when a file is commited,
and the line endings are not converted at commit or checkout.diff --git a/convert.c b/convert.c index 8266d87..1fddbe8 100644 --- a/convert.c +++ b/convert.c @@ -18,6 +18,8 @@ #define CONVERT_STAT_BITS_TXT_CRLF 0x2 #define CONVERT_STAT_BITS_BIN 0x4 +#define CONVERT_STAT_BITS_MIXED (CONVERT_STAT_BITS_TXT_LF | CONVERT_STAT_BITS_TXT_CRLF) + enum crlf_action { CRLF_UNDEFINED, CRLF_BINARY, @@ -279,6 +281,8 @@ static void check_safe_crlf(const char *path, enum crlf_action crlf_action, enum safe_crlf checksafe, unsigned convert_stats, unsigned new_convert_stats) { + enum eol new_eol = output_eol(crlf_action); + const char *err_warn_msg = NULL; if (!checksafe) return; if (convert_stats & CONVERT_STAT_BITS_TXT_CRLF && @@ -303,6 +307,19 @@ static void check_safe_crlf(const char *path, enum crlf_action crlf_action, else /* i.e. SAFE_CRLF_FAIL */ die("LF would be replaced by CRLF in %s", path); } + if ((new_convert_stats & CONVERT_STAT_BITS_MIXED) == CONVERT_STAT_BITS_MIXED) + err_warn_msg = "mixed eol"; + else if (new_eol == EOL_LF && new_convert_stats & CONVERT_STAT_BITS_TXT_CRLF) + err_warn_msg = "CRLF"; + + if (err_warn_msg) { + if (checksafe == SAFE_CRLF_WARN) + warning("%s will be present after commit and checkout in %s.", + err_warn_msg, path); + else + die("%s will be present after commit and checkout in %s", + err_warn_msg, path); + } } [snip changes in t0027]