diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-01-18 15:16:19 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-01-18 15:16:19 -0800 |
commit | 05c65cb1161f232c65b186d6d6eb3bce9c6a0924 (patch) | |
tree | 6eb5898b90cadc7196cffb9c9ad0ddabe12b914f | |
parent | b63103e908af54e5e2eaa3faad350e4738ef0047 (diff) | |
parent | c7c2bc0ac9e7f077771db53960d4917fda4b27a7 (diff) | |
download | git-05c65cb1161f232c65b186d6d6eb3bce9c6a0924.tar.gz |
Merge branch 'tr/maint-word-diff-incomplete-line'
* tr/maint-word-diff-incomplete-line:
word-diff: ignore '\ No newline at eof' marker
-rw-r--r-- | diff.c | 9 | ||||
-rwxr-xr-x | t/t4034-diff-words.sh | 14 |
2 files changed, 23 insertions, 0 deletions
@@ -1113,6 +1113,15 @@ static void fn_out_consume(void *priv, char *line, unsigned long len) diff_words_append(line, len, &ecbdata->diff_words->plus); return; + } else if (!prefixcmp(line, "\\ ")) { + /* + * Eat the "no newline at eof" marker as if we + * saw a "+" or "-" line with nothing on it, + * and return without diff_words_flush() to + * defer processing. If this is the end of + * preimage, more "+" lines may come after it. + */ + return; } diff_words_flush(ecbdata); if (ecbdata->diff_words->type == DIFF_WORDS_PORCELAIN) { diff --git a/t/t4034-diff-words.sh b/t/t4034-diff-words.sh index 6f1e5a2a15..5c2012111c 100755 --- a/t/t4034-diff-words.sh +++ b/t/t4034-diff-words.sh @@ -334,4 +334,18 @@ test_expect_success 'word-diff with diff.sbe' ' word_diff --word-diff=plain ' +test_expect_success 'word-diff with no newline at EOF' ' + cat >expect <<-\EOF && + diff --git a/pre b/post + index 7bf316e..3dd0303 100644 + --- a/pre + +++ b/post + @@ -1 +1 @@ + a a [-a-]{+ab+} a a + EOF + printf "%s" "a a a a a" >pre && + printf "%s" "a a ab a a" >post && + word_diff --word-diff=plain +' + test_done |