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

[PATCH] sparse-checkout: improve OS ls compatibility

From
Ed Maste <emaste@freebsd.org>
Date
Dec 19, 2019, 01:58 UTC
Message-ID
<20191219015833.49314-1-emaste@FreeBSD.org>
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.

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

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
-- 
2.24.0
Next: Derrick Stolee
Message 1 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.