Project Icon

serie

终端中的Git提交图可视化工具

Serie是一款TUI应用程序,在终端中呈现Git提交图。它提供类似'git log --graph --all'的体验,支持基于提交图的Git仓库浏览。Serie兼容多种终端模拟器,如iTerm2、WezTerm和Kitty,并具有灵活的配置选项和键盘快捷键。这个工具简化了Git日志查看过程,为开发者展示清晰的提交历史。

Serie

Crate 状态

在你的终端中展示丰富的 git 提交图,如魔法般神奇 📚

(此演示展示的是 Ratatui 仓库!)

关于

Serie(发音为 /zéːriə/)是一个 TUI 应用程序,它使用终端模拟器的图像显示协议来渲染类似 git log --graph --all 的提交图。

为什么?

虽然一些用户更喜欢通过命令行使用 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

下载二进制文件

你可以从 releases 下载预编译的二进制文件。

从源码构建

如果你想检查最新的开发版本,可以从源码构建:

$ git clone https://github.com/lusingander/serie.git
$ cd serie
$ cargo build --release
$ ./target/release/serie

[!注意] 除非是发布版本,否则运行速度会非常慢。

使用方法

基本用法

在你的 git 仓库所在目录运行 serie

$ cd <你的 git 仓库>
$ serie

选项

Serie - 在你的终端中展示丰富的 git 提交图,如魔法般神奇 📚

用法: serie [选项]

选项:
  -p, --protocol <类型>  用于渲染图形的图像协议 [默认: auto] [可选值: auto, iterm, kitty]
  -o, --order <类型>     提交排序算法 [默认: chrono] [可选值: chrono, topo]
      --no-cache         不使用图形图像缓存
  -h, --help             打印帮助信息
  -V, --version          打印版本信息

-p, --protocol <类型>

用于渲染提交图图像的协议类型。 默认情况下,auto 将猜测当前终端最佳支持的协议。 Kitty 终端通过环境变量被检测为 kitty,其他所有终端都假定支持 iterm

详情请参阅兼容性

-o, --order <类型>

--order chrono 将尽可能按提交日期对提交进行排序。

--order topo 将尽可能连续排列同一分支上的提交。

--no-cache

生成的图形图像会被保存在 $XDG_CACHE_HOME/serie 并重复使用。 如果未设置 $XDG_CACHE_HOME,将使用 ~/.cache/

如果指定了 --no-cache,将不会使用或保存这个缓存图像。

快捷键

你可以通过按 ? 键查看快捷键。

默认快捷键可以被覆盖。请参考 default-keybind.toml 并将其添加到 config.toml

所有默认快捷键列表

通用

按键描述对应的快捷键
Ctrl-c q退出应用force_quit quit
?打开帮助help_toggle

提交列表

按键描述对应的快捷键
Down/Up j/k向下/向上移动navigate_down navigate_up
g/G跳到顶部/底部go_to_top go_to_bottom
Ctrl-f/b向下/向上滚动一页page_down page_up
Ctrl-d/u向下/向上滚动半页half_page_down half_page_up
H/M/L选择屏幕顶部/中间/底部select_top select_middle select_bottom
Enter显示提交详情
应用搜索(如果正在搜索)
confirm
Tab打开引用列表ref_list_toggle
/开始搜索search
Esc取消搜索cancel
n/N跳到下一个/上一个搜索匹配项go_to_next go_to_previous
c/C复制提交短/完整哈希值short_copy full_copy

提交详情

按键描述对应的快捷键
Esc Backspace关闭提交详情close cancel
Down/Up j/k向下/向上滚动navigate_down navigate_up
c/C复制提交短/完整哈希值short_copy full_copy

引用列表

描述对应的按键绑定
Esc Backspace Tab关闭引用列表close cancel ref_list_toggle
Down/Up j/k上下移动navigate_down navigate_up
g/G移至顶部/底部go_to_top go_to_bottom
Right/Left l/h展开/折叠节点navigate_right navigate_left
c复制引用名称short_copy

帮助

描述对应的按键绑定
Esc Backspace ?关闭帮助close cancel help_toggle
Down/Up j/k上下滚动navigate_down navigate_up

配置

如果 $XDG_CONFIG_HOME/serie/config.toml 存在,将会被读取并使用。 如果 $XDG_CONFIG_HOME 未设置,将使用 ~/.config/ 代替。

如果配置文件不存在,所有项目将使用默认值。 如果配置文件存在但某些项目未设置,这些未设置的项目将使用默认值。

配置文件格式

此示例中设置的值为默认值。

[ui.list]
# 提交列表中主题的最小宽度。
# 类型:u16
subject_min_width = 20
# 提交列表中作者日期的日期格式。
# 格式必须按 strftime 格式指定。
# https://docs.rs/chrono/latest/chrono/format/strftime/index.html
# 类型:string
date_format = "%Y-%m-%d"
# 提交列表中作者日期的宽度。
# 类型:u16
date_width = 10
# 是否在提交列表中以本地时区显示作者日期。
# 类型:boolean
date_local = true
# 提交列表中作者名称的宽度。
# 类型:u16
name_width = 20

[ui.detail]
# 提交详情中作者/提交者日期的日期格式。
# 格式必须按 strftime 格式指定。
# https://docs.rs/chrono/latest/chrono/format/strftime/index.html
# 类型:string
date_format = "%Y-%m-%d %H:%M:%S %z"
# 是否在提交列表中以本地时区显示作者/提交者日期。
# 类型:boolean
date_local = true

[keybind]
# 具体配置示例请参见 ./assets/default-keybind.toml。
# ...

兼容性

支持的终端

支持以下图像协议:

以下列出了已确认每种协议可在哪些终端上正常工作。

Inline Images Protocol

终端模拟器支持备注
iTerm2但比其他终端慢
WezTerm
VSCode 集成终端需要启用 terminal.integrated.enableImages 设置
Hyper>=v4.0.0,尚未正式发布
Tabby图形背景不透明

Terminal graphics protocol

终端模拟器支持备注
kitty

报告兼容性

请在 Discussions 分享您使用其他终端模拟器的体验。

贡献

要开始贡献,请查看 CONTRIBUTING.md

不遵循这些指南的贡献可能不会被接受。

截图

这些示例使用了以下仓库:

许可证

MIT

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号