# git-z
[
![Crates.io](https://img.shields.io/crates/v/git-z)
](https://crates.io/crates/git-z)
[![Crates.io License](https://img.shields.io/crates/l/git-z)](LICENSE)
A Git extension to go beyond.
## Features
Currently available:
* A wizard to format commit messages according to [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/). It is configurable
with:
* a list of valid commit types and their descriptions,
* whether to ask for a scope,
* if applicable, a list of valid scopes,
* whether to ask for a ticket / issue reference,
* automated ticket / issue reference information from the name of the
branch,
* a custom commit template.
On the roadmap:
* A validator to ensure commit messages follow [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/), optionally
including a valid ticket reference.
* A wizard to create a branch—and optionally a worktree—from a GitHub / GitLab
issue or Jira ticket.
## Setup
### Installation with Nix
If you are a **Nix** user on **Linux** or **macOS**, you can add `git-z` to your
user profile by running:
nix profile install github:ejpcmac/git-z
Alternatively, you can add `git-z` to your development environment by setting
up a `flake.nix` like this:
Click to expand the example
```nix
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
flake-parts.url = "github:hercules-ci/flake-parts";
git-z.url = "github:ejpcmac/git-z";
};
outputs = { flake-parts, ... }@inputs:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" ];
perSystem = { inputs', ... }:
let
pkgs = inputs'.nixpkgs.legacyPackages;
git-z = inputs'.git-z.packages.git-z;
in
{
devShells.default = pkgs.mkShell {
buildInputs = [
# Tools
git-z
# Other dependencies
];
};
};
};
}
```
### Installation from the Debian package
If you are a **Debian** user—or of derivatives like **Ubuntu**—, you can install
`git-z` by running:
curl -OL https://github.com/ejpcmac/git-z/releases/download/v0.2.1/git-z_0.2.1-1_amd64.deb
sudo apt update
sudo apt install ./git-z_0.2.1-1_amd64.deb
### Installation from the MSI package
If you are a **Windows** user, you can download an MSI package on the [the
release page](https://github.com/ejpcmac/git-z/releases/latest) and install it.
You may need to allow its execution by doing *Right Click > Properties*, then
checking the *Unblock* box in the security section at the bottom of the page.
### Installation from a pre-built binary
If you are a user of any other **Linux** distribution, **macOS** or **Windows**,
you can download a statically-linked executable on [the release
page](https://github.com/ejpcmac/git-z/releases/latest). Just rename it to
`git-z`—or `git-z.exe` on Windows—and put it somewhere in your `PATH`.
### Installation with Cargo
If you are a **Rust programmer**, you can install `git-z` by running:
cargo install git-z
## Usage
Run:
git add
git z commit
You can customise the behaviour of `git-z`:
* define the list of valid types with their description,
* choose whether to ask for a scope,
* define a list pre-defined valid scopes,
* ask or require a ticket / issue number.
To do this, initialise a configuration by running:
git z init
Then, edit the `git-z.toml` at the root of your repository.
## Building an installer
### Linux (Debian)
From inside a Nix devshell, you can run:
$ build-deb
You should then find a Debian package in
`target/x86_64-unknown-linux-musl/debian/`.
### Windows
With a Rust toolchain installed on your machine, you can:
1. Install [WiX v3](https://wixtoolset.org/docs/wix3/).
2. Run:
> cargo install cargo-wix
> cargo wix --package git-z --nocapture
You should find an installer in `target/wix/`.
## [Contributing](CONTRIBUTING.md)
Before contributing to this project, please read the
[CONTRIBUTING.md](CONTRIBUTING.md).
## License
Copyright © 2023-2024 Jean-Philippe Cugnet
This project is licensed under the [GNU General Public License 3.0](LICENSE).