Version 2 by Phil Labee
on May 31, 2013 15:17.

compared with
Current by Wayne Siu
on May 31, 2013 18:59.

Key
This line was removed.
This word was removed. This word was added.
This line was added.

Changes (13)

View Page History

There are two kinds of tags...
* Next version base tags, which have an "r" suffix. Example, "1.8.0r". "2.2.0r".
* Final, shipped release tags. Example, "1.8.0". "2.2.0".

h1. Applying the Tags
How and when do we use those kinds of tags?

Let's follow an example, where we're working towards shipping 1.8.0, 2.2.0, then we ship 1.8.0, 2.2.0, and then we start working on the next release of 1.8.1... 2.2.1...

# When we start working on a new release like 1.8.0, 2.2.0, across its relevant components, we tag one of its commits (ideally, the first new commit meant for 1.8.0) 2.2.0) with a next version base tag. In this case, we tag with "1.8.0r". "2.2.0r".
#* If there's no commits yet for a component for 1.8.0, 2.2.0, perhaps because the component is rather stable and slowly changing, we can choose to either make a trivial change/commit, or just not tag the component with "1.8.0r" "2.2.0r" until later.
# Builds during the development cycle will look like 1.8.0r-57-g238485a. 2.2.0r-57-g238485a. That is, "$(TAG)-$(GIT_CHANGE_NUM)-$(GIT_UNIQUE_HASH)".
#* The GIT_CHANGE_NUM increments with each build.
#* The GIT_UNIQUE_HASH uniquely identifies the build.
# We eventually release and ship the final, blessed version, such as 1.8.0r-117-g43211234. 2.2.0r-117-g43211234.
# *After* shipping, we tag 1.8.0's 2.2.0's relevant components with the final, shipped release tag of "1.8.0" "2.2.0" for the historical record.
# Next, we start working towards shipping 1.8.1 2.2.1 and repeat the cycle.
#* That is, new commits meant for 1.8.1 2.2.1 are created by developers and submitted.
#* We tag one of those new commits meant for 1.8.1 2.2.1 with a next version base tag. In this case, "1.8.1r". "2.2.1r".

h1. Use Annotated Tags
Taggers, be sure to use annotated tags (the \-a flag when creating a git tag). For example...
{code}
git tag -a 1.8.0 -m 1.8.0
git tag -a 2.2.0 -m 2.2.0
git push --tags origin
{code}