Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 146d0d0

Browse files
ethomsonEdward Thomson
authored and
Edward Thomson
committed
crlf: give Unix the glory of autocrlf=true
Perform LF->CRLF for core.autocrlf=true on non-Win32 because core git does.
1 parent 1e46d54 commit 146d0d0

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/crlf.c

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -193,28 +193,29 @@ static const char *line_ending(struct crlf_attrs *ca)
193193
case GIT_CRLF_CRLF:
194194
return "\r\n";
195195

196+
case GIT_CRLF_GUESS:
197+
if (ca->auto_crlf == GIT_AUTO_CRLF_FALSE)
198+
return "\n";
199+
break;
200+
196201
case GIT_CRLF_AUTO:
197202
case GIT_CRLF_TEXT:
198-
case GIT_CRLF_GUESS:
199203
break;
200204

201205
default:
202206
goto line_ending_error;
203207
}
204208

205-
switch (ca->eol) {
206-
case GIT_EOL_UNSET:
207-
return GIT_EOL_NATIVE == GIT_EOL_CRLF ? "\r\n" : "\n";
208-
209-
case GIT_EOL_CRLF:
209+
if (ca->auto_crlf == GIT_AUTO_CRLF_TRUE)
210210
return "\r\n";
211-
212-
case GIT_EOL_LF:
211+
else if (ca->auto_crlf == GIT_AUTO_CRLF_INPUT)
213212
return "\n";
214-
215-
default:
216-
goto line_ending_error;
217-
}
213+
else if (ca->eol == GIT_EOL_UNSET)
214+
return GIT_EOL_NATIVE == GIT_EOL_CRLF ? "\r\n" : "\n";
215+
else if (ca->eol == GIT_EOL_LF)
216+
return "\n";
217+
else if (ca->eol == GIT_EOL_CRLF)
218+
return "\r\n";
218219

219220
line_ending_error:
220221
giterr_set(GITERR_INVALID, "Invalid input to line ending filter");
@@ -299,7 +300,7 @@ static int crlf_check(
299300
return GIT_PASSTHROUGH;
300301

301302
if (ca.crlf_action == GIT_CRLF_GUESS ||
302-
(ca.crlf_action == GIT_CRLF_AUTO &&
303+
((ca.crlf_action == GIT_CRLF_AUTO || ca.crlf_action == GIT_CRLF_TEXT) &&
303304
git_filter_source_mode(src) == GIT_FILTER_SMUDGE)) {
304305

305306
error = git_repository__cvar(

0 commit comments

Comments
 (0)