Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/markchalloner/git-semver
Git plugin for Semantic Versioning
https://github.com/markchalloner/git-semver
Last synced: 5 days ago
JSON representation
Git plugin for Semantic Versioning
- Host: GitHub
- URL: https://github.com/markchalloner/git-semver
- Owner: markchalloner
- License: mit
- Created: 2015-06-08T15:11:34.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-01-21T13:43:47.000Z (almost 5 years ago)
- Last Synced: 2024-08-01T16:42:34.363Z (3 months ago)
- Language: Shell
- Size: 102 KB
- Stars: 378
- Watchers: 9
- Forks: 43
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Git Semantic Versioning
## Table Of Contents
- [Introduction](#introduction)
- [Installation](#installation)
- [Plugins](PLUGINS.md)
- [Keep A Changelog](PLUGINS.md#keep-a-changelog---keepachangelogsh)
- [NPM package.json](PLUGINS.md#npm-packagejson---npmpackagejsonsh)
- [Contributing](#contributing)## Introduction
A git plugin to make adherance to [Semantic Versioning 2.0.0] easier, with its own plugin architecture for optional
version management of:- [Keep a Changelog][Keep a CHANGELOG] [CHANGELOG.md] file
- [NPM] [package.json] file
- ...See [PLUGINS.md] for a description of plugins.
### Semantic versioning
[Semantic Versioning 2.0.0] is a scheme for versioning, which includes 3 parts e.g. ```3.2.1``` the components of which
are:- Major: Used only for backward compatible breaking changes, i.e. when we have an all new theme etc.
- Minor: Used for normal development, i.e. creating a new template
- Bug fixes## Installation
Via git clone.
``` bash
(git clone https://github.com/markchalloner/git-semver.git && sudo git-semver/install.sh)
```The installer installs git-semver into the first of the following directories that exist and are in the path:
- $HOME/.local/bin
- $HOME/bin
- /usr/local/bin
- /usr/local/bin
- /usr/bin
- /binIn Linux, OSX and Windows Cygwin the installer will create a symlink. In Windows MinGW creates a stub instead.
The installer will not overwrite any existing [configuration](#configuration) or [plugins][PLUGINS.md].
## Usage
### Get highest version tag
``` bash
git semver get
```Will return empty if no version has been created.
### Create a new version tag
Versions are created as tags and are generated using:
``` bash
git semver [major|minor|patch|next|pre-release|build] [--dryrun] [-p ] [-b ]
```To see what a tag would be without actually creating it, run a dryrun with `-d` or `--dryrun`:
```
git semver patch --dryrun
```#### Major
Increment the major component (0.1.0 -> 1.0.0), optionally adding a pre-release version and build metadata.
``` bash
git semver major [-p ] [-b ]
```If no version has been created, the initial version will be: **1.0.0\[-\]\[+\]**
#### Minor
Increment the minor component (0.1.0 -> 0.2.0), optionally adding a pre-release version and build metadata.
``` bash
git semver minor [-p ] [-b ]
```If no version has been created, the initial version will be: **0.1.0\[-\]\[+\]**
#### Patch (Next)
Increment the patch component (0.1.0 -> 0.1.1), optionally adding a pre-release version and build metadata.
``` bash
git semver patch|next [-p ] [-b ]
```If no version has been created, the initial version will be: **0.1.0\[-\]\[+\]**
#### Pre-release
Create a new pre-release version based on the next patch version if a release version exists (0.1.0 ->
0.1.1-) or the current patch version (0.1.0-alpha -> 0.1.0-) if it does not,
optionally adding build metadata.``` bash
git semver pre-release -p [-b ]
```If no version has been created, the initial version will be: **0.1.0-\[+\]**
#### Build
Create a new build based on the current patch version.
``` bash
git semver build -b
```If no version has been created, the initial version will be: **0.1.0+**
### Help
Run git semver with no arguments to see usage
``` bash
git semver [help]
```## Configuration
Git-semver will check for a configuration file in the following locations (and use the one that exists):
- `$GIT_REPO_ROOT/.git-semver`
- `$XDG_CONFIG_HOME/.git-semver/config`
- `$HOME/.git-semver/config`Git-semver will default to `$HOME/.git-semver/config` if no configuration file is found.
An example configuration file with the default settings can be found at [config.example].
## Updates
Updates can be done using git. Change to the cloned directory and run a git pull:
```
(cd $(dirname $(readlink $(which git-semver))) && git status)
```## Uninstallation
### Automatically
Via uninstaller in clone directory. Navigate to your original clone directory and run:
``` bash
sudo git-semver/uninstall.sh [-p|--purge]
```The purge switch will additionally remove the configuration directory.
### Manually
git-semver is installed by placing a symlink/stub in one of the bin directories in the path.
- ${HOME}/.local/bin
- ${HOME}/bin
- /usr/local/bin
- /usr/bin
- /binIt can be deleted easily:
``` bash
sudo rm $(which git-semver)
```The configuration directory can be removed with:
``` bash
rm -rf ${HOME}/.git-semver
```## Changelog
Please see [CHANGELOG.md] for more information what has changed recently.
## Contributing
Please see [CONTRIBUTING.md] for details.
[CHANGELOG.md]: CHANGELOG.md
[Change Log Management]: http://keepachangelog.com/
[CONTRIBUTING.md]: CONTRIBUTING.md
[config.example]: config.example
[Keep a CHANGELOG]: http://keepachangelog.com/
[NPM]: https://www.npmjs.com/
[package.json]: http://browsenpm.org/package.json
[PLUGINS.md]: PLUGINS.md
[Semantic Versioning 2.0.0]: http://semver.org/spec/v2.0.0.html