git-together
Following in the footsteps of git-pair and git-duet, but without needing to change your existing git habits.
This project is a fork of Pivotal Lab's git-together.
git-together-ssh
is a bolt-on modification to git-together
, adding functionality to select and use an SSH cert based on the user currently active. All config is compatible with git-together
, except for the aliasing in ~/.zshrc
.
Installation
Configuration
Here's one way to configure git-together-ssh
, but since it uses git config
to
store information, there are many other ways to do it. This particular example
assumes a desire to store authors at the repo-level in a .git-together
file.
# `git-together-ssh` is meant to be aliased as `git`
# Use .git-together per project for author configuration
# Or use one .git-together for all projects
# Setting the default domain
# Adding a couple authors
# Adding an author with a different domain
For completion with zsh, you'll need to update your .zshrc
to copy the existing completion rules
from the main git binary
# initialize the compinit system if not already
# tell zsh to use the completion setup for the git when using git-together
Usage
# Pairing
# ...
# Soloing
# ...
# Mobbing
# ...
Soloing and mobbing are automatically set by the number of authors passed to
git with
. git-together-ssh
rotates authors by default after making a commit so
that the author/committer roles are fairly spread across the pair/mob over
time.
Aliases are supported as well. You can make git-together do its thing when you use an alias for a committing command by configuring a comma-separated list of aliases:
# ...
By default, git-together
sets and rotates pairs for a single local
repository. If you are working across multiple repos with a pair on a regular
basis, this can be difficult to set across all of them. The --global
flag can
be passed along to set a global pair. git-together
will still default to a
local repository, so if you'd like to reset from local to global, you can use
the --clear
flag.
# Set for all repos
# Override in single repo
# Clear local and move back to global
Technical Details
Because repo-level authors are common and there's no good way of configuring
git config
on cloning a repo, git-together
will automatically include
.git-together
to git config
if it exists. (See GitConfig::auto_include
for details.) This allows git-together
to work immediately on cloning a repo
without manual configuration.
Under the hood, git-together
sets GIT_AUTHOR_NAME
, GIT_AUTHOR_EMAIL
,
GIT_COMMITTER_NAME
, and GIT_COMMITTER_EMAIL
for the commit
, merge
, and
revert
subcommands so that git commits have the correct attribution..
git-together
also adds the --signoff
argument to the commit
and revert
subcommands so that the commit message includes the Signed-off-by:
line.
Known Issues
git-together
works by aliasing git
itself, so there are going to be issues
with git's in-built aliases as well as other utilities (such as Hub)
that work in the same manner.
Development
Rust version
Install rust using the rustup tool. Installing from homebrew won't work because some nightly features of rust are needed to build.
Then, switch to the nightly with
Bats
Bats is a bash testing framework, used here for integration tests. This can be installed with homebrew.
Testing