SyncDlg: Enable more options for conflict view
[TortoiseGit.git] / ext / libgit2-0011-Update-workdir_to_infex-CrLf-conversion-to-match-Git.patch
blob73ac78db1c5b9239d72226e8a4855fb3e1417eea
1 From db3d45c7a5b8773f6221516c015add695708e0fe Mon Sep 17 00:00:00 2001
2 From: Sven Strickroth <email@cs-ware.de>
3 Date: Sun, 29 Jan 2017 02:12:07 +0100
4 Subject: [PATCH 8/8] Update workdir_to_infex CrLf conversion to match Git >=
5 2.9 logic
7 Signed-off-by: Sven Strickroth <email@cs-ware.de>
8 ---
9 CHANGELOG.md | 2 +-
10 src/crlf.c | 19 +++++++++++--------
11 2 files changed, 12 insertions(+), 9 deletions(-)
13 diff --git a/CHANGELOG.md b/CHANGELOG.md
14 index 99473edd7..442e3d14b 100644
15 --- a/CHANGELOG.md
16 +++ b/CHANGELOG.md
17 @@ -7,7 +7,7 @@ v0.25 + 1
18 This aligns this structure with the default by `git_merge` and
19 `git_merge_trees` when `NULL` was provided for the options.
21 -* LF -> CRLF filter now handles files on adding to index the way vanilla git does
22 +* LF -> CRLF filter now handles files on adding to index the way vanilla git >= 2.9 does
23 * skip files marked as "binary" (-crlf)
24 * especially files containing single CR chars are added as is now
25 * honor "text" attribute for forcing a file being interpreted as text
26 diff --git a/src/crlf.c b/src/crlf.c
27 index 468f33b4c..97b29af5c 100644
28 --- a/src/crlf.c
29 +++ b/src/crlf.c
30 @@ -161,9 +161,10 @@ static int crlf_apply_to_odb(
32 /* If safecrlf is enabled, sanity-check the result. */
33 if (ca->crlf_action == GIT_CRLF_INPUT ||
34 - (ca->auto_crlf == GIT_AUTO_CRLF_INPUT &&
35 - (ca->crlf_action == GIT_CRLF_GUESS || ca->crlf_action == GIT_CRLF_AUTO ||
36 - (ca->crlf_action == GIT_CRLF_TEXT && ca->eol==GIT_EOL_UNSET)))) {
37 + (ca->crlf_action == GIT_CRLF_GUESS || ca->crlf_action == GIT_CRLF_AUTO || ca->crlf_action == GIT_CRLF_TEXT) && ca->eol == GIT_EOL_LF ||
38 + (ca->auto_crlf == GIT_AUTO_CRLF_INPUT && (ca->crlf_action == GIT_CRLF_GUESS)) ||
39 + (ca->auto_crlf == GIT_AUTO_CRLF_INPUT && (ca->crlf_action == GIT_CRLF_AUTO || ca->crlf_action == GIT_CRLF_TEXT) && ca->eol == GIT_EOL_UNSET) ||
40 + (GIT_EOL_NATIVE != GIT_EOL_CRLF && ca->auto_crlf == GIT_AUTO_CRLF_FALSE && (ca->crlf_action == GIT_CRLF_AUTO || ca->crlf_action == GIT_CRLF_TEXT) && ca->eol == GIT_EOL_UNSET)) {
41 if (stats.crlf) {
42 switch (ca->safe_crlf) {
43 case GIT_SAFE_CRLF_FAIL:
44 @@ -178,9 +179,11 @@ static int crlf_apply_to_odb(
45 break;
48 - } else if (ca->crlf_action == GIT_CRLF_CRLF ||
49 - (ca->auto_crlf == GIT_AUTO_CRLF_TRUE && ca->crlf_action == GIT_CRLF_GUESS ||
50 - ((ca->crlf_action == GIT_CRLF_TEXT || ca->crlf_action == GIT_CRLF_AUTO) && ca->eol == GIT_EOL_UNSET))) {
51 + } else if ((ca->crlf_action == GIT_CRLF_CRLF ||
52 + ((ca->crlf_action == GIT_CRLF_GUESS || ca->crlf_action == GIT_CRLF_AUTO || ca->crlf_action == GIT_CRLF_TEXT) && ca->eol == GIT_EOL_CRLF) ||
53 + (ca->auto_crlf == GIT_AUTO_CRLF_TRUE && (ca->crlf_action == GIT_CRLF_GUESS)) ||
54 + (ca->crlf_action == GIT_CRLF_AUTO || ca->crlf_action == GIT_CRLF_TEXT)) &&
55 + !(GIT_EOL_NATIVE != GIT_EOL_CRLF && ca->auto_crlf == GIT_AUTO_CRLF_FALSE && (ca->crlf_action == GIT_CRLF_AUTO || ca->crlf_action == GIT_CRLF_TEXT) && ca->eol == GIT_EOL_UNSET)) {
56 if (stats.lf != stats.crlf) {
57 switch (ca->safe_crlf) {
58 case GIT_SAFE_CRLF_FAIL:
59 @@ -321,8 +324,6 @@ static int crlf_check(
60 * Use the core Git logic to see if we should perform CRLF for this file
61 * based on its attributes & the value of `core.autocrlf`
63 - ca.crlf_action = crlf_input_action(&ca);
65 if (ca.crlf_action == GIT_CRLF_BINARY)
66 return GIT_PASSTHROUGH;
68 @@ -330,6 +331,8 @@ static int crlf_check(
69 ((ca.crlf_action == GIT_CRLF_AUTO || ca.crlf_action == GIT_CRLF_TEXT) &&
70 git_filter_source_mode(src) == GIT_FILTER_SMUDGE)) {
72 + ca.crlf_action = crlf_input_action(&ca);
74 if (ca.crlf_action == GIT_CRLF_GUESS &&
75 ca.auto_crlf == GIT_AUTO_CRLF_FALSE)
76 return GIT_PASSTHROUGH;
77 --
78 2.11.0.windows.3