2.5.0 • Published 5 months ago

date-based-version v2.5.0

Weekly downloads
4
License
MIT
Repository
github
Last release
5 months ago

date-based-version

This library is a tool to help you maintain date-based versions in your git repository.

Date based versioning

Here is how the date-based versioning works:

  • Every commit to master is released.
  • The release version of each commit is stored as a tag.
  • Every commit to master become the source of its own release branch, this allows patching.
  • The version is composed of 4 parts:

    1. always 1
    2. date of the release
    3. release number for this release date
    4. patch number

A git log command show such versioning strategy.

~/demo $ git log --oneline --decorate --graph --all

* 0dd0a2a (tag: v1.20200512.2.0, release/v1.20200512.2, master) fourth commit
* 39ccfc3 (tag: v1.20200512.1.0, release/v1.20200512.1) third commit
* 8d634ca (tag: v1.20200510.2.0, release/v1.20200510.2) second commit
| * 8b5c451 (tag: v1.20200510.1.1, release/v1.20200510.1) patch for first commit
|/
* 96fedff (tag: v1.20200510.1.0) first commit

This tool

Usage:

Call this function from the release pipeline.

  • The new version will be calculated based on the previous version, the date and the patch flag.
  • The commit will be tagged with the version.
  • If the --patch flag is not provided, a release branch will be created.
  • When you provide a scope through the --scopeTag argument. It will iterate through all the sub scope until it finds a matching tag. This is particularly useful in a monorepo where you would wand to maintain multiple scope. Example your release pipeline produces the following tag: release/v1.YearMonthDay.version and you wish to patch a package using a different tag pattern. You can achieve this by calling npx date-based-version --patch --scopedBranch=release/<team> --iterateOnScope and you will get the following tag: release/<team>/v1.YearMonthDay.version.patch.
# on master
npx date-based-version

# on a release branch
npx date-based-version --patch

# dry run (won't create branch or tag)
npx date-based-version --dry-run

# scope tag by prefix (i.e. scope/v1.20200510.1.0)
npx date-based-version --scopeTag=scope

# scope branch by prefix (i.e. scope/release/v1.20200510.1)
npx date-based-version --scopeBranch=scope
2.5.0

5 months ago

2.4.1

3 years ago

2.4.0

3 years ago

2.4.0-beta

3 years ago

2.3.3

4 years ago

2.3.2

4 years ago

2.3.1

4 years ago

0.3.9

4 years ago

1.3.0-testing

4 years ago

2.3.0

4 years ago

2.2.0

4 years ago

2.1.0

4 years ago

1.2.0

4 years ago

2.0.0

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago