From: Dmitry Potapov <dpotapov@gmail.com>
To: Steffen Prohaska <prohaska@zib.de>
Cc: torvalds@linux-foundation.org, git@vger.kernel.org
Subject: Re: [PATCH] [WIP] safecrlf: Add mechanism to warn about irreversible crlf conversions
Date: Sat, 12 Jan 2008 22:14:29 +0300 [thread overview]
Message-ID: <20080112191429.GI2963@dpotapov.dyndns.org> (raw)
In-Reply-To: <12001604531066-git-send-email-prohaska@zib.de>
On Sat, Jan 12, 2008 at 06:54:13PM +0100, Steffen Prohaska wrote:
> diff --git a/convert.c b/convert.c
> index 4df7559..598cf0b 100644
> --- a/convert.c
> +++ b/convert.c
> @@ -132,6 +132,27 @@ static int crlf_to_git(const char *path, const char *src, size_t len,
> *dst++ = c;
> } while (--len);
> }
> + if (safe_crlf) {
> + if ((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);
> + }
This check is okay, however
> + } else {
> + /* autocrlf=true: check if we had LFs (without CR) */
> + 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);
> + }
> + }
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
next prev parent reply other threads:[~2008-01-12 19:15 UTC|newest]
Thread overview: 113+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-07 9:16 CRLF problems with Git on Win32 Peter Karlsson
2008-01-07 9:57 ` Steffen Prohaska
2008-01-07 10:00 ` Junio C Hamano
2008-01-07 12:15 ` Steffen Prohaska
2008-01-07 10:12 ` Jeff King
2008-01-07 18:47 ` Robin Rosenberg
2008-01-07 19:16 ` Johannes Schindelin
2008-01-07 21:03 ` Robin Rosenberg
2008-01-07 21:18 ` Johannes Schindelin
2008-01-07 21:40 ` Steffen Prohaska
[not found] ` <3B08AC4C-A807-4155-8AD7-DC6A6D0FE134-wjoc1KHpMeg@public.gmane.org>
2008-01-07 22:06 ` Junio C Hamano
[not found] ` <7vzlvhxpda.fsf-jO8aZxhGsIagbBziECNbOZn29agUkmeCHZ5vskTnxNA@public.gmane.org>
2008-01-07 22:58 ` Linus Torvalds
[not found] ` <alpine.LFD.1.00.0801071457040.3148-5CScLwifNT1QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
2008-01-07 23:46 ` Gregory Jefferis
2008-01-08 11:09 ` git and unicode Gonzalo Garramuño
2008-01-08 15:09 ` Remi Vanicat
2008-01-08 20:36 ` Robin Rosenberg
2008-01-08 8:55 ` CRLF problems with Git on Win32 Marius Storm-Olsen
2008-01-08 7:02 ` Steffen Prohaska
2008-01-08 7:29 ` Junio C Hamano
2008-01-08 10:08 ` Jeff King
2008-01-08 10:35 ` Junio C Hamano
2008-01-08 12:20 ` Gregory Jefferis
2008-01-08 17:29 ` J. Bruce Fields
[not found] ` <20080108172957.GG22155-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2008-01-08 17:56 ` Steffen Prohaska
2008-01-08 18:07 ` Junio C Hamano
2008-01-08 18:07 ` Junio C Hamano
[not found] ` <7vmyrgry20.fsf-jO8aZxhGsIagbBziECNbOZn29agUkmeCHZ5vskTnxNA@public.gmane.org>
2008-01-08 18:58 ` Steffen Prohaska
2008-01-08 19:09 ` J. Bruce Fields
2008-01-08 19:47 ` Junio C Hamano
[not found] ` <7vir24rtfp.fsf-jO8aZxhGsIagbBziECNbOZn29agUkmeCHZ5vskTnxNA@public.gmane.org>
2008-01-08 20:02 ` Steffen Prohaska
[not found] ` <B655B6FF-9377-434A-A979-2E758771B0FA-wjoc1KHpMeg@public.gmane.org>
2008-01-08 20:15 ` Junio C Hamano
[not found] ` <7v3at8rs4b.fsf-jO8aZxhGsIagbBziECNbOZn29agUkmeCHZ5vskTnxNA@public.gmane.org>
2008-01-08 20:39 ` Steffen Prohaska
2008-01-09 11:03 ` Johannes Schindelin
[not found] ` <alpine.LSU.1.00.0801091100401.31053-OGWIkrnhIhzN0uC3ymp8PA@public.gmane.org>
2008-01-09 12:45 ` Steffen Prohaska
[not found] ` <019B1C82-27BF-4B6B-981D-5498D31B5DD3-wjoc1KHpMeg@public.gmane.org>
2008-01-09 13:32 ` Johannes Schindelin
2008-01-08 20:41 ` Linus Torvalds
2008-01-09 8:03 ` Junio C Hamano
[not found] ` <7vd4sbmnmz.fsf-jO8aZxhGsIagbBziECNbOZn29agUkmeCHZ5vskTnxNA@public.gmane.org>
2008-01-09 10:48 ` Johannes Schindelin
2008-01-09 20:25 ` Junio C Hamano
[not found] ` <7vmyrehhkd.fsf-jO8aZxhGsIagbBziECNbOZn29agUkmeCHZ5vskTnxNA@public.gmane.org>
2008-01-09 20:50 ` Johannes Schindelin
[not found] ` <alpine.LSU.1.00.0801092047190. 31053@racer.site>
[not found] ` <alpine.LSU.1.00.0801092047190.31053-OGWIkrnhIhzN0uC3ymp8PA@public.gmane.org>
2008-01-09 21:03 ` Steffen Prohaska
[not found] ` <alpine.LSU.1.00.0801091041570.31053-OGWIkrnhIhzN0uC3ymp8PA@public.gmane.org>
2008-01-10 9:25 ` Peter Karlsson
[not found] ` <Pine.LNX.4.64.0801101023380.11922-Hh8n7enkEC8qi7mQTfpNuw@public.gmane.org>
2008-01-10 11:57 ` Johannes Schindelin
2008-01-11 3:03 ` Miles Bader
2008-01-11 3:03 ` Miles Bader
[not found] ` <alpine.LSU.1.00.080110115 5140.31053@racer.site>
[not found] ` <alpine.LSU.1.00.0801101155140.31053-OGWIkrnhIhzN0uC3ymp8PA@public.gmane.org>
2008-01-10 13:28 ` Peter Karlsson
2008-01-10 14:31 ` Peter Harris
[not found] ` <eaa105840801100631p6b95ed86j153d70244d474b03-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2008-01-11 13:12 ` Peter Karlsson
2008-01-11 15:39 ` Peter Harris
2008-01-08 19:59 ` Steffen Prohaska
2008-01-08 20:11 ` Junio C Hamano
[not found] ` <7vbq7wrsb6.fsf-jO8aZxhGsIagbBziECNbOZn29agUkmeCHZ5vskTnxNA@public.gmane.org>
2008-01-08 20:20 ` Steffen Prohaska
2008-01-08 20:50 ` Dmitry Potapov
[not found] ` <20080108205054.GN6951-EQL4cN526mwi5CQI31g/s0B+6BGkLq7r@public.gmane.org>
2008-01-08 21:15 ` Junio C Hamano
2008-01-08 21:57 ` Robin Rosenberg
2008-01-08 21:31 ` Linus Torvalds
[not found] ` <alpine.LFD.1.00.0801081325010.3148-5CScLwifNT1QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
2008-01-08 22:09 ` Sean
2008-01-08 22:51 ` Dmitry Potapov
[not found] ` <20080108225138.GA23240-EQL4cN526mwi5CQI31g/s0B+6BGkLq7r@public.gmane.org>
2008-01-09 0:01 ` Linus Torvalds
2008-01-09 8:43 ` Abdelrazak Younes
2008-01-10 19:58 ` Gregory Jefferis
2008-01-10 20:20 ` Linus Torvalds
2008-01-10 21:28 ` Gregory Jefferis
2008-01-10 23:23 ` Dmitry Potapov
2008-01-11 0:02 ` Linus Torvalds
2008-01-11 0:32 ` Junio C Hamano
2008-01-11 7:10 ` Steffen Prohaska
2008-01-11 15:58 ` Linus Torvalds
2008-01-11 16:28 ` Steffen Prohaska
2008-01-11 17:25 ` Linus Torvalds
2008-01-11 17:56 ` Steffen Prohaska
2008-01-11 18:10 ` Linus Torvalds
2008-01-11 18:29 ` Steffen Prohaska
2008-01-11 19:16 ` Linus Torvalds
2008-01-11 19:50 ` Sam Ravnborg
2008-01-11 21:18 ` Johannes Schindelin
2008-01-11 22:21 ` Sam Ravnborg
2008-01-12 15:08 ` Dmitry Potapov
2008-01-12 17:54 ` [PATCH] [WIP] safecrlf: Add mechanism to warn about irreversible crlf conversions Steffen Prohaska
2008-01-12 19:14 ` Dmitry Potapov [this message]
2008-01-13 9:05 ` [WIP v2] " Steffen Prohaska
2008-01-11 19:53 ` CRLF problems with Git on Win32 Christer Weinigel
2008-01-14 9:41 ` David Kågedal
2008-01-11 19:00 ` Gregory Jefferis
2008-01-12 15:26 ` Dmitry Potapov
2008-01-10 20:50 ` Rogan Dawes
2008-01-10 21:15 ` Gregory Jefferis
2008-01-11 1:15 ` Junio C Hamano
2008-01-07 21:36 ` Linus Torvalds
2008-01-08 21:26 ` Peter Karlsson
2008-01-09 10:56 ` Johannes Schindelin
2008-01-09 12:41 ` Steffen Prohaska
2008-01-09 13:52 ` Gregory Jefferis
2008-01-09 14:03 ` Johannes Schindelin
2008-01-09 15:22 ` Dmitry Potapov
2008-01-09 15:03 ` Dmitry Potapov
2008-01-09 17:37 ` Gregory Jefferis
2008-01-09 19:05 ` Dmitry Potapov
2008-01-07 21:42 ` Thomas Neumann
2008-01-08 10:56 ` Peter Karlsson
2008-01-08 11:07 ` Jeff King
2008-01-08 11:54 ` Johannes Schindelin
2008-01-08 11:52 ` Johannes Schindelin
2008-01-08 13:07 ` Peter Harris
2008-01-08 15:20 ` Peter Karlsson
2008-01-08 15:58 ` Kelvie Wong
2008-01-08 21:33 ` Dmitry Potapov
2008-01-09 18:46 ` Jan Hudec
2008-01-07 10:13 ` Peter Klavins
2008-01-07 12:58 ` Steffen Prohaska
2008-01-07 13:50 ` Peter Karlsson
2008-01-07 14:14 ` Peter Klavins
2008-01-07 16:05 ` Steffen Prohaska
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=20080112191429.GI2963@dpotapov.dyndns.org \
--to=dpotapov@gmail.com \
--cc=git@vger.kernel.org \
--cc=prohaska@zib.de \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
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;
as well as URLs for NNTP newsgroup(s).