在 Windows 上使用
Jujutsu 在所有平台上的工作方式基本相同,但 Windows 用户需要注意一些特殊情况。
不会转换换行符
Jujutsu 目前不支持 .gitattributes
,也没有类似 Git 的 core.autocrlf 的设置。
这意味着:Jujutsu 会保留你提交时的换行符格式,并原样签出文件。这在所有平台上都是如此,但 Windows 用户最容易受到 CRLF 转换缺失的影响。
你的 Git 仓库可能希望 Windows 用户将 core.autocrlf
设置为 true
,以便在签出文件时将换行符从 LF 转换为 CRLF,在提交时再转换回 LF。
但 Jujutsu 并不了解这个规则,它在提交时会保留文件中的 CRLF 换行符。
在 Windows 上创建一个 colocated 仓库后,你很可能需要将 core.autocrlf
设置为 input
,然后运行 jj abandon
,将磁盘上的所有文件转换为 LF 换行符:
PS> git config core.autocrlf input
# 放弃当前工作副本后,Jujutsu 会使用提交时的换行符(很可能是 LF)覆盖所有包含 CRLF 的文件
PS> jj abandon
这样设置可以确保 Git 在签出文件时保留 LF 换行符,而不自动转换为 CRLF。 你需要确保你使用的工具(特别是 IDE)不要自动更改换行符格式。
分页器(Pagination)
在 Windows 上,jj 默认使用其内置分页器 streampager,除非你显式设置了环境变量 %PAGER%
或配置项 ui.pager
。
详细内容见 配置文档中的分页器部分。
如果你觉得内置分页器不满足需求,且你已经安装了 Git,可以使用 Git 自带的分页器:
PS> jj config set --user ui.pager '["C:\\Program Files\\Git\\usr\\bin\\less.exe", "-FRX"]'
PS> jj config set --user ui.paginate auto
在 PowerShell 中输入 @ 符号
PowerShell 使用 @
作为 数组子表达式运算符,
所以在命令中使用 @
时,通常需要转义或加引号:
PS> jj log -r `@
PS> jj log -r '@'
一个解决办法是创建一个 revset 别名。例如,将 HEAD
设置为 @
的别名:
PS> jj config set --user revset-aliases.HEAD '@'
PS> jj log -r HEAD
WSL 会将所有文件标记为可执行
当你通过 WSL 访问 Windows 磁盘(例如 /mnt/c 或类似路径)时,Windows 会将所有文件都暴露为“可执行”状态。 而 Jujutsu 会自动记录工作副本的变更,这会导致你仓库中的所有文件都被标记为“可执行”。
如果你只需要在 WSL 中访问仓库,最好的方法是将仓库克隆到 Linux 文件系统中(比如 ~/my-repo
)。
如果你希望同时在 WSL 和 Windows 中使用仓库,一个办法是: 在 Linux 文件系统中创建一个工作区:
PS> jj workspace add --name wsl ~/my-repo
然后,仅在 Linux 中使用 ~/my-repo
这个工作区。
符号链接(Symbolic Link)支持
jj 在 Windows 上只支持符号链接(symlink),前提是操作系统开启了这个功能。 这要求系统为 Windows 10 版本 14972 或更高,并且开启了 Developer Mode。 如果不满足这些条件,jj 会将符号链接保存为普通文件。
对于 colocated 仓库,还需要通过 Git 的配置项启用符号链接支持:
git config core.symlinks true