Skip to content

Commit

Permalink
Merge branch 'jc/maint-diff-core-safecrlf'
Browse files Browse the repository at this point in the history
"git diff" refused to even show difference when core.safecrlf is
set to true (i.e. error out) and there are offending lines in the
working tree files.

* jc/maint-diff-core-safecrlf:
  diff: demote core.safecrlf=true to core.safecrlf=warn
  • Loading branch information
Junio C Hamano committed Jul 11, 2013
2 parents e29497d + 5430bb2 commit 77f3c3f
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
10 changes: 9 additions & 1 deletion diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -2677,6 +2677,14 @@ static int diff_populate_gitlink(struct diff_filespec *s, int size_only)
int diff_populate_filespec(struct diff_filespec *s, int size_only)
{
int err = 0;
/*
* demote FAIL to WARN to allow inspecting the situation
* instead of refusing.
*/
enum safe_crlf crlf_warn = (safe_crlf == SAFE_CRLF_FAIL
? SAFE_CRLF_WARN
: safe_crlf);

if (!DIFF_FILE_VALID(s))
die("internal error: asking to populate invalid file.");
if (S_ISDIR(s->mode))
Expand Down Expand Up @@ -2732,7 +2740,7 @@ int diff_populate_filespec(struct diff_filespec *s, int size_only)
/*
* Convert from working tree format to canonical git format
*/
if (convert_to_git(s->path, s->data, s->size, &buf, safe_crlf)) {
if (convert_to_git(s->path, s->data, s->size, &buf, crlf_warn)) {
size_t size = 0;
munmap(s->data, s->size);
s->should_munmap = 0;
Expand Down
8 changes: 8 additions & 0 deletions t/t0020-crlf.sh
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,14 @@ test_expect_success 'safecrlf: print warning only once' '
test $(git add doublewarn 2>&1 | grep "CRLF will be replaced by LF" | wc -l) = 1
'


test_expect_success 'safecrlf: git diff demotes safecrlf=true to warn' '
git config core.autocrlf input &&
git config core.safecrlf true &&
git diff HEAD
'


test_expect_success 'switch off autocrlf, safecrlf, reset HEAD' '
git config core.autocrlf false &&
git config core.safecrlf false &&
Expand Down

0 comments on commit 77f3c3f

Please sign in to comment.