#semver #changelog #git-repository #changelog-generator #versioning #command-line #command-line-tool

bin+lib gitscribe

A simple command line tool to generate a change log from a git repository and control the versioning of a project

18 releases (4 breaking)

0.5.2 Sep 20, 2024
0.5.1 Sep 3, 2024
0.5.0 Aug 30, 2024
0.4.0 Aug 20, 2024
0.1.17 Feb 12, 2024

#574 in Development tools

MIT/Apache

560KB
1K SLoC

GitScribe

  • A tool to help you maintain a changelog file in your project with semantic versioning.

Installation

Requirements

rust toolchain

install from cates.io

  • cargo install gitscribe

For A Better Experience

enforce the use of Conventional Commits in your project

Usage

gitscribe --help

setup your project

# go through the init process to create a new config file
gitscribe init

make a new release

# depending on the changes you made, you can use the following commands to make a new release version
gitscribe patch | minor | major

behind the scenes, it will do the following:

  • if no config file is found, it will create a new one
  • update the version in gitscribe.json
  • update or create a new changelog file
    • default file name is CHANGELOG.md and is placed in the root of the project
  • add and commit the changes

failed_patch

As seen above, you must have a clean working tree.

Below you can see a successful example

successful_patch

With the default configuration you get a new markdown changelog generated at the root of your project and new commit on your working branch that is a chore commit with the new version.

This tool will only output valid commits following conventional commit spec.

Setting aliases

to make it easier to use, you can set an alias in your shell configuration file

alias gs="gitscribe"

features

  • create a new changelog file

  • create multiple changelog files for different output formats

  • sync other package management files (pyproject.toml, package.json, cargo.toml) with the gitscribe.json version.

  • more to come..

Dependencies

~11–24MB
~292K SLoC