nrn icon indicating copy to clipboard operation
nrn copied to clipboard

naming/versioning and git describe

Open nrnhines opened this issue 4 years ago • 3 comments

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?)

nrnhines avatar Mar 25 '22 00:03 nrnhines

Indeed there is some confusion going around

  • in terms of wheels (and discriminantion)
    • from release/x.y we will only publish official neuron
    • from master we will publish
      • neuron for alpha, beta..., i.e 8.1a (these do not count as official, one need to ask for them: pip install neuron==8.1a
      • neuron-nightly following the last tag on master
  • it makes sense (at this point in time) to have 81a for neuron-nightly since we haven't released yet 8.1.0 and the last tag/release on master is the alpha 8.1.a`
  • Ideally creating release/x.y would mean that x.y gets released straight away. But for us things are not that straightforward. Once we release&tag release/8.1 with 8.1.0 we 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 into release/x.y and release every month/2-months..), I guess we should tag master with 8.1.dev ?

cc: @ferdonline

alexsavulescu avatar Mar 25 '22 09:03 alexsavulescu

So after a discussion with @pramodk and @ferdonline, we will do an annotated tag on master with 8.2.dev.

alexsavulescu avatar Mar 25 '22 10:03 alexsavulescu

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.

pramodk avatar Mar 25 '22 10:03 pramodk

This is now part of the release GH issue template (https://github.com/neuronsimulator/nrn/blob/master/.github/ISSUE_TEMPLATE/release.md#post-release)

alexsavulescu avatar Jan 10 '23 13:01 alexsavulescu