Metadata-Version: 2.1
Name: git-improved
Version: 0.0.11
Summary: Add commands to simplify release and publish operation from Git CLI.
Home-page: UNKNOWN
License: UNKNOWN
Platform: UNKNOWN
Description-Content-Type: text/markdown
Requires-Dist: bump2version

# Git Improved

> Python package to add helpful git commands.

## :package: Installation

This package is available from [PyPI](https://pypi.org/project/git-improved/)

It can be installed using

```
pip install git-improved
```

## :star: Additional commands

```
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`, and `docs/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

---

```bash
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.

---

```bash
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.

## :fire: RoadMap

**Must**

- :fire: Add a `--template` option to `setup` to propose a more complete initialization of the project based on its type.
- :fire: 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
- Improve save command by adding an interactive mode to select staged files
- Add a `--no-changelog` option to `done` 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


