jj-vcs/jj

FR: Use filesets for sparse checkouts

Open

#7,815 建立於 2025年10月22日

在 GitHub 查看
 (15 留言) (1 反應) (0 負責人)Rust (1,052 fork)batch import
enhancement🏗️good first issue

倉庫指標

Star
 (28,830 star)
PR 合併指標
 (平均合併 23天 5小時) (30 天內合併 46 個 PR)

描述

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?

貢獻者指南