jj-vcs/jj

FR: Add `sparse()` function to fileset DSL

Open

#7,816 创建于 2025年10月22日

在 GitHub 查看
 (1 评论) (0 反应) (0 负责人)Rust (1,052 fork)batch import
good first issuepolish🪒🐃

仓库指标

Star
 (28,830 star)
PR 合并指标
 (平均合并 23天 5小时) (30 天内合并 46 个 PR)

描述

Consider a jj repo with the following jj log -p output:

@  wutluqlk (no email set) 2025-10-22 20:26:42 f70513d9
│  (empty) (no description set)
○  lwurnozr (no email set) 2025-10-22 20:26:42 git_head() 5cb58091
│  Added bar.txt
│  Added regular file bar.txt:
│      (empty)
○  lxnszsvq (no email set) 2025-10-22 20:26:42 50288a6f
│  Added foo.txt
│  Added regular file foo.txt:
│      (empty)
◆  zzzzzzzz root() 00000000

Now I am just interested in the foo.txt file for the moment, so I limit the checked out files using jj sparse set --clear --add foo.txt. While this works as intended the jj log output still mentions the revision lwurnozr shown above, which is solely about files (well, in this example it's just bar.txt) I am currently not interested in.

For use cases like this I'd like to have a fileset function sparse(), which evaluates to a file set contained in the current sparse checkout. With such a function at hand I could use jj log -p -r 'files(sparse()) | empty()' to obtain a (potentially much) shorter output that contains indeed only the relevant changes:

@  wutluqlk (no email set) 2025-10-22 20:26:42 f70513d9
│  (empty) (no description set)
~  (elided revisions)
○  lxnszsvq (no email set) 2025-10-22 20:26:42 50288a6f
│  Added foo.txt
│  Added regular file foo.txt:
│      (empty)
◆  zzzzzzzz root() 00000000

贡献者指南