All Projects → bkuhlmann → milestoner

bkuhlmann / milestoner

Licence: other
A command line interface for crafting Git repository milestones.

Programming Languages

ruby
36898 projects - #4 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to milestoner

mummify
Version Control for Machine Learning
Stars: ✭ 43 (+59.26%)
Mutual labels:  version-control
NativeVersionControlPlugins
Version Control (Perforce, PlasticSCM) plugins for Unity
Stars: ✭ 25 (-7.41%)
Mutual labels:  version-control
snowfs
SnowFS - a fast, scalable version control file storage for graphic files 🎨
Stars: ✭ 1,101 (+3977.78%)
Mutual labels:  version-control
speckle-unity
AEC Interoperability for Unity through Speckle
Stars: ✭ 28 (+3.7%)
Mutual labels:  version-control
Squot
Squeak Object Tracker - Version control for arbitrary objects, currently with Git storage
Stars: ✭ 45 (+66.67%)
Mutual labels:  version-control
tag
Git utility to create tags in order to identify specific releases
Stars: ✭ 24 (-11.11%)
Mutual labels:  version-control
Reproducibilidad
Reproducible Science: what, why, how
Stars: ✭ 39 (+44.44%)
Mutual labels:  version-control
speckle-server
The Speckle Server, Frontend, 3D Viewer, & other JS utilities.
Stars: ✭ 224 (+729.63%)
Mutual labels:  version-control
straight.el
🍀 Next-generation, purely functional package manager for the Emacs hacker.
Stars: ✭ 2,035 (+7437.04%)
Mutual labels:  version-control
infinitree
Scalable and encrypted embedded database with 3-tier caching
Stars: ✭ 80 (+196.3%)
Mutual labels:  version-control
rhq
Manages your local repositories
Stars: ✭ 48 (+77.78%)
Mutual labels:  version-control
anchor
Create Dynamic CLI's as your GitOps Marketplace
Stars: ✭ 38 (+40.74%)
Mutual labels:  version-control
revctrl.org
An extract, as complete as I can make it, of content from the revctrl.org wiki
Stars: ✭ 13 (-51.85%)
Mutual labels:  version-control
kart
Distributed version-control for geospatial and tabular data
Stars: ✭ 253 (+837.04%)
Mutual labels:  version-control
VBA-IDE-Code-Export
Export & Import VBA code for use with Git (or any VCS)
Stars: ✭ 89 (+229.63%)
Mutual labels:  version-control
lambdacd-git
Git support for LambdaCD
Stars: ✭ 18 (-33.33%)
Mutual labels:  version-control
Verdant
An experimental tool that stores and visualizes local versioning in JupyterLab
Stars: ✭ 128 (+374.07%)
Mutual labels:  version-control
gogs-bash
Bash Script for Interacting with the GOGS API
Stars: ✭ 31 (+14.81%)
Mutual labels:  version-control
hardhat-abi-exporter
🧰 Export Solidity contract ABIs on compilation ⚙️
Stars: ✭ 29 (+7.41%)
Mutual labels:  version-control
git-stashout
A custom git checkout command to automatically manage a per-branch stash
Stars: ✭ 32 (+18.52%)
Mutual labels:  version-control

Milestoner

Milestoner is a command line interface for crafting Git repository tags (milestones) using semantic versions. Each milestone is a summary of all commits made since the last milestone. You can use Milestoner to inspect what is currently unreleased or create a new release via a single command. By having a tool, like Milestoner, you can quickly manage/automate releases in a consistent and reliable fashion. Milestoner also pairs well with Git Lint for further ensuring you have commit messages of high quality for your release notes.

Features

  • Uses Versionaire for Semantic Versioning.

    • Format: <major>.<minor>.<patch>.

    • Example: 0.1.0.

  • Ensures Git commits since last tag (or initialization of repository) are included.

  • Ensures Git commit messages are grouped by prefix, in order defined. For more details, see Git Lint Commit Subject Prefix for details. Defaults (can be customized):

    • Fixed

    • Added

    • Updated

    • Removed

    • Refactored

  • Ensures Git commit messages are alphabetically sorted.

  • Ensures duplicate Git commit messages are removed (if any).

  • Provides optional security for signing Git tags with GnuPG signing key.

Requirements

  1. A UNIX-based system.

  2. Ruby.

  3. GnuPG.

Setup

To install, run:

gem install milestoner

Usage

Command Line Interface (CLI)

From the command line, type: milestoner --help

USAGE:
  -c, --config ACTION                      Manage gem configuration. Actions: edit || view.
  -h, --help                               Show this message.
  -P, --publish VERSION                    Tag and push milestone to remote repository.
  -s, --status                             Show project status.
  -v, --version                            Show gem version.

SECURITY OPTIONS:
      --[no-]sign                          Sign with GPG key. Default: false.

Examples:

milestoner --config edit
milestoner --config view

milestoner --help

milestoner --publish 0.1.0
milestoner --publish 0.1.0 --sign
milestoner --publish 0.1.0 --no-sign

milestoner --status
milestoner --version

Customization

This gem can be configured via a global configuration:

~/.config/milestoner/configuration.yml

It can also be configured via XDG environment variables.

The default configuration is as follows:

:documentation:
  :format: "md"
:prefixes:
  - Fixed
  - Added
  - Updated
  - Removed
  - Refactored
:sign: false

Feel free to take this default configuration, modify, and save as your own custom configuration.yml.

The configuration.yml file can be configured as follows:

  • Documenation Format: Determines what format the status information should be rendered. Defaults to Markdown (i.e. md) but ASCII Doc (i.e. adoc) is supported too.

  • Git Commit Prefixes: Should the default prefixes not be desired, you can define Git commit prefixes that match your style. NOTE: Prefix order is important with the first prefix defined taking precedence over the second and so forth. Special characters are allowed for prefixes but should be enclosed in quotes. To disable prefix usage completely, use an empty array. Example: :prefixes: [].

  • Git Tag Sign: Defaults to false but can be enabled by setting to true. When enabled, a Git tag will require GPG signing for enhanced security and include a signed signature as part of the Git tag. This is useful for public milestones where the author of a milestone can be verified to ensure milestone integrity/security.

Security

To securely sign your Git tags, install and configure GPG:

brew install gpg
gpg --gen-key

When creating your GPG key, choose these settings:

  • Key kind: RSA and RSA (default)

  • Key size: 4096

  • Key validity: 0

  • Real Name: <your name>

  • Email: <your email>

  • Passphrase: <your passphrase>

To obtain your key, run the following and take the part after the forward slash:

gpg --list-keys | grep pub

Add your key to your global Git configuration in the [user] section. Example:

[user]
  signingkey = <your GPG key>

Now, when publishing a new milestone (i.e. milestoner --publish <version> --sign), signing of your Git tag will happen automatically. You will be prompted for the GPG Passphrase each time but that is to be expected.

Development

To contribute, run:

git clone https://github.com/bkuhlmann/milestoner.git
cd milestoner
bin/setup

You can also use the IRB console for direct access to all objects:

bin/console

Tests

To test, run:

bundle exec spec

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].