3 个版本
0.1.2 | 2024 年 8 月 1 日 |
---|---|
0.1.1 | 2024 年 7 月 29 日 |
0.1.0 | 2024 年 7 月 28 日 |
#2727 在 命令行工具
525 每月下载量
1MB
4K SLoC
Serie
在终端中呈现丰富的 Git 提交图,就像魔法 📚
(此演示展示了 Ratatui 仓库!)
关于
Serie (/zéːriə/
) 是一个 TUI 应用程序,它使用终端仿真器的图像显示协议来渲染提交图,类似于 git log --graph --all
.
为什么?
虽然一些用户更喜欢通过 CLI 使用 Git,但他们通常依赖于 GUI 或功能丰富的 TUI 来查看提交日志。其他人可能认为 git log --graph
已足够。
个人而言,我发现 git log --graph
的输出难以阅读,即使有额外的选项。为了查看日志而学习复杂的工具似乎很繁琐。
目标
- 在终端中提供丰富的
git log --graph
体验。 - 提供以提交图为中心的 Git 仓库浏览。
非目标
- 实现一个功能齐全的 Git 客户端。
- 创建一个具有复杂 UI 的 TUI 应用程序。
要求
- Git
- 支持的终端仿真器
- 有关详细信息,请参阅 兼容性。
安装
Cargo
$ cargo install --locked serie
Arch Linux
$ pacman -S serie
Homebrew (macOS)
$ brew install lusingander/tap/serie
下载二进制文件
您可以从 发布 下载预编译的二进制文件。
从源代码构建
如果您想检查最新开发版本,请从源代码构建
$ git clone https://github.com/lusingander/serie.git
$ cd serie
$ cargo build --release
$ ./target/release/serie
[!注意] 如果不是发布构建,速度非常慢。
使用说明
基本
在你的git仓库所在目录中运行 serie
。
$ cd <your git repository>
$ serie
选项
Serie - A rich git commit graph in your terminal, like magic 📚
Usage: serie [OPTIONS]
Options:
-p, --protocol <TYPE> Image protocol to render graph [default: iterm] [possible values: iterm, kitty]
-o, --order <TYPE> Commit ordering algorithm [default: chrono] [possible values: chrono, topo]
--no-cache Do not use graph image cache
-h, --help Print help
-V, --version Print version
-p, --protocol <类型>
用于渲染提交图图像的协议类型。
有关详细信息,请参阅 兼容性。
-o, --order <类型>
--order chrono
如果可能,将按提交日期对提交进行排序。
--order topo
如果可能,将按分支顺序连续排序提交。
--no-cache
生成的图图像将保存到 $XDG_CACHE_HOME/serie
并重复使用。如果 $XDG_CACHE_HOME
未设置,则将使用 ~/.cache/
。
如果指定了 --no-cache
,则不会使用或保存此缓存图像。
快捷键
您可以通过按下 ?
键来查看快捷键。
所有快捷键列表
常用
键 | 描述 |
---|---|
Ctrl-c q | 退出应用 |
? | 打开帮助 |
提交列表
键 | 描述 |
---|---|
向下/向上 j/k | 向下/向上移动 |
g/G | 跳转到顶部/底部 |
Ctrl-f/b | 向下/向上滚动页面 |
Ctrl-d/u | 向下/向上滚动半页 |
H/M/L | 选择屏幕顶部/中部/底部 |
Enter | 显示提交详情 应用搜索(如果正在搜索) |
Tab | 打开引用列表 |
/ | 开始搜索 |
Esc | 取消搜索 |
n/N | 跳转到下一个/上一个搜索匹配项 |
c/C | 复制提交短/完整哈希值 |
提交详情
键 | 描述 |
---|---|
Esc Backspace | 关闭提交详情 |
向下/向上 j/k | 向下/向上滚动 |
c/C | 复制提交短/完整哈希值 |
引用列表
键 | 描述 |
---|---|
Esc Backspace Tab | 关闭引用列表 |
向下/向上 j/k | 向下/向上移动 |
g/G | 跳转到顶部/底部 |
向右/向左 l/h | 打开/关闭节点 |
c | 复制引用名称 |
帮助
键 | 描述 |
---|---|
Esc Backspace ? | 关闭帮助 |
向下/向上 j/k | 向下/向上滚动 |
配置
如果 $XDG_CONFIG_HOME/serie/config.toml
存在,它将被读取并使用。如果 $XDG_CONFIG_HOME
未设置,则将使用 ~/.cache/
。
如果配置文件不存在,将使用所有项目的默认值。如果配置文件存在但某些项目未设置,则将使用默认值设置未设置的项目。
配置文件格式
此示例中设置的值是默认值。
[ui.list]
# The minimum width of a subject in the commit list.
# type: u16
subject_min_width = 20
# The date format of a author date in the commit list.
# The format must be specified in strftime format.
# https://docs.rs/chrono/latest/chrono/format/strftime/index.html
# type: string
date_format = "%Y-%m-%d"
# The width of a author date in the commit list.
# type: u16
date_width = 10
# The width of a author name in the commit list.
# type: u16
name_width = 20
[ui.detail]
# The date format of a author/committer date in the commit detail.
# The format must be specified in strftime format.
# https://docs.rs/chrono/latest/chrono/format/strftime/index.html
# type: string
date_format = "%Y-%m-%d %H:%M:%S %z"
兼容性
支持的终端
以下协议受支持
以下终端已确认可以工作。
内联图像协议
终端仿真器 | 支持 | 注意 |
---|---|---|
iTerm2 | ○ | 但比其他终端慢 |
WezTerm | ○ | |
VSCode集成终端 | ○ | |
Hyper | △ | >=v4.0.0,尚未正式发布 |
Tabby | △ | 图形背景不透明 |
终端图形协议
终端仿真器 | 支持 | 注意 |
---|---|---|
kitty | ○ |
报告兼容性
请在其他终端仿真器上分享您的体验 讨论。
贡献
欢迎贡献。请查看 CONTRIBUTING.md 以开始。
截图
以下仓库用于这些示例
许可证
MIT
依赖项
约15-31MB
约473K SLoC