login
Header Space

 
 

Re: [PATCH] [WIP] safecrlf: Add mechanism to warn about irreversible crlf conversions

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Steffen Prohaska <prohaska@...>
Cc: <torvalds@...>, <git@...>
Date: Saturday, January 12, 2008 - 3:14 pm

On Sat, Jan 12, 2008 at 06:54:13PM +0100, Steffen Prohaska wrote:

This check is okay, however


this is not, because if you really want to be sure that file will not be mangled
by checkout, you should not allow a text file with naked LF when autocrlf=true.
And the following lines after gather_stats() can cause:

		/* No CR? Nothing to convert, regardless. */
		if (!stats.cr)
			return 0;

So, I propose a slightly different patch for convert.c:

diff --git a/convert.c b/convert.c
index 4df7559..9fd88d9 100644
--- a/convert.c
+++ b/convert.c
@@ -90,9 +90,6 @@ static int crlf_to_git(const char *path, const char *src, size_t len,
 		return 0;
 
 	gather_stats(src, len, &stats);
-	/* No CR? Nothing to convert, regardless. */
-	if (!stats.cr)
-		return 0;
 
 	if (action == CRLF_GUESS) {
 		/*
@@ -108,8 +105,23 @@ static int crlf_to_git(const char *path, const char *src, size_t len,
 		 */
 		if (is_binary(len, &stats))
 			return 0;
+
+		if (safe_crlf) {
+			/* check if we have "naked" LFs */
+			if (stats.lf != stats.crlf) {
+				if (safe_crlf == SAFE_CRLF_WARN)
+					warning(
+					  "Checkout will replace LFs with CRLF in %s", path);
+				else
+					die("Checkout would replace LFs with CRLF in %s", path);
+			}
+		}
 	}
 
+	/* No CR? Nothing to convert, regardless. */
+	if (!stats.cr)
+		return 0;
+
 	/* only grow if not in place */
 	if (strbuf_avail(buf) + buf->len < len)
 		strbuf_grow(buf, len - buf->len);
@@ -131,6 +143,16 @@ static int crlf_to_git(const char *path, const char *src, size_t len,
 			if (! (c == '\r' && (1 < len && *src == '\n')))
 				*dst++ = c;
 		} while (--len);
+
+		if (safe_crlf && (action == CRLF_INPUT || auto_crlf <= 0)) {
+			/* autocrlf=input: check if we removed CRLFs */
+			if (buf->len != dst - buf->buf) {
+				if (safe_crlf == SAFE_CRLF_WARN)
+					warning("Stripped CRLF from %s.", path);
+				else
+					die("Refusing to strip CRLF from %s.", path);
+			}
+		}
 	}
 	strbuf_setlen(buf, dst - buf->buf);
 	return 1;


Dmitry
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
CRLF problems with Git on Win32, Peter Karlsson, (Mon Jan 7, 5:16 am)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Mon Jan 7, 5:57 am)
Re: CRLF problems with Git on Win32, Peter Klavins, (Mon Jan 7, 6:13 am)
Re: CRLF problems with Git on Win32, Peter Karlsson, (Mon Jan 7, 9:50 am)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Mon Jan 7, 12:05 pm)
Re: CRLF problems with Git on Win32, Peter Klavins, (Mon Jan 7, 10:14 am)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Mon Jan 7, 8:58 am)
Re: CRLF problems with Git on Win32, Jeff King, (Mon Jan 7, 6:12 am)
Re: CRLF problems with Git on Win32, Robin Rosenberg, (Mon Jan 7, 2:47 pm)
Re: CRLF problems with Git on Win32, Johannes Schindelin, (Mon Jan 7, 3:16 pm)
Re: CRLF problems with Git on Win32, Robin Rosenberg, (Mon Jan 7, 5:03 pm)
Re: CRLF problems with Git on Win32, Thomas Neumann, (Mon Jan 7, 5:42 pm)
Re: CRLF problems with Git on Win32, Peter Karlsson, (Tue Jan 8, 6:56 am)
Re: CRLF problems with Git on Win32, Jan Hudec, (Wed Jan 9, 2:46 pm)
Re: CRLF problems with Git on Win32, Peter Harris, (Tue Jan 8, 9:07 am)
Re: CRLF problems with Git on Win32, Dmitry Potapov, (Tue Jan 8, 5:33 pm)
Re: CRLF problems with Git on Win32, Kelvie Wong, (Tue Jan 8, 11:58 am)
Re: CRLF problems with Git on Win32, Peter Karlsson, (Tue Jan 8, 11:20 am)
Re: CRLF problems with Git on Win32, Johannes Schindelin, (Tue Jan 8, 7:52 am)
Re: CRLF problems with Git on Win32, Jeff King, (Tue Jan 8, 7:07 am)
Re: CRLF problems with Git on Win32, Johannes Schindelin, (Tue Jan 8, 7:54 am)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Mon Jan 7, 5:36 pm)
Re: CRLF problems with Git on Win32, Peter Karlsson, (Tue Jan 8, 5:26 pm)
Re: CRLF problems with Git on Win32, Johannes Schindelin, (Wed Jan 9, 6:56 am)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Wed Jan 9, 8:41 am)
Re: CRLF problems with Git on Win32, Gregory Jefferis, (Wed Jan 9, 9:52 am)
Re: CRLF problems with Git on Win32, Dmitry Potapov, (Wed Jan 9, 11:03 am)
Re: CRLF problems with Git on Win32, Gregory Jefferis, (Wed Jan 9, 1:37 pm)
Re: CRLF problems with Git on Win32, Dmitry Potapov, (Wed Jan 9, 3:05 pm)
Re: CRLF problems with Git on Win32, Johannes Schindelin, (Wed Jan 9, 10:03 am)
Re: CRLF problems with Git on Win32, Dmitry Potapov, (Wed Jan 9, 11:22 am)
Re: CRLF problems with Git on Win32, Johannes Schindelin, (Mon Jan 7, 5:18 pm)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Mon Jan 7, 5:40 pm)
Re: CRLF problems with Git on Win32, J. Bruce Fields, (Tue Jan 8, 1:29 pm)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Tue Jan 8, 1:56 pm)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Tue Jan 8, 2:07 pm)
Re: CRLF problems with Git on Win32, Gregory Jefferis, (Thu Jan 10, 3:58 pm)
Re: CRLF problems with Git on Win32, Rogan Dawes, (Thu Jan 10, 4:50 pm)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Thu Jan 10, 9:15 pm)
Re: CRLF problems with Git on Win32, Gregory Jefferis, (Thu Jan 10, 5:15 pm)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Thu Jan 10, 4:20 pm)
Re: CRLF problems with Git on Win32, Gregory Jefferis, (Thu Jan 10, 5:28 pm)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Thu Jan 10, 8:02 pm)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Fri Jan 11, 3:10 am)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Fri Jan 11, 11:58 am)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Fri Jan 11, 12:28 pm)
Re: CRLF problems with Git on Win32, Gregory Jefferis, (Fri Jan 11, 3:00 pm)
Re: CRLF problems with Git on Win32, Dmitry Potapov, (Sat Jan 12, 11:26 am)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Fri Jan 11, 1:25 pm)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Fri Jan 11, 1:56 pm)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Fri Jan 11, 2:10 pm)
Re: CRLF problems with Git on Win32, Christer Weinigel, (Fri Jan 11, 3:53 pm)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Fri Jan 11, 2:29 pm)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Fri Jan 11, 3:16 pm)
Re: [PATCH] [WIP] safecrlf: Add mechanism to warn about irre..., Dmitry Potapov, (Sat Jan 12, 3:14 pm)
Re: CRLF problems with Git on Win32, Sam Ravnborg, (Fri Jan 11, 3:50 pm)
Re: CRLF problems with Git on Win32, Dmitry Potapov, (Sat Jan 12, 11:08 am)
Re: CRLF problems with Git on Win32, Johannes Schindelin, (Fri Jan 11, 5:18 pm)
Re: CRLF problems with Git on Win32, Sam Ravnborg, (Fri Jan 11, 6:21 pm)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Thu Jan 10, 8:32 pm)
Re: CRLF problems with Git on Win32, Dmitry Potapov, (Thu Jan 10, 7:23 pm)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Tue Jan 8, 2:58 pm)
Re: CRLF problems with Git on Win32, Dmitry Potapov, (Tue Jan 8, 4:50 pm)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Tue Jan 8, 5:31 pm)
Re: CRLF problems with Git on Win32, Dmitry Potapov, (Tue Jan 8, 6:51 pm)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Tue Jan 8, 8:01 pm)
Re: CRLF problems with Git on Win32, Sean, (Tue Jan 8, 6:09 pm)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Tue Jan 8, 5:15 pm)
Re: CRLF problems with Git on Win32, Robin Rosenberg, (Tue Jan 8, 5:57 pm)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Tue Jan 8, 4:11 pm)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Tue Jan 8, 4:20 pm)
Re: CRLF problems with Git on Win32, J. Bruce Fields, (Tue Jan 8, 3:09 pm)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Tue Jan 8, 3:59 pm)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Tue Jan 8, 3:47 pm)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Tue Jan 8, 4:41 pm)
Re: [msysGit] Re: CRLF problems with Git on Win32, Steffen Prohaska, (Tue Jan 8, 4:02 pm)
Re: [msysGit] Re: CRLF problems with Git on Win32, Johannes Schindelin, (Wed Jan 9, 7:03 am)
Re: [msysGit] Re: CRLF problems with Git on Win32, Steffen Prohaska, (Wed Jan 9, 8:45 am)
Re: [msysGit] Re: CRLF problems with Git on Win32, Johannes Schindelin, (Wed Jan 9, 9:32 am)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Tue Jan 8, 4:15 pm)
Re: [msysGit] Re: CRLF problems with Git on Win32, Steffen Prohaska, (Tue Jan 8, 4:39 pm)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Mon Jan 7, 6:06 pm)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Tue Jan 8, 3:02 am)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Tue Jan 8, 3:29 am)
Re: CRLF problems with Git on Win32, Jeff King, (Tue Jan 8, 6:08 am)
Re: CRLF problems with Git on Win32, Gregory Jefferis, (Tue Jan 8, 8:20 am)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Tue Jan 8, 6:35 am)
Re: CRLF problems with Git on Win32, Linus Torvalds, (Mon Jan 7, 6:58 pm)
Re: [msysGit] Re: CRLF problems with Git on Win32, Marius Storm-Olsen, (Tue Jan 8, 4:55 am)
Re: CRLF problems with Git on Win32, Gregory Jefferis, (Mon Jan 7, 7:46 pm)
git and unicode, Gonzalo Garramuño, (Tue Jan 8, 7:09 am)
Re: git and unicode, Robin Rosenberg, (Tue Jan 8, 4:36 pm)
Re: git and unicode, Remi Vanicat, (Tue Jan 8, 11:09 am)
Re: CRLF problems with Git on Win32, Junio C Hamano, (Mon Jan 7, 6:00 am)
Re: CRLF problems with Git on Win32, Steffen Prohaska, (Mon Jan 7, 8:15 am)
speck-geostationary