From: Andy Parkins <andyparkins@gmail•com>
To: git@vger•kernel.org
Subject: [PATCH] Fix crlf attribute handling to match documentation
Date: Fri, 18 May 2007 13:33:32 +0100 [thread overview]
Message-ID: <200705181333.32719.andyparkins@gmail.com> (raw)
gitattributes.txt says, of the crlf attribute:
Set::
Setting the `crlf` attribute on a path is meant to mark
the path as a "text" file. 'core.autocrlf' conversion
takes place without guessing the content type by
inspection.
That is to say that the crlf attribute does not force the file to have
CRLF line endings, instead it removes the autocrlf guesswork and forces
the file to be treated as text. Then, whatever line ending is defined
by the autocrlf setting is applied.
However, that is not what convert.c was doing. The conversion to CRLF
was being skipped in crlf_to_worktree() when the following condition was
true:
action == CRLF_GUESS && auto_crlf <= 0
That is to say conversion took place when not in guess mode (crlf attribute
not specified) or core.autocrlf set to true. This was wrong. It meant
that the crlf attribute being on for a given file _forced_ CRLF
conversion, when actually it should force the file to be treated as
text, and converted accordingly. The real test should simply be
auto_crlf <= 0
That is to say, if core.autocrlf is falsei (or input), conversion from
LF to CRLF is never done. When core.autocrlf is true, conversion from
LF to CRLF is done only when in CRLF_GUESS (and the guess is "text"), or
CRLF_TEXT mode.
Similarly for crlf_to_worktree(), if core.autocrlf is false, no conversion
should _ever_ take place. In reality it was only not taking place if
core.autocrlf was false _and_ the crlf attribute was unspecified.
Signed-off-by: Andy Parkins <andyparkins@gmail•com>
---
convert.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/convert.c b/convert.c
index 12abdaf..86d8167 100644
--- a/convert.c
+++ b/convert.c
@@ -86,7 +86,7 @@ static char *crlf_to_git(const char *path, const char *src, unsigned long *sizep
unsigned long size, nsize;
struct text_stat stats;
- if ((action == CRLF_BINARY) || (action == CRLF_GUESS && !auto_crlf))
+ if ((action == CRLF_BINARY) || !auto_crlf)
return NULL;
size = *sizep;
@@ -154,7 +154,7 @@ static char *crlf_to_worktree(const char *path, const char *src, unsigned long *
unsigned char last;
if ((action == CRLF_BINARY) || (action == CRLF_INPUT) ||
- (action == CRLF_GUESS && auto_crlf <= 0))
+ auto_crlf <= 0)
return NULL;
size = *sizep;
--
1.5.2.rc3.51.gd07bc
next reply other threads:[~2007-05-18 12:33 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-18 12:33 Andy Parkins [this message]
2007-05-18 18:28 ` [PATCH] Fix crlf attribute handling to match documentation Junio C Hamano
2007-05-19 0:02 ` Junio C Hamano
2007-05-19 9:58 ` Andy Parkins
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200705181333.32719.andyparkins@gmail.com \
--to=andyparkins@gmail$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox