Starship Fork 管理
用于管理位于 ~/Projects/starship 的自定义 starship 分支(origin: TrevorS/starship,upstream: starship/starship)。该分支在 claude/add-jujutsu-support-JuqjU 分支上新增了 jj_status 模块,以为 Jujutsu 版本控制系统(VCS)提供支持。
一、仓库布局
- Origin:TrevorS/starship(该分支)
- Upstream:starship/starship
- 功能分支:claude/add-jujutsu-support-JuqjU
- 二进制安装路径:~/.local/bin/starship
- 配置:~/.config/starship.toml(由 ~/.claude/dotfiles/starship/ 通过 stow 管理)
二、与上游同步并重建
- 同步 master:
cd ~/Projects/starship git fetch upstream git checkout master git merge upstream/master --ff-only git push origin master
- 变基功能分支:
git checkout claude/add-jujutsu-support-JuqjU git rebase master
- 编译并安装:
cargo build --release cp target/release/starship ~/.local/bin/starship
- 推送变基后的分支:
git push origin claude/add-jujutsu-support-JuqjU --force-with-lease
三、快速重建(不同步上游)
当已有本地修改、只需重新编译时:
cd ~/Projects/starship cargo build --release cp target/release/starship ~/.local/bin/starship
四、验证
starship --version # 输出中应显示分支名 starship module jj_status # 在 jj 仓库中测试——应打印 change ID
五、jj_status 模块
该分支中的源码文件:
- src/modules/jj_status.rs — 模块实现(change ID、书签、conflict/divergent/hidden 标志)
- src/configs/jj_status.rs — 配置结构体与默认值
- src/modules/vcs.rs — VCS 探测(检测 .jj/ 目录)
- docs/config/README.md — 面向用户的文档
starship.toml 中的配置:
[jj_status] disabled = false # 模块默认处于禁用状态 truncation_length = 12 # change ID 显示长度 style = "bold purple" symbol = "jj " conflicted = "x" # 工作副本存在冲突时显示 divergent = "?" # change 处于 divergent 状态时显示 hidden = "o" # change 处于 hidden 状态时显示 ignore_working_copy = true # 跳过自动快照以加快提示符
六、运行测试
cd ~/Projects/starship cargo test jj # 仅运行 jj 相关测试 cargo test # 运行完整测试套件(较慢)
七、注意事项
- 未经明确批准,不要向上游提交 PR
- 该分支的 master 应始终保持为上游的干净快进(fast-forward)
- 所有自定义工作都位于功能分支上
- 首次编译约需 90 秒,增量编译会快得多
八、适用场景与限制
适用场景:更新 starship、重建二进制、与上游同步、修改或调试 jj_status 模块(Jujutsu VCS 支持)。
限制:以上流程依赖特定本地路径(~/Projects/starship、~/.local/bin/starship、~/.config/starship.toml)与特定分支名;首次完整编译较慢;不要未经批准向上游提交 PR。其他功能、收费、价格、平台或效果信息暂未提供。