In this model, instead of a single branch in the svn repository for
the current stable release, we would have a branch for each important
release, allowing us to make bugfix releases in each branch if we
want.
I am not sure I understand how this is supposed to work. One thing that we need to guarantee is
that we always know what is included in a specific release, given the release number. This
condition seems to be broken in your proposal. It looks like the same release number could be
subsequently used for a "stable" and a "development" release.
You could do as follows:
* every now and then (say, every 12 or 18 months) make a new "important"
release. So, you take trunk, make a release and a branch, and call it (say) 1.20.0.
* then, you increase the version number in trunk to 1.21.0.
* after 12 or 18 months, when you want to make a new "important" release, you
take trunk, increase the version number to 1.22.0, make a release and a branch.
* you increase the version number in trunk to 1.23.0.
So, you'd use the even numbers for actual releases, and odd numbers for
development snapshots. Then, you always know what is included
in a release.
Alternatively, we can append "alpha" to the release number (like most other
projects do), ie when we release 1.20.0, we change
the version number in trunk to be 1.21.0alpha, which will become 1.21.0 upon
release. That may be the simplest and easiest
to understand ?
So, if trunk is in development for what will be gnustep-base-1.21.0, then the
release in trunk would be 1.21.0alpha. Of course the 'alpha'
would mostly appear in user-readable strings; macros/version numbers would
still report 1.21.0 if you query via an API.