|
Boost : |
Subject: [boost] [git] tagging in modules
From: Peter A. Bigot (pab_at_[hidden])
Date: 2013-12-26 19:24:34
On 12/26/2013 05:09 PM, Beman Dawes wrote:
> See
>
https://svn.boost.org/trac/boost/wiki/StartModMaint#Lightweightlibraryrelease
Not relevant to the original thread, but since I just noticed it:
git-push by default does not push tags: you need to specifically ask for
the tag to be pushed (by name), or use --tags. So this sequence does
nothing visible:
git tag -a 1.2
git push
Personally I'd prefer if tag symbols were a little more informative than
"1.2", and followed a pattern that places them in a namespace reserved
for the module, such as timer-1.2. Because tags aren't normally pushed,
they're useful for individual developers to use as markers. However,
git-pull will automatically retrieve tags attached to commits that are
fetched unless --no-tags is given, so if a repository (from boostorg, or
another developer) defines (or moves) a tag it might overwrite your
local tag without warning. So it's important to know what tags you can
expect might conflict with those in a remote repository to avoid conflicts.
I'd also really like to see any module that uses internal versioning
also provide a mechanism by which code can determine which version is
being used. E.g., for the above there ought to be a
<boost/timer/version.hpp> header which has:
#define BOOST_TIMER_VERSION_MAJOR 1
#define BOOST_TIMER_VERSION_MINOR 2
Otherwise I'm not seeing any value for module-level version tags in the
repository. Matter of taste, though.
I would expect, on superproject release, that each module would continue
to receive a boost-X.Y tag marking the module commit that corresponds to
the submodule SHA1 used for the release. This is another reason to make
sure module-level tags are clearly distinguished (lest somebody think
the tag corresponds to a boost version rather than a module version).
Peter
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk