From: Lessley Dennington Date: Wed, 05 Jan 2022 20:13:22 GMT Subject: Bug report - sparse-checkout ignores prefix when run in subdirectories Message-ID: <29f0410e-6dfa-2e86-394d-b1fb735e7608@gmail.com> Hello everyone! See the following bug report pertaining to sparse-checkout when run outside top-level directories. Thank you for filling out a Git bug report! Please answer the following questions to help us understand your issue. What did you do before the bug happened? (Steps to reproduce your issue) $ git init -b main tmp $ cd tmp $ mkdir -p a/b/c $ touch a/b/c/d a/b/c/e $ git add a/ $ git commit -m "initial" $ cd a/ # Not at the top level anymore $ git sparse-checkout set --cone b/c $ git -C .. sparse-checkout list What did you expect to happen? (Expected behavior) We expected the output sparsity path to be a/b/c. What happened instead? (Actual behavior) The output was b/c. Running $ cat ../.git/info/sparse-checkout showed that the paths in this file were incorrect: /* !/*/ /b/ !/b/*/ /b/c/ What's different between what you expected and what actually happened? The output path and the paths in the sparse-checkout file are missing the expected 'a' prefix. This means that the `set` and `add` subcommands of `sparse-checkout` can only be safely run from a repo's top-level directory. Anything else you want to add: This was discovered by newren@gmail.com in my recent tab-completion series. You can find additional context at [1]. Please review the rest of the bug report below. You can delete any lines you don't wish to share. [System Info] git version: git version 2.34.1.88.gcecf501e07.dirty (local build, based off en/sparse-checkout-set) cpu: x86_64 shell-path: /bin/zsh uname: Darwin compiler info: Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk /usr/include/c++/4.2.1 Apple clang version 13.0.0 (clang-1300.0.29.3) Target: x86_64-apple-darwin20.6.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin $SHELL (typically, interactive shell): /bin/zsh -Lessley [1]: https://lore.kernel.org/git/CABPp-BGdr54XgCXw8k1xRCgkwBtDonyODS3O+_nS_QY3SOEFGQ@mail.gmail.com/