Junio C Hamano <junkio@xxxxxxx> writes: > Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes: > >> Why would >> >> * diff crlf >> >> be "obviously sane"? >> >> In fact, I'd call it obviously insane. >> >> We do *not* want to default crlf to all files. We want the default to be >> "automatic crlf depending on content". > > You do not have to worry. > > That's how "crlf" is defined. Paths you explicitly say !crlf > will _not_ go through the existing core.autocrlf mechanism. > > "* crlf" just says, by default everybody is subject to core.autocrlf, > and on sane platforms, core.autocrlf is by default off, hence you will > not get LF <-> CRLF applied. Having said that, if we really wanted to, we could introduce a way to explicitly say "Even if the contents do not look like text, apply line ending conversion, always", by redefining the meaning of 'crlf' attribute. But I do not know if that makes much sense. Being able to turn _off_ would be a good thing because a particular file that looks like CRLF terminated text might not be text. But the other way around? IOW, I do not think of a case where a file that does not even look like a text wants CRLF conversion. --- diff --git a/convert.c b/convert.c index 20c744a..f9e5d63 100644 --- a/convert.c +++ b/convert.c @@ -191,7 +191,7 @@ static void setup_crlf_check(struct git_attr_check *check) check->attr = attr_crlf; } -static int git_path_is_binary(const char *path) +static int git_path_check_crlf(const char *path) { struct git_attr_check attr_crlf_check; @@ -202,20 +202,31 @@ static int git_path_is_binary(const char *path) * disable autocrlf only when crlf attribute is explicitly * unset. */ - return (!git_checkattr(path, 1, &attr_crlf_check) && - (0 == attr_crlf_check.isset)); + if (!git_checkattr(path, 1, &attr_crlf_check)) + return -1; + return attr_crlf_check.isset; } int convert_to_git(const char *path, char **bufp, unsigned long *sizep) { - if (git_path_is_binary(path)) + switch (git_path_check_crlf(path)) { + case 0: return 0; - return autocrlf_to_git(path, bufp, sizep); + case 1: + return forcecrlf_to_git(path, bufp, sizep); + default: + return autocrlf_to_git(path, bufp, sizep); + } } int convert_to_working_tree(const char *path, char **bufp, unsigned long *sizep) { - if (git_path_is_binary(path)) + switch (git_path_check_crlf(path)) { + case 0: return 0; - return autocrlf_to_working_tree(path, bufp, sizep); + case 1: + return forcecrlf_to_working_tree(path, bufp, sizep); + default: + return autocrlf_to_working_tree(path, bufp, sizep); + } } - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html