Python package to add helpful git commands.
This package is available from PyPI
It can be installed using
pip install git-improved
git setup
Initialize devops configuration.
- Create a setup.cfg containing current version, and versioning config.
- Create a github action to document releases based on changelog.
- Create
docs/changelog.md
, anddocs/releases/
git wip [category] [description]
Create a branch to work on something.
- Branch has a category that describe kind of work. (e.g. Feature, CI/CD, Documentation, ...)
- Description explain what happens on this branch. If not passed, it is prompted.
git done
Merge current branch in main branch.
- Update [unreleased] section of changelog to reflect changes from current branch
- Merge current branch into main in a single commit (contains description of squashed commits)
git cancel
- Without arguments: Delete current branch from local and remote.
- With
-i
option: Prompt names of multiple branches to delete
git release [--version VERSION | --patch | --minor | --major]
Deploy a new release for current project.
- Increment version in all files it is referenced (configure in setup.cfg)
- Replace [unreleased] section of changelog with new version.
- Create a file in
docs/releases
to document this release.
git unrelease [-i] [version]
Delete a release from GitHub.
- You can pass the version of the release to delete (or a coma separated list of versions)
- Otherwise, use
-i
option to be prompted for versions to delete. - You can't pass both
version
and-i
flag.
Must
- 🔥 Add a
--template
option tosetup
to propose a more complete initialization of the project based on its type. - 🔥 Centralize commons functions used in commands in a library.
- Display a warning in save command if working on main branch
- Propose to create a wip branch from current changes to avoid commiting directly...
- Add an option to reset X last commits from main, put them on a branch, an perform magic merge.
- Add an empty github action that run on unrelease. (can be used to remove packages from registries when tag is deleted)
- Add roadmap/assign commands to avoid many people working on same feature
Should
- Study interesting uses cases of a rollback command that cancel changes introduced by a commit
- Implement interactive option of
unrelease
command. - Improve save command by adding an interactive mode to select staged files
- Add a
--no-changelog
option todone
command that indicates to not update changelog on merge.
Could
- Define a message syntax that indicates that a commit don't go in changelog (e.g prefix with ;)
- Require user to be logged into git using a token.
- Then retrieve author information from github to put in changelog