A better workflow for git.
Git plan allows you to write your commit messages in-advance, before you start coding. Then you can use those planned-commits as a template for your commit message when you are ready to commit your work. This makes it easier to plan your work and stay on-track.
This tool is in alpha stage. If anything breaks, please open an issue.
Installation
pip install git-plan
Usage
To use the tool, run git plan init
(or simply gp <command>
) to initialize, and then git plan add
to plan a new commit. When you are ready to make a commit
to git, use git plan commit
to use the plan as a template for your commit message.
git plan init
- initialize git plan in the.plan/
directorygit plan
- create a new plan, or list existing plansgit plan --version
- print version infogit plan --help
- print helpgit plan list [-l/--long] [-b/--branch]
- list existing plansgit plan add
- plan a new commitgit plan edit
- edit an existing plangit plan delete
- delete a plangit plan commit
- commit your work, choosing a plan as your commit message template
Contributing
- Download the tool and try it out
- Create an issue if you find a bug
- Open a discussion topic if you have a suggestion or question
- Fork the repository, fix a bug or add a feature, and open a PR
- If you'd like making a contribution please ask and we can help you.
Development
- Clone:
git clone https://github.com/synek/git-plan && cd git-plan
- Create a virtualenv:
python -m venv .venv && source .venv/bin/activate
- Install:
poetry install
(installs in the virtualenv) - Check:
git plan --version
orgp --version
(must be run from within the virtualenv) - Run tests:
tox
- Install pre-commit hooks:
poetry run pre-commit install
The minimum requirement is python3.6
.
Pre-Commit hooks
Failure on any of the hooks will prevent the action taking place.
Background and Future Work
Here is an interesting blog post about pre-emptive commit comments, and another about this project itself.
The next step for git plan
is to add support for importing plans from Github and Linear. There is a gap between "project planning" tools like Linear, and "project building" tools like git. I'd like to close that gap.
After that, I would like to make it less painful to context-switch while writing code. git plan
will be able to context-switch with you, and automatically stage your changes for you when you want to commit your work.