threads / discuss / 2314

remove CR/LF from .gitignore

Subject: remove CR/LF from .gitignore

## tl;dr

3 messages between Nov 2, 2005 and Nov 2, 2005.

replies: 2people: 3as markdown or json

Alex Riesen· Nov 2, 2005, 13:05 UTC · lore
For everyone cursed by dos/windows line endings (aka CRLF):

The code reading the .gitignore files (excludes and excludes per directory) leaves \r in the patterns, which causes fnmatch to fail for no obvious reason. Just remove a "\r" preceding a "\n" unconditionally.

---

Junio, sorry for attachments. Have no other way to it on gmail here at work. The other patch is just the test.

Linus Torvalds· Nov 2, 2005, 16:02 UTC · re: Alex Riesen · lore

Re: remove CR/LF from .gitignore

On Wed, 2 Nov 2005, Alex Riesen wrote:
>
> For everyone cursed by dos/windows line endings (aka CRLF):

Btw, it would be good if somebody verified that the .git/config file also works with CR/LF.

I'm pretty sure "\" at the end of line will break, but I didn't care enough. And maybe nobody does. Normal config files _should_ work, but you can guess how eager I'm to test it ;)

		Linus
Junio C Hamano· Nov 2, 2005, 20:27 UTC · re: Linus Torvalds · lore

Re: remove CR/LF from .gitignore

Linus Torvalds <torvalds@osdl.org> writes:
Show 10 quoted lines
> On Wed, 2 Nov 2005, Alex Riesen wrote:
>>
>> For everyone cursed by dos/windows line endings (aka CRLF):
>
> Btw, it would be good if somebody verified that the .git/config file also 
> works with CR/LF. 
>
> I'm pretty sure "\" at the end of line will break, but I didn't care 
> enough. And maybe nobody does. Normal config files _should_ work, but 
> you can guess how eager I'm to test it ;)
Something like this?

--- cd /opt/packrat/playpen/public/in-place/git/git.junio/ git diff

diff --git a/config.c b/config.c
index 519fecf..e89bab2 100644
--- a/config.c
+++ b/config.c
@@ -13,6 +13,14 @@ static int get_next_char(void)
 	c = '\n';
 	if ((f = config_file) != NULL) {
 		c = fgetc(f);
+		if (c == '\r') {
+			/* DOS like systems */
+			c = fgetc(f);
+			if (c != '\n') {
+				ungetc(c, f);
+				c = '\r';
+			}
+		}
 		if (c == '\n')
 			config_linenr++;
 		if (c == EOF) {

Compilation finished at Wed Nov  2 12:24:27

← back to recent threads