git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] sparse-checkout: improve OS ls compatibility

From
Derrick Stolee <stolee@gmail.com>
Date
Dec 19, 2019, 02:07 UTC
Message-ID
<46d9f9dd-b278-bade-af48-3a3bd2e4aa5e@gmail.com>
In-Reply-To
<20191219015833.49314-1-emaste@FreeBSD.org>
On 12/18/2019 8:58 PM, Ed Maste wrote:
Thanks for the report!
It was a little unclear from the get-go what exactly the issue is.
Show 5 quoted lines
> On FreeBSD, when executed by root ls enables the '-A' option:
> 
>   -A  Include directory entries whose names begin with a dot (`.')
>       except for . and ...  Automatically set for the super-user unless
>       -I is specified.

It appears that the "ls" commands in the sparse-checkout tests are reporting the ".git" directory when executed on FreeBSD as root. Is this only as root?

> Pipe ls's output to grep -v .git to remove the undesired entry.  Also
> pass the -1 option to ensure one entry per line.

What if we instead ran "ls -a" and added .git to our expected output (when appropriate)? Would that be simpler (and reduce the process count that this solution introduces).

Thanks,
-Stolee
 
Show 152 quoted lines
> Signed-off-by: Ed Maste <emaste@FreeBSD.org>
> ---
> There are several different ways this could be solved; this approach
> felt cleanest to me, but there are at least two other reasonable
> alternatives:
> 
>   * Add -a to the invocations and .git to the expected output
> 
>   * Add LSFLAGS and set it to -I on BSDs, to turn off the special dot
>     behaviour
> 
> I'll submit a new patch if a different approach is preferred.
> 
>  t/t1091-sparse-checkout-builtin.sh | 33 +++++++++++++++++-------------
>  1 file changed, 19 insertions(+), 14 deletions(-)
> 
> diff --git a/t/t1091-sparse-checkout-builtin.sh b/t/t1091-sparse-checkout-builtin.sh
> index cee98a1c8a..3a3eafa653 100755
> --- a/t/t1091-sparse-checkout-builtin.sh
> +++ b/t/t1091-sparse-checkout-builtin.sh
> @@ -4,6 +4,11 @@ test_description='sparse checkout builtin tests'
>  
>  . ./test-lib.sh
>  
> +ls_no_git()
> +{
> +	ls -1 "$1" | grep -v .git
> +}
> +
>  test_expect_success 'setup' '
>  	git init repo &&
>  	(
> @@ -50,7 +55,7 @@ test_expect_success 'git sparse-checkout init' '
>  	EOF
>  	test_cmp expect repo/.git/info/sparse-checkout &&
>  	test_cmp_config -C repo true core.sparsecheckout &&
> -	ls repo >dir  &&
> +	ls_no_git repo >dir  &&
>  	echo a >expect &&
>  	test_cmp expect dir
>  '
> @@ -73,7 +78,7 @@ test_expect_success 'init with existing sparse-checkout' '
>  		*folder*
>  	EOF
>  	test_cmp expect repo/.git/info/sparse-checkout &&
> -	ls repo >dir  &&
> +	ls_no_git repo >dir  &&
>  	cat >expect <<-EOF &&
>  		a
>  		folder1
> @@ -90,7 +95,7 @@ test_expect_success 'clone --sparse' '
>  		!/*/
>  	EOF
>  	test_cmp expect actual &&
> -	ls clone >dir &&
> +	ls_no_git clone >dir &&
>  	echo a >expect &&
>  	test_cmp expect dir
>  '
> @@ -119,7 +124,7 @@ test_expect_success 'set sparse-checkout using builtin' '
>  	git -C repo sparse-checkout list >actual &&
>  	test_cmp expect actual &&
>  	test_cmp expect repo/.git/info/sparse-checkout &&
> -	ls repo >dir  &&
> +	ls_no_git repo >dir  &&
>  	cat >expect <<-EOF &&
>  		a
>  		folder1
> @@ -139,7 +144,7 @@ test_expect_success 'set sparse-checkout using --stdin' '
>  	git -C repo sparse-checkout list >actual &&
>  	test_cmp expect actual &&
>  	test_cmp expect repo/.git/info/sparse-checkout &&
> -	ls repo >dir  &&
> +	ls_no_git repo >dir  &&
>  	cat >expect <<-EOF &&
>  		a
>  		folder1
> @@ -154,7 +159,7 @@ test_expect_success 'cone mode: match patterns' '
>  	git -C repo read-tree -mu HEAD 2>err &&
>  	test_i18ngrep ! "disabling cone patterns" err &&
>  	git -C repo reset --hard &&
> -	ls repo >dir  &&
> +	ls_no_git repo >dir  &&
>  	cat >expect <<-EOF &&
>  		a
>  		folder1
> @@ -177,7 +182,7 @@ test_expect_success 'sparse-checkout disable' '
>  	test_path_is_file repo/.git/info/sparse-checkout &&
>  	git -C repo config --list >config &&
>  	test_must_fail git config core.sparseCheckout &&
> -	ls repo >dir &&
> +	ls_no_git repo >dir &&
>  	cat >expect <<-EOF &&
>  		a
>  		deep
> @@ -191,24 +196,24 @@ test_expect_success 'cone mode: init and set' '
>  	git -C repo sparse-checkout init --cone &&
>  	git -C repo config --list >config &&
>  	test_i18ngrep "core.sparsecheckoutcone=true" config &&
> -	ls repo >dir  &&
> +	ls_no_git repo >dir  &&
>  	echo a >expect &&
>  	test_cmp expect dir &&
>  	git -C repo sparse-checkout set deep/deeper1/deepest/ 2>err &&
>  	test_must_be_empty err &&
> -	ls repo >dir  &&
> +	ls_no_git repo >dir  &&
>  	cat >expect <<-EOF &&
>  		a
>  		deep
>  	EOF
>  	test_cmp expect dir &&
> -	ls repo/deep >dir  &&
> +	ls_no_git repo/deep >dir  &&
>  	cat >expect <<-EOF &&
>  		a
>  		deeper1
>  	EOF
>  	test_cmp expect dir &&
> -	ls repo/deep/deeper1 >dir  &&
> +	ls_no_git repo/deep/deeper1 >dir  &&
>  	cat >expect <<-EOF &&
>  		a
>  		deepest
> @@ -234,7 +239,7 @@ test_expect_success 'cone mode: init and set' '
>  		folder1
>  		folder2
>  	EOF
> -	ls repo >dir &&
> +	ls_no_git repo >dir &&
>  	test_cmp expect dir
>  '
>  
> @@ -256,7 +261,7 @@ test_expect_success 'revert to old sparse-checkout on bad update' '
>  	test_must_fail git -C repo sparse-checkout set deep/deeper1 2>err &&
>  	test_i18ngrep "cannot set sparse-checkout patterns" err &&
>  	test_cmp repo/.git/info/sparse-checkout expect &&
> -	ls repo/deep >dir &&
> +	ls_no_git repo/deep >dir &&
>  	cat >expect <<-EOF &&
>  		a
>  		deeper1
> @@ -313,7 +318,7 @@ test_expect_success 'cone mode: set with core.ignoreCase=true' '
>  		/folder1/
>  	EOF
>  	test_cmp expect repo/.git/info/sparse-checkout &&
> -	ls repo >dir &&
> +	ls_no_git repo >dir &&
>  	cat >expect <<-EOF &&
>  		a
>  		folder1
> 
Previous: Ed MasteNext: Ed Maste
Message 2 of 24 in “sparse-checkout: improve OS ls compatibility”
  1. sparse-checkout: improve OS ls compatibilityEd Maste, Dec 19, 2019
  2. Derrick StoleeDec 19, 2019
  3. Ed MasteDec 19, 2019
  4. Derrick StoleeDec 19, 2019
  5. Eric WongDec 19, 2019
  6. Derrick StoleeDec 19, 2019
  7. Ed MasteDec 19, 2019
  8. Derrick StoleeDec 19, 2019
  9. Junio C HamanoDec 19, 2019
  10. Ed MasteDec 19, 2019
  11. Junio C HamanoDec 19, 2019
  12. sparse-checkout: improve OS ls compatibilityEd Maste, Dec 19, 2019
  13. Denton LiuDec 19, 2019
  14. sparse-checkout: improve OS ls compatibilityEd Maste, Dec 20, 2019
  15. Derrick StoleeDec 20, 2019
  16. Junio C HamanoDec 20, 2019
  17. Eric SunshineDec 20, 2019
  18. Ed MasteDec 20, 2019
  19. Junio C HamanoDec 20, 2019
  20. Eric SunshineDec 20, 2019
  21. Ed MasteDec 20, 2019
  22. Junio C HamanoDec 20, 2019
  23. Eric SunshineDec 20, 2019
  24. sparse-checkout: improve OS ls compatibilityEd Maste, Dec 20, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.