From: Junio C Hamano <gitster@pobox•com>
To: tboegi@web•de
Cc: git@vger•kernel.org
Subject: Re: [PATCH v2 4/7] convert.c: Use text_eol_is_crlf()
Date: Thu, 04 Feb 2016 12:13:00 -0800 [thread overview]
Message-ID: <xmqqlh70groz.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <1454608194-5417-1-git-send-email-tboegi@web.de> (tboegi@web.de's message of "Thu, 4 Feb 2016 18:49:54 +0100")
tboegi@web•de writes:
> From: Torsten Bögershausen <tboegi@web•de>
>
> Add a helper function to find out, which line endings
> text files should get at checkout, depending on
> core.autocrlf and core.eol
>
> Signed-off-by: Torsten Bögershausen <tboegi@web•de>
> ---
> convert.c | 25 +++++++++++++++++--------
> 1 file changed, 17 insertions(+), 8 deletions(-)
>
> diff --git a/convert.c b/convert.c
> index d0c8c66..9ffd043 100644
> --- a/convert.c
> +++ b/convert.c
> @@ -149,6 +149,19 @@ const char *get_wt_convert_stats_ascii(const char *path)
> return ret;
> }
>
> +static int text_eol_is_crlf(void)
> +{
> + if (auto_crlf == AUTO_CRLF_TRUE)
> + return 1;
> + else if (auto_crlf == AUTO_CRLF_INPUT)
> + return 0;
> + if (core_eol == EOL_CRLF)
> + return 1;
> + if (core_eol == EOL_UNSET && EOL_NATIVE == EOL_CRLF)
> + return 1;
> + return 0;
> +}
> +
> static enum eol output_eol(enum crlf_action crlf_action)
> {
> switch (crlf_action) {
> @@ -164,12 +177,7 @@ static enum eol output_eol(enum crlf_action crlf_action)
> /* fall through */
> case CRLF_TEXT:
> case CRLF_AUTO:
> - if (auto_crlf == AUTO_CRLF_TRUE)
> - return EOL_CRLF;
> - else if (auto_crlf == AUTO_CRLF_INPUT)
> - return EOL_LF;
> - else if (core_eol == EOL_UNSET)
> - return EOL_NATIVE;
> + return text_eol_is_crlf() ? EOL_CRLF : EOL_LF;
> }
> return core_eol;
> }
> @@ -1378,8 +1386,9 @@ struct stream_filter *get_stream_filter(const char *path, const unsigned char *s
> (crlf_action == CRLF_GUESS && auto_crlf == AUTO_CRLF_FALSE))
> filter = cascade_filter(filter, &null_filter_singleton);
>
> - else if (output_eol(crlf_action) == EOL_CRLF &&
> - !(crlf_action == CRLF_AUTO || crlf_action == CRLF_GUESS))
> + else if ((crlf_action == CRLF_AUTO || crlf_action == CRLF_GUESS))
> + ;
> + else if (output_eol(crlf_action) == EOL_CRLF)
> filter = cascade_filter(filter, lf_to_crlf_filter());
>
> return filter;
I am a bit slow today so let me talk this change through aloud.
The condition under which we called cascade_filter() used to be that
output_eol(crlf_action) yields EOL_CRLF and crlf_action is not set
to one of these two values. Now, we say if crlf_action is one of
these two values, we wouldn't call it, and then we check
output_eol().
So they do the same thing, even though it smells that this change is
outside the scope of "Add a helper and use it" theme of the patch.
While I do not think this new "split" conditions particularly easier
to read compared to the previous one, if you plan to do something
different in later patches when crlf_action is set to specific
values, ignoring what output_eol() says, a patch to implement such a
change would become easier to understand what is going on with this
preparatory rewrite. So if such a preparatory rewrite is coming (I
haven't checked 5-7/7 yet), perhaps have this hunk as a single patch
that is separate from "add a helper text_eol_is_crlf()" patch.
By the way, your new 1/7 has s/: Remove/: remove/ applied to the
subject, but not other ones like this one. Intended, or you forgot
to do s/: Use/: use/ here?
next prev parent reply other threads:[~2016-02-04 20:13 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Message-Id=1453558101-6858-1-git-send-email-tboegi@web.de>
2016-01-24 7:55 ` [PATCH v2] t0027: Add tests for get_stream_filter() tboegi
2016-01-27 6:34 ` Junio C Hamano
2016-01-27 9:05 ` Torsten Bögershausen
2016-01-27 15:15 ` [PATCH v1 1/6] " tboegi
2016-02-02 16:53 ` tboegi
2016-02-02 21:18 ` Junio C Hamano
2016-02-02 16:53 ` [PATCH v1 2/6] convert.c: Remove path when not needed tboegi
2016-02-02 21:32 ` Junio C Hamano
2016-02-02 16:53 ` [PATCH v1 3/6] convert.c: Remove input_crlf_action() tboegi
2016-02-02 21:44 ` Junio C Hamano
2016-02-02 16:53 ` [PATCH v1 4/6] convert.c: Use text_eol_is_crlf() tboegi
2016-02-02 16:53 ` [PATCH v1 5/6] convert: auto_crlf=false and no attributes set: same as binary tboegi
2016-02-02 16:53 ` [PATCH v1 6/6] convert.c: Refactor crlf_action tboegi
2016-02-04 17:49 ` [PATCH v2 1/7] t0027: Add tests for get_stream_filter() tboegi
2016-02-04 19:52 ` Junio C Hamano
2016-02-04 17:49 ` [PATCH v2 2/7] convert.c: remove unused parameter 'path' tboegi
2016-02-04 17:49 ` [PATCH v2 3/7] convert.c: Remove input_crlf_action() tboegi
2016-02-04 17:49 ` [PATCH v2 4/7] convert.c: Use text_eol_is_crlf() tboegi
2016-02-04 20:13 ` Junio C Hamano [this message]
2016-02-04 17:49 ` [PATCH v2 5/7] convert: auto_crlf=false and no attributes set: same as binary tboegi
2016-02-04 17:49 ` [PATCH v2 6/7] convert.c: Refactor crlf_action tboegi
2016-02-04 17:50 ` [PATCH v2 7/7] convert.c: simplify text_stat tboegi
2016-02-04 20:37 ` Junio C Hamano
2016-02-05 16:13 ` [PATCH v3 1/7] t0027: Add tests for get_stream_filter() tboegi
2016-02-08 17:59 ` Junio C Hamano
2016-02-05 16:13 ` [PATCH v3 2/7] convert.c: remove unused parameter 'path' tboegi
2016-02-05 16:13 ` [PATCH v3 3/7] convert.c: Remove input_crlf_action() tboegi
2016-02-05 16:13 ` [PATCH v3 4/7] convert.c: use text_eol_is_crlf() tboegi
2016-02-05 16:13 ` [PATCH v3 5/7] convert: auto_crlf=false and no attributes set: same as binary tboegi
2016-02-08 18:27 ` Junio C Hamano
2016-02-09 14:34 ` Torsten Bögershausen
2016-02-09 18:06 ` Junio C Hamano
2016-02-05 16:13 ` [PATCH v3 6/7] convert.c: refactor crlf_action tboegi
2016-02-05 16:13 ` [PATCH v3 7/7] convert.c: simplify text_stat tboegi
2016-02-10 16:24 ` [PATCH v4 1/6] t0027: add tests for get_stream_filter() tboegi
2016-02-10 16:24 ` [PATCH v4 2/6] convert.c: remove unused parameter 'path' tboegi
2016-02-10 16:24 ` [PATCH v4 3/6] convert.c: remove input_crlf_action() tboegi
2016-02-10 16:24 ` [PATCH v4 4/6] convert.c: use text_eol_is_crlf() tboegi
2016-02-10 16:24 ` [PATCH v4 5/6] convert.c: refactor crlf_action tboegi
2016-02-10 16:24 ` [PATCH v4 6/6] convert.c: simplify text_stat tboegi
2016-02-22 5:11 ` [PATCH 1/1] convert.c: correct attr_action tboegi
2016-02-22 5:34 ` Eric Sunshine
2016-02-22 8:04 ` Junio C Hamano
2016-02-22 8:20 ` Junio C Hamano
2016-02-23 5:26 ` Torsten Bögershausen
2016-02-23 17:07 ` [PATCH v2 " tboegi
2016-02-23 20:52 ` Junio C Hamano
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=xmqqlh70groz.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=tboegi@web$(echo .)de \
/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