jj-vcs/jj

FR: Use filesets for sparse checkouts

Open

#7815 aperta il 22 ott 2025

Vedi su GitHub
 (15 commenti) (1 reazione) (0 assegnatari)Rust (1052 fork)batch import
enhancement🏗️good first issue

Metriche repository

Star
 (28.830 star)
Metriche merge PR
 (Merge medio 23g 5h) (46 PR mergiate in 30 g)

Descrizione

After reading the Sparse Patterns V2 design doc I was wondering why we don't use the Filesets DSL to describe paths of a sparse checkout? Is there something I am missing or was that simply not considered as a possibility? (I just did a quick search which revealed nothing, but maybe I missed the argument against it...)

Suppose I have the following files in my working copy:

project1/foo.txt
project1/bar.txt
project2/foo.txt
project2/bar.txt
...
projectN/foo.txt
projectN/bar.txt

Now I want to restrict the checked out files to */foo.txt. Since both the current implementation as well as the Sparse Patterns V2 design doc use prefix-matching only (I.e. no glob-patterns) I really have to list all the files I am interested in:

jj sparse set --clear --add 'project1/foo.txt' --add 'project2/foo.txt' ...
# for the lazy ones:
ls */foo.txt | jj sparse edit --config 'ui.editor="tee"'

However, IMHO a simple jj sparse set 'glob:"*/foo.txt"' would be the better user experience.

Would a contribution with that change be accepted?

Guida contributor