3 个不稳定版本
0.2.1 | 2023年6月23日 |
---|---|
0.2.0 | 2023年6月23日 |
0.1.1 | 2023年6月23日 |
#10 in #git-configuration
37KB
800 行
git-together
在遵循 git-pair 和 git-duet 的同时,无需改变现有的 git 习惯。
此项目是 Pivotal Lab 的 git-together 的分支。
git-together-ssh
是对 git-together
的附加修改,增加了根据当前活跃用户选择和使用 SSH 证书的功能。所有配置都与 git-together
兼容,除了 ~/.zshrc
中的别名。
安装
brew tap --force-auto-update section-31/tap https://gitlab.com/section-31/homebrew-tap
brew install section-31/tap/git-together-ssh
配置
以下是配置 git-together-ssh
的一种方法,但由于它使用 git config
来存储信息,因此还有许多其他方法。这个特定的例子假设希望在一个 .git-together
文件中按仓库级别存储作者。
# `git-together-ssh` is meant to be aliased as `git`
alias git=git-together-ssh
# Use .git-together per project for author configuration
git config --add include.path ../.git-together
# Or use one .git-together for all projects
git config --global --add include.path ~/.git-together
# Setting the default domain
git config --file .git-together --add git-together.domain rocinante.com
# Adding a couple authors
git config --file .git-together --add git-together.authors.jh 'James Holden; jholden'
git config --file .git-together --add git-together.authors.nn 'Naomi Nagata; nnagata'
# Adding an author with a different domain
git config --file .git-together --add git-together.authors.ca 'Chrisjen Avasarala; [email protected]'
为了与 zsh 完成匹配,您需要更新您的 .zshrc
以复制主 git 二进制文件中的现有完成规则
# initialize the compinit system if not already
autoload -U compinit
compinit
# tell zsh to use the completion setup for the git when using git-together
compdef git-together-ssh=git
使用
# Pairing
git with jh nn
# ...
git commit
# Soloing
git with nn
# ...
git commit
# Mobbing
git with jh nn ca
# ...
git commit
单人和小组模式会自动通过传递给 git with
的作者数量来设置。默认情况下,git-together-ssh
在提交后旋转作者,以便作者/提交者角色在配对/小组中随着时间的推移公平分配。
还支持别名。您可以通过配置以逗号分隔的别名列表来配置 git-together
使用提交命令的别名时执行其操作
git config git-together.aliases ci,rv,m
# ...
git ci
默认情况下,git-together
为单个本地仓库设置和旋转配对。如果您经常在多个仓库中使用配对,这可能很难在所有这些仓库中设置。可以通过传递 --global
标志来设置全局配对。默认情况下,git-together
仍将默认为本地仓库,因此如果您想从本地重置到全局,则可以使用 --clear
标志。
# Set for all repos
git with --global jh nn
# Override in single repo
git with nn
# Clear local and move back to global
git with --clear
技术细节
由于仓库级别的作者很常见,且在克隆仓库时没有好的方法配置 git config
,因此 git-together
将自动包含 .git-together
到 git config
中(如果存在)。(有关详细信息,请参阅 GitConfig::auto_include
)。这使得 git-together
在克隆仓库后无需手动配置即可立即工作。
在内部,git-together
为 commit
、merge
和 revert
子命令设置了 GIT_AUTHOR_NAME
、GIT_AUTHOR_EMAIL
、GIT_COMMITTER_NAME
和 GIT_COMMITTER_EMAIL
,以确保 git 提交具有正确的归属。此外,git-together
还将 --signoff
参数添加到 commit
和 revert
子命令中,以便提交消息包含 Signed-off-by:
行。
已知问题
git-together
通过别名化 git
本身来工作,因此将存在与 git 内置别名以及以相同方式工作的其他实用程序(如 Hub)相关的问题。
开发
Rust 版本
使用 rustup 工具安装 rust。由于需要构建 rust 的某些夜间功能,因此从 homebrew 安装将不会工作。
然后,使用以下命令切换到夜间版本:
rustup default nightly
Bats
Bats 是一个 bash 测试框架,在此用于集成测试。可以使用 homebrew 安装。
brew install bats
测试
cargo test
./bats/integration.bats
依赖关系
~11–20MB
~353K SLoC