3 个版本 (稳定)

使用旧的 Rust 2015

1.0.1 2023 年 7 月 27 日
1.0.0 2021 年 2 月 22 日
0.1.0 2017 年 6 月 22 日

#883命令行实用工具

BSD-3-Clause

245KB
443

为您的 shell 提供信息丰富的版本控制提示

Build Status

一个小程序,用于在 shell 提示(如 Bash 或 ZSH)中打印当前 git/hg 仓库的摘要。

您可以选择两种样式——一种包含完整详情,另一种为最小化样式。两种样式都可以按您的喜好进行配置。

详细样式

详细样式显示 VCS 名称或符号、您的当前分支、您相对于跟踪分支领先/落后的提交数量以及已暂存的文件、已更改的文件、未跟踪的文件和冲突的数量。

vcprompt’s detailed style

看看它的实际效果!

最小化样式

最小化样式仅显示当前分支,并将仓库状态编码在 VCS 符号的颜色中:绿色表示干净,黄色表示存在未跟踪文件或未暂存更改,红色表示存在已暂存文件。

vcprompt’s minimal style

看看它的实际效果!

提示结构

详细格式的通用结构是

{vcs name/symbol}{branch}{branch tracking}{operations}|{local status}

最小化格式的结构是

{branch}{colored vcs symbol}

{VCS 名称/符号}

您可以显示 VCS 名称(例如 git 或 hg)或仅显示符号(例如 ± 或 ☿)。

{分支}

这只是当前分支的名称。在 Mercurial 仓库中,当前书签的名称也显示在那里(例如,default*mybookmark)。

{分支跟踪}

↑n    ahead of remote by n commits
↓n    behind remote by n commits
↓m↑n  branches diverged, other by m commits, yours by n commits

分支跟踪符号仅对 Git 仓库显示

{操作}

这是一个正在进行的操作列表,例如合并(|MERGING)或二分搜索(|BISECTING)。

{本地状态}

✔︎     repository clean
✚n    there are n staged files
✖︎n    there are n unmerged files
↻n    there are n modified (but unstaged) files
…n    there are n untracked files

Mercurial 会自动暂存已更改的文件,因此 已修改 文件始终显示为 已暂存

安装

您可以下载一个 二进制发行版 或使用以下方法之一安装 rust-vcprompt。

Homebrew

在 MacOS 上,您可以使用 Homebrew

$ brew tap sscherfke/rust-vcprompt
$ brew install rust-vcprompt

Cargo

您可以使用 Cargo 直接从 crates.io 安装

$ cargo install --root=$HOME/.local vcprompt

从源代码构建

  • 安装 Rust 和 Cargo。
  • 克隆此仓库并 cd 进入。
  • 运行 cargo build --release
  • target/release/vcprompt 复制到您的 PATH 中某个位置。

使用和自定义

$(vcprompt) (或使用最小风格,则为 $(vcprompt --minimal)) 插入到您的 shell 的提示变量中(例如,在 PS1.bashrcPROMPT.zshrc 中)。

您可以通过在 shell 的配置文件中导出以下环境变量之一来自定义输出的外观

export VCP_PREFIX=" "
export VCP_NAME="{symbol}"  # You can use "value" or "symbol" here
export VCP_BRANCH="{blue}{value}{reset}"
export VCP_OPERATION="{red}{value}{reset}"
export VCP_BEHIND="↓{value}"
export VCP_AHEAD="↑{value}"
export VCP_SEPARATOR="|"
export VCP_STAGED="{blue}✚{value}"  # +
export VCP_CONFLICT="{red}✖︎{value}"  # ×
export VCP_CHANGED="{yellow}↻{value}"  #
export VCP_UNTRACKED="{magenta}…{value}"
export VCP_CLEAN="{green}✔︎"  # ✓
export VCP_SUFFIX="{reset}"

上面的值是默认值,并且按照它们在输出中出现的顺序排列。

占位符 {value}/{symbol} 将被相应的值替换。占位符 {reset}{bold}{black}{red}{green}{yellow}{blue}{magenta}{cyan}{white} 将被相应的 ANSI 颜色代码替换。

最小风格仅使用变量 VCP_PREFIXVCP_BRANCHVCP_BEHINDVCP_AHEADVCP_SUFFIX

为什么?

此程序受 oh-my-zsh git-prompt 和原始的 vcprompt C 实现 的启发(并可以配置为与它们兼容)。

Rust-vcprompt 比 Python git-prompt(和类似的 Python 脚本)快得多。在我的机器上,对于较小的仓库,它需要 ~12ms,而对于有数千个提交的仓库,它需要 ~24ms,而 Python 实现至少需要 50ms。这使得 rust-vcprompt 更适合同步提示(您通常使用的提示)。

C 实现的性能与 rust-vcprompt 相当,也支持更多的版本控制系统。然而,rust-vcprompt 在格式化提示方面提供了更多的灵活性。

无运行时依赖