naming/versioning and git describe
I think I need some more clarity with regard to the closed #520 along with the naming conventions we established in https://nrn.readthedocs.io/en/latest/scm/guidelines/SCMGuidelines.html and https://nrn.readthedocs.io/en/latest/scm/guide/SCMGuide.html
and how we can best use the benefits of git describe. The last is always relative to the "most recent tag that is reachable from a commit"
We recently have been working toward a 8.1.0 tagged release and at the moment are cherry picking from master into branch release/8.1 which has an 8.1a tag. Note:
$ git checkout 8.1a
$ git describe
8.1a
$ git checkout release/8.1
$ git describe
8.1a-10-g695392971
$ git checkout master
$ git describe
8.1a-14-gd141b7425
It seems kind of a shame that master and release/8.1 have the same "most recent tag". Note that git describe does not indicate what branch we are on (but easy to determine if we are at the branch HEAD in the sense that git rev-parse --abbrev-ref HEAD prints the branch name (used to help create nrn/src/nrnoc/nrnversion.h") and git status gives more than HEAD detached at ...)
I guess what I am wondering is if it would be to troublesome to get into the habit on creation of a release/version branch that we use two tags that distinguish the master from the release. (that may necessitate some rewriting of code that generate installer names and internal version info for nrn/src/nrnoc/nrnversion.h). Also I experience confusion about what the next name should be when one begins a development process on the master.(i.e. is 8.1a the best tag for the master at this moment in the history?)
Indeed there is some confusion going around
- in terms of wheels (and discriminantion)
- from
release/x.ywe will only publish officialneuron - from
masterwe will publish-
neuronforalpha, beta..., i.e8.1a(these do not count as official, one need to ask for them:pip install neuron==8.1a -
neuron-nightlyfollowing the last tag onmaster
-
- from
- it makes sense (at this point in time) to have
81aforneuron-nightlysince we haven't released yet8.1.0and the last tag/release onmaster is the alpha8.1.a` - Ideally creating
release/x.ywould mean thatx.ygets released straight away. But for us things are not that straightforward. Once we release&tagrelease/8.1with8.1.0we will properly discriminate. - so now we should decide how to proceed after release
8.1.0. Since we've decided to release more often (i.e. cherry-pick commits intorelease/x.yand release every month/2-months..), I guess we should tagmasterwith8.1.dev?
cc: @ferdonline
So after a discussion with @pramodk and @ferdonline, we will do an annotated tag on master with 8.2.dev.
Just to add:
It seems kind of a shame that master and release/8.1 have the same "most recent tag".
As mentioned in this section,
At the beginning of the development towards a new release, a special annotated tag should be created in master named MAJOR.MINOR.dev.Development then proceeds naturally in master.
So it's just result of we forgetting to create a dev tag.
By the way, considering backward incompatible changes we are pushing, next could be just 9.0 release. But having 8.2.dev is fine. Once there will be more clarity, we could add 9.0.dev tag.
This is now part of the release GH issue template (https://github.com/neuronsimulator/nrn/blob/master/.github/ISSUE_TEMPLATE/release.md#post-release)