Skip to content

A TUI/CLI tool to make co-authoring commits easier

License

Notifications You must be signed in to change notification settings

Slug-Boi/cocommit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cocommit

cocommit logo

Github Latest Release Github Actions Tests Github Actions Build Go Reference Co-Author Docs Github Page

Install:

Install Script

The repo contains two different install scripts for unix based system and windows. You can copy paste one of the commands below to use it.
Unix:

curl -L -o install.sh https://github.com/Slug-Boi/cocommit/raw/refs/heads/main/installer/install.sh && chmod +x install.sh && ./install.sh

Windows:
The windows script is untested so please let me know if it works and use at your own risk

Invoke-WebRequest -Uri https://github.com/Slug-Boi/cocommit/raw/refs/heads/main/installer/install.ps1 -OutFile install.ps1; .\install.ps1

Go Install

It should be possible to install the program using the go install command:

go install github.com/Slug-Boi/cocommit

You will more than likely have to add the binary to your PATH after the fact if your go bin directory is not in your PATH already. Or you can create an alias to it using the instructions below.

Manual Binary Install

Download the binary for your OS on the release page
Once downloaded you need to create an alias for your shell guides found below:
Bash Guide for alias
^please note if you use another shell than bash you will need to look up how to do it in that shell^
Powershell Guide for alias

Once you've created an alias for the program you need to create an author file. You can run the program and it will prompt you to create an author file if one is not found in the default location.

Optionally you can set an env variable (author_file) in your shell. This should be the path pointing to your author file
For bash you just need to add this to your .bashrc file:

export author_file='path/to/your/aurhors'

Powershell guide for env variable

Please note that the syntax line at the top of the authors file should not be deleted and that you must add at least one author to the file to run the program

Usage:

The CLI has two modes of operation, the CLI commands and the TUI below are guides on how to use both

TUI

To launch the TUI run the program with no args

$ cocommit

From here you will be asked to write a commit message and then select authors from a list. The TUI has lots of keybinds that can be seen on the list view by pressing ? (You can get to the list view by either creating a commit message or launching the TUI with the -a flag (stands for author_list)). You can create authors, add temp authors or do all of the usual selections like group selections, negated selections or select all. Below is a small gif/video showing a run through of the TUI.

^click me for video with timestamps^

CLI

$ cocommit "message" <name1> [name2] [name3]...

$ cocommit "message" <name:email1> [name:email2] [name:email3]...

$ cocommit "message" <name:email1> <name1> [name:email2]

$ cocommit "message" all
*adds all comitters execpt ones tagged with ex*

$ cocommit "message" ^<name1> ^[name2]
*adds all users except the negated users and users tagged with ex*

$ cocommit "message" <group_name>
*adds all users that has that group tag in author file*

$ cocommit "message"
*Runs git commit -m "message"*

$ cocommit users
*prints list of users*

Commitizen Integration

Note: This feature requires the commitizen package to be installed on your system.
If you want to write the commit message using commitizen you can use the cz command:

$ cocommit cz 

This will open the commitizen prompt and then you can select authors after as usual. By default it runs using the TUI mode of cocommit but you can use the -c flag to run it in CLI mode:

$ cocommit cz -c

This should allow for all the same utility as the normal CLI mode in terms of author selection

Syntax for the author file

The syntax for the author file can be found at the top of the template file included in the repo. It should look like this (opt) is optional syntax:

name_short|Name|Username|email (opt: |ex) (opt: ;;group1 or ;;group1|group2|group3...)

opt explained:
ex -> excludes the given author for all and negation selection commands
group -> groups an author which can then be called as an argument to add all people from that group. An author can be a part of multiple groups

Why?

Co-authoring commits is a feature that is supported by github and gitlab and other git hosting services but creating the commits can be a bit of a pain. Co-authoring is extremely useful as teams can be much more transparent in who worked on what and it can be a great way to give credit to people who have helped on projects. This will make git-blame a lot more useful as you can quickly see who to contact or talk to about a specific part of the code. I strongly believe that this feature is underutilized and i attribute it mostly to the fact that is combersome to use. This tool aims to fix and streamline that process. (It even allows for automation of the process with the CLI mode)

Bugs and Feature Requests

If you find any bugs or have any feature requests please open an issue on the github page and I will look at it, please note this is very much a passion project of mine so things will take time. Feel free to also open a PR if you want to contribute to the project this will be greatly appreciated