#git-commit #git #tui #git-repository #terminal #cli

bin+lib serie

在终端中呈现丰富的 Git 提交图,就像魔法一样

3 个版本

0.1.2 2024 年 8 月 1 日
0.1.1 2024 年 7 月 29 日
0.1.0 2024 年 7 月 28 日

#2727命令行工具

Download history 73/week @ 2024-07-22 433/week @ 2024-07-29 19/week @ 2024-08-05

525 每月下载量

MIT 许可证

1MB
4K SLoC

Serie

Crate Status

在终端中呈现丰富的 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