GOG is an Opinionated Git workflow CLI tool written in Golang to help developers enforce consistency and strong project/version management within their projects without the added complexity of manual process documentation. Rather GOG allows you to focus on developing features and bringing value to stakeholders rather than managing versions, dependencies and CHANGELOGs.
curl -sSL https://raw.githubusercontent.com/SystemFiles/GOG/master/INSTALL.sh | bash /dev/stdin
This will install the latest version of GOG on a Linux or OSX target.
TBD
gog (feature(feat) | push(p) | finish(fin)) [options ...] [-h] [-help]
Usage: gog (feature | feat) <jira> <comment> [-from-feature] [-h] [-help]
-------====== Feature Arguments ======-------
jira
specifies the JIRA issue we are working under
comment
specifies a human-readable comment describing the issue/feature
------================================------
-from-feature
specifies if this feature will be based on the a current feature branch
-prefix string
optionally specifies a version prefix to use for this feature which will override existing prefix in global GOG config
-------================================-------
Usage: gog (push | p) [message] [-h] [-help]
-------====== Push Arguments ======-------
message
specifies a commit message for this feature push
-------================================-------
Usage: gog (finish | fin) (-major | -minor | -patch) [ additional_options... ] [-h] [-help]
-------====== Finish Arguments ======-------
-major
specifies that in this freature you make incompatible API changes (breaking changes)
-minor
specifies that in this feature you add functionality in a backwards compatible manner (non-breaking)
-patch
specifies that in this feature you make backwards compatible bug fixes small backwards compatible updates
-no-changelog
if this flag is set, no changelog creation or updates shall be performed when finishing this feature release
-no-tag
if this flag is set, no version tagging shall be applied to this finished feature release
-------================================-------
While this does not fit into the opinionated workflow defined by the commands above, it is sometimes necessary to perform a simple push when collaborating on projects that do not exactly follow the workflow.
Usage: ../GOG/dist/gog (simple-push | sp) [message] [-h] [-help]
Simple-Push is a utility to allow non-feature related code pushes directly to the current remote branch. If used without a message one will be generated for you.
-------====== Simple-Push Arguments ======-------
message
(optionally) specifies a commit message for this simple push operation
-------================================-------
Updating GOG (if on Darwin or Linux) can be done in-place using the gog update
command.
Usage: ../GOG/dist/gog update [-tag TAG] [-h] [-help]
--------======= Tag Arguments =======--------
-tag string
specifies a specific version tag to use for update
-------================================-------
Currently GOG has been tested on the following deployment targets:
- Linux (AMD64)
- Darwin (AMD64)
- Windows (AMD64) - Some functionality limited (#12)
Credit for original concept goes to Daniel Waespe (STATCAN)