Re: [PATCH v10] ls-files: add eol diagnostics

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tboegi@xxxxxx writes:

> Changes agains pu:
> convert.c: 
>  - Indent switch case
>  - Introduced convert_is_binary() 
>
> ls-files.c:
>  - Early out in write_eolinfo()
>  - Use TAB instead of multiple spaces when -z is used
>
> t0027:
>  - case-esac indentattion
>  - cat EOF | sort, remove "e"
>  - Replace " with '
> Documentation/git-ls-files.txt:
>  -  Try to make things clearer
>  - -z turns SPACES inot TAB

Thanks for a summary.

>  Documentation/git-ls-files.txt |  30 +++++++++++
>  builtin/ls-files.c             |  24 +++++++++
>  convert.c                      | 119 +++++++++++++++++++++++++++++++----------
>  convert.h                      |   3 ++
>  t/t0027-auto-crlf.sh           | 112 +++++++++++++++++++++++++++++++++-----
>  5 files changed, 248 insertions(+), 40 deletions(-)
>
> diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt
> index e26f01f..03f4770 100644
> --- a/Documentation/git-ls-files.txt
> +++ b/Documentation/git-ls-files.txt
> @@ -12,6 +12,7 @@ SYNOPSIS
>  'git ls-files' [-z] [-t] [-v]
>  		(--[cached|deleted|others|ignored|stage|unmerged|killed|modified])*
>  		(-[c|d|o|i|s|u|k|m])*
> +		[--eol]
>  		[-x <pattern>|--exclude=<pattern>]
>  		[-X <file>|--exclude-from=<file>]
>  		[--exclude-per-directory=<file>]
> @@ -147,6 +148,23 @@ a space) at the start of each line:
>  	possible for manual inspection; the exact format may change at
>  	any time.
>  
> +--eol::
> +	Show <eolinfo> and <eolattr> of files.
> +	<eolinfo> is the file content identification used by Git when
> +	the "text" attribute is "auto" (or not set and core.autocrlf is not false).
> +	<eolinfo> is either "binary", "none", "lf", "crlf" or "mixed" or "".
> ++
> +"" means the file is not a regular file, it is not in the index or
> +not accessable in the working tree.
> ++
> +<eolattr> is the attribute that is used when checking out or committing,
> +it is either "", "-text", "text", "text=auto", "eol=lf", "eol=crlf".
> ++
> +Both the <eolinfo> in the index ("i/<eolinfo>")
> +and in the working tree ("w/<eolinfo>") are shown for regular files,
> +followed by the  ("attr/<eolattr>").
> +Whenever a file is not a regular file, both <eolinfo> and <eolattr> are "".

I think the last line is a subset of what you already said at the
beginning ("" means the file is not...).

> +		if (line_terminator == '\n')
> +			printf("i/%-6s w/%-6s attr/%-9s ", i_txt, w_txt, a_txt);

Can we do something better than these hard-coded constants?  Why
can't the "one HT between each" approach be used for both?

> +		else
> +			printf("i/%s\tw/%s\tattr/%s\t", i_txt, w_txt, a_txt);
> +	}

> +stats_ascii () {
> +	case "$1" in
> +	LF)
> +	echo lf
> +	;;

Indent the "do this thing" part one level down, i.e.

	case A in
        X)
        	do a thing
                ;;
	...
	esac

> @@ -214,6 +239,19 @@ checkout_files () {
>  		fi
>  	done
>  
> +	test_expect_success "ls-files --eol $lfname ${pfx}LF.txt" "
> +		test_when_finished 'rm expect actual' &&
> +		cat <<-EOF | sort >expect &&

Do you have to cat into a pipe?

		sort <<-EOF >expect &&

In general, "don't cat a single thing into a pipe".

> +		i/crlf w/$(stats_ascii $crlfname) ${src}CRLF.txt
> +		i/mixed w/$(stats_ascii $lfmixcrlf) ${src}CRLF_mix_LF.txt
> +		i/lf w/$(stats_ascii $lfname) ${src}LF.txt
> +		i/binary w/$(stats_ascii $lfmixcr) ${src}LF_mix_CR.txt
> +		i/binary w/$(stats_ascii $crlfnul) ${src}CRLF_nul.txt
> +		i/binary w/$(stats_ascii $crlfnul) ${src}LF_nul.txt
> +		EOF
> +		git ls-files --eol $src* | sed -e 's!attr/[=a-z-]*!!g' -e 's/  */ /g' | sort >actual &&

Break the pipeline, like this:

		git ls-files --eol $src* |
		sed -e 's!attr/[=a-z-]*!!g' -e 's/  */ /g' |
		sort >actual &&

> +		test_cmp expect actual
> +	"

Also, does the test body need to be quoted with double quotes,
allowing the substitutions happen _before_ the test runs?  We try to
enclose the last parameter to test_expect_success in single quotes
when possible, as subsitututing the $variables while computing the
arguments to the test_expect_success function historically was a
source of an unpleasant-to-debug bug (e.g. when they made the
resulting eval'ed string become syntactically incorrect).
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]