4 个版本

0.1.3 2024年4月24日
0.1.2 2024年4月24日
0.1.1 2023年10月15日
0.1.0 2023年10月15日

#1382开发工具

AGPL-3.0

61KB
2K SLoC

co-author

当结对编程或群体编程时,给予你的队友应有的认可。

co-author.webm

使用场景

当你在处理某段代码时遇到困难,知道向谁求助是有用的。

Git 的 blame 功能很棒,但它只提到了提交者,而没有提到结对/群体编程的伙伴。

了解还有谁参与了其中(可能提交者很忙或很久以前就离开了公司)是很有帮助的。

有许多编辑器插件(VSCodeJetBrains)遵循 GitHub 的共同作者提交指南

这是一个简单的 CLI 工具,实现了相同的功能,同时独立于编辑器,易于集成到现有的工作流程中。

安装

cargo install co-author

使用方法

Co-author 将会在你的当前工作目录中查找 authors.csv 文件,如果找不到,则会回退到 $XDG_CONFIG_HOME/co-author/$HOME/.config/co-author/$HOME/.co-author/$HOME,按照这个顺序。

此文件应遵循以下结构 alias,name,email

j,John Doe,john@users.noreply.github.com
aj,Alice Johnson,alice@example.com
bb,Bob Brown,bob@example.com
e,Erica Lee,erica@example.com

如果没有传递选项,它会提示您输入一个由空格分隔的别名列表,然后输入提交信息。

它将生成具有以下结构的提交信息

a commit message


Co-Authored-by: John Doe <[email protected]>
Co-Authored-by: Erica Lee <[email protected]>

如果您将多个用户分组在同一个别名下,它们将一次性被检索。

这特别有用,如果您在各个团队之间跳转,并且更愿意选择一组人而不是个人。

例如,对于这样的文件

j,John Doe,john@users.noreply.github.com
j,Jane Smith,jane@example.com

当给定别名 j 时,它将添加 两个用户 作为共同作者。

选项

您可以通过多种方式修改其行为,大多数都会绕过提示

co-author -h
Co-Author your git commits from the command line

Usage: co-author [OPTIONS]

Options:
  -f, --file <FILE>        CSV file containing a list of authors (alias,name,email)
  -l, --list <LIST>        List of comma separated author aliases
  -a, --all                Use all available authors
  -m, --message <MESSAGE>  Specify commit message
  -e, --editor             Open default editor for commit message
  -p, --pre-populate       Pre-populate prompt/editor with (first line of) last commit message
  -s, --sort               Sort authors signatures when adding to commit message
      --amend              Amend last commit, both message and authors will be overwritten
      --fzf                Use fzf for author selection
  -h, --help               Print help
  -V, --version            Print version

--file

指定不同的作者文件路径。

--list

使用预定义的别名列表。

这使得别名选择可脚本化。这也方便了与不同团队合作。

alias coa_proj_a="co-author --list a,b,c"
alias coa_proj_x="co-author --list x,y,z"

省略别名提示。

--all

使用文件中的所有别名。

--list 冲突。

省略别名提示。

--message

就像 git 的 -m 一样:指定提交信息。

省略消息提示。

--editor

就像 git 的默认行为:打开文本编辑器来编写提交信息。

它将在您的 git 设置中查找 editor 配置,如果找不到,则回退到 $EDITORvimvi,按此顺序。

省略消息提示。

--pre-populate

预先用上次提交信息的 主题 填充提示或编辑器,因此只需恢复第一行。

如果您使用 Conventional Commits 或其他标准,并且希望有相同的通用格式,只是类型或描述不同。

--message 冲突。

--sort

按签名(username <email>)对作者进行字母顺序排序。

如果没有使用,则将尊重 authors.csv 文件中的顺序。

--amend

修改最后一个提交,使用新提供的消息和作者覆盖消息和作者。

在内部启用 --pre-populate 标志。

--fzf

依赖于已安装的 fzf

使用您的 fzf 安装(和配置)来呈现作者选择器。使用 --multi 标志,因此按 Tab 键将选择多个作者。

完成后按 Enter 键继续提交信息。

fzf.webm

--all--list 冲突。

依赖项

~14–25MB
~408K SLoC