Tina has three main branches:
- master: The bleeding edge of tinacms
- latest: The current release
The flow of changes therefore looks like:
fix-some-bug
=>master
=>latest
The process looks like this:
- On Monday
master
is merged intolatest
; thenlatest
is published to npm - Any hot fixes for bugs will be cherry picked into
latest
and the published accordingly. - Every pull request merged to
master
automatically triggers acanary
release.
With this process:
- all accepted changes are available as
canary
releases for early testing - critical fixes are published as soon as possible
- new features and minor fixes take half a week (on average) to be published
Canary release are automatically created when commits are pushed to master
.
i.e. yarn add tinacms@next
-
Merge Changes
git checkout next git merge master git push
-
Build the source files:
npm run build
-
Generate CHANGELOGs and git tags:
lerna version \ --conventional-commits \ --conventional-prerelease \ --no-push \ --allow-branch master \ -m "chore(publish): prerelease"
-
Publish to NPM:
lerna publish from-package --dist-tag next
-
Push CHANGELOGs and git tags to Github:
git push && git push --tags
i.e yarn add tinacms
or yarn add tinacms@latest
-
Merge Changes
git checkout latest git merge next git push
-
Build the source files:
npm run build
-
Generate CHANGELOGs and git tags:
lerna version \ --conventional-commits \ --conventional-graduate \ --no-push \ --allow-branch latest \ -m "chore(publish): latest"
-
Publish to NPM:
lerna publish from-package
-
Push CHANGELOGs and git tags to Github:
git push && git push --tags
-
Backmerge to
next
git checkout master git merge latest git push