3 unstable releases

0.2.1 Sep 25, 2024
0.2.0 Dec 28, 2023
0.1.0 Dec 1, 2023

#1161 in Development tools

Download history 8/week @ 2024-07-28 146/week @ 2024-09-22 25/week @ 2024-09-29

171 downloads per month

GPL-3.0-only

130KB
2.5K SLoC

git-z

Crates.io Crates.io License

A Git extension to go beyond.

Features

Currently available:

  • A wizard to format commit messages according to Conventional Commits. 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, 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
{
  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 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. 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 <your modifications>
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.

  2. Run:

     > cargo install cargo-wix
     > cargo wix --package git-z --nocapture
    

You should find an installer in target/wix/.

Contributing

Before contributing to this project, please read the CONTRIBUTING.md.

License

Copyright © 2023-2024 Jean-Philippe Cugnet

This project is licensed under the GNU General Public License 3.0.

Dependencies

~20–36MB
~513K SLoC