Giter VIP home page Giter VIP logo

gtv's People

Contributors

jola5 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

fdga8626

gtv's Issues

Support differentiating multiple branches

Sometimes you work on projects where different branches are used for specific releases. Imagine a repository with a mature 1.9.21 release and an according branch and a brand new 2.0.3 release with according branch.

If you need to provide bugfixes and security updates for your 1.9.21 release you still need to create new minor and patch versions like 1.9.22. This is a typical use case and the git describe command works exactly as expected by returning the most git tag on this particular branch. Gtv on the other hand does not support this use case since we only update on the most recent version tag - which is 2.0.3. You can circumvent this by specifically setting a version to a specific commit with gtv set 1.9.22 abcdef987456 but the whole point of gtv is to simplify working with version tags.

Therefore, this request proposes a change so gtv works like git describe

# working on 1.x release
git checkout release_1.x.x
git describe
v1.9.21
git tag-version
2.0.3
# add a new patch to this specific release/branch
git tag-version new patch
git describe
v2.0.4
git tag-version
2.0.4
# switch to 2.x release
git checkout release_2.x.x
git describe
v2.0.3
git tag-version
2.0.4

The current implementation's behaviour is quirky, unexpected and undocumented as well.

Consider a proper makefile

Consider to use a proper makefile instead of the custom make.sh script. Currently target chaining is handled ok, but we lack the ability for target dependencies.

Strict mode

Support strict mode preventing adding multiple version tags to the same commit.

Mentioning strict mode in the online help is a bug since it is not yet implemented.

Properly check/validate versions w/ suffixes against version w/o

It should be possible to assign versions that differ in suffixes only. Currently on version comparison the suffix is ignored, hence this is not possible:

gtv set 1.22.3 --suffix=RC1
gtv show
# v1.22.3-RC1
gtv set 1.22.3
# should be v1.22.3 but is not supported right now

Installation guide

Installation instructions.

  • How to add to executable path?
  • How to add as custom git command?

Support a force parameter to assign a not strictly increasing version

If you need to assign a version to previous commits (ref. #9) the version may correctly need to be lower than the most current version. Current implementation enforces all new versions must be strictly increasing.

This feature should provide a command line option --force to support this kind of need.

Probably change the name to give more meaning `git-semver`

Although the historical reason for the name git-tag-version coming from a version assigned through a tag is understandable a more meaningful naming like git-semantic-versioning would be more precise.

Things to change

  • shorthand gsv
  • full name git semantic versioning
  • git alias git-semver -> git semver new patch

Add tests

Basic tests. Probably system tests of the Basic Usage command flow.

Test against different git versions

Since there was a recent issue where gtv was relying on a specific git feature only present in a more recent git version (#15, #21) we should do the following:

  1. State the supported git version(s) in the docs
  2. Test against multiple git versions on Travis

Overhaul parameter naming

Currently the parameter naming is quite a bit confusing and should be streamlined for a future release:

  • strict-mode/non-strict for adding tags to the same commit vs. a strictly increasing version number scheme
  • adding a version number that is not strictly increasing with force , ref #11

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.