I wanted to exclude a single massive directory from a checkout (the LayoutTests directory from WebKit, which includes 130k files), so I tried:
$ git config core.sparsecheckout true $ echo '*' > .git/info/sparse-checkout $ echo '!LayoutTests' >> .git/info/sparse-checkout $ git read-tree -m -u HEAD
But LayoutTests is not being excluded. I also tried every variation of including leading/trailing slash and trailing '*'.
Simple repro:
git init sparse-test && cd sparse-test && touch foo && mkdir bar && touch bar/baz && git add foo bar/baz && git commit -m initial && git config core.sparsecheckout true && echo '*' > .git/info/sparse-checkout && echo '!bar' >> .git/info/sparse-checkout && git read-tree -m -u HEAD && ls -1R foo
bar: baz
j.