10 releases

0.4.1 Dec 26, 2021
0.4.0 Dec 25, 2021
0.3.5 Aug 20, 2021
0.3.4 Nov 10, 2020
0.1.0 May 23, 2020

#135 in Email

28 downloads per month

MIT license

16KB
257 lines

Git-mob

A command-line tool for social coding


This is a CLI tool for including your co-authors in your commits.

It is essentially a Rust clone of the git-mob NPM package.

Install

MacOS

If you have Homebrew installed, you can install git-mob using my tap:

brew install frost/tap/git-mob

Otherwise, see the section on binary packages

Binary packages for MacOS, Ubuntu, and Windows

Download the latest release and extract it somewhere so that the binaries end up in your $PATH.

From source

Just run cargo install git_mob and you should be all set.

A note on commit template and git-mob

git-mob will currently override any existing commit.template setting in any project where it is run. It does this in order to ensure that git commit will pick up your current mob.

The future plan is to do something a bit smarter, like first detecting if the repo already has a commit.template setting, and in that case, modify the existing template by adding Co-authored-by: trailers to it, or something similar.

Examples

  • Add Alice, Bob, and yourself as a possible co-authors:

    git add-coauthor a "Alice" alice@example.com
    git add-coauthor b "bob" Bob@example.com
    git add-coauthor me "me" myself.i@example.com
    
  • Set Alice as co-author, making your mob consist of you and Alice:

    git mob a
    
  • Set both Alice and Bob as co-authors, making your mob consist of the three of you:

    git mob a b
    
  • Set Alice as the main author for any commits you make, since she is the one doing most of the thinking anyway, and add yourself as a mob member:

    git mob -o a b me
    
  • Edit Bob's name, since you accidentally capitalized his email instead of his name:

    git edit-coauthor b --name "Bob" --email bob@example.com
    
  • Remove Bob as a possible co-author:

    git delete-coauthor b
    
  • List all available co-authors:

    git mob -l
    
  • Go back to coding by yourself again:

    git solo
    

Working features

  • git mob <co-author-initials>
  • git add-coauthor <initials> "Co-author Name" <co-author-email-address>
  • git -o <initials> for overwriting the main author
  • git edit-coauthor [--name "Co-author Name"] [--email <co-author-email-address>]
  • git delete-coauthor <initials>
  • git mob -l
  • git solo

TODO

There are some missing features from the original NPM package, that are yet to be implemented, and then there is also a severe lack of tests and documentation.

Missing features

  • git mob-print
  • git suggest-coauthors
  • --installTemplate and --uninstallTemplate for prepare-commit-msg

Why clone an existing, working CLI tool?

Basically, I was looking for some decent size project to write in Rust, and I didn't have any other ideas.

The NPM package works just fine. There's just one thing that annoys me about it, and that is that I have to install it in once for every node version that is used in any repo I work in. With this approach, I only need to install it once.

Dependencies

~13MB
~287K SLoC