[GNC-dev] Bye-bye Unstable

Geert Janssens geert.gnucash at kobaltwit.be
Wed Apr 18 04:29:23 EDT 2018

Op woensdag 18 april 2018 09:58:24 CEST schreef Wm via gnucash-devel:
> On 16/04/2018 17:40, Geert Janssens wrote:
> > Op maandag 16 april 2018 12:33:53 CEST schreef Robert Fewell:
> >> Just trying to get myself straight for going forward.
> >> maint is now for bug fixes on version 3.0
> >> master is for new stuff that would go into 4.0 but may be backported to
> >> 3.x
> >> if appropriate
> > 
> > Mostly. We normally don't "backport". If something is wanted on maint, it
> > should be committed to maint first and merged into master afterwards.
> > 
> > A real backport should only happen if that was forgotten, but that should
> > really be an exception.
> Bob probably didn't *really* mean "backport".  My guess is he's just
> trying to work out what master | maint | 3.0 | 3.x | something else mean
> now in ordinary terms.
> I can't figure it out either.

maint and master are git *branches*, so things you can check out, build, use 
to make changes and submit new commits.

3.0 is a release number which in git will be represented with a *tag*. You can 
also  check these out, but you can't start development from there (strictly 
speaking you can, but that would be much more complicated and off topic here). 
The only reason to check out a version number is to build a release version of 
gnucash. And even then, most releases are built from a tarball, for which you 
find a link in each release announcement.

3.x is not really a thing in git. It's mostly a term we use to represent all 
releases that will ever be generated starting with 3.

Then there is a distinction between stable and unstable (development) 
releases. The big difference git-wise is that stable releases always start 
from a commit on the maint branch while unstable releases will not. In the 2.7 
development cycle we experimented with an extra "unstable" *branch* to do the 
unstable releases from. For future unstable releases we will probably just do 
them from the master branch instead and forget an unstable branch ever 

We also use a specific versioning scheme for unstable *releases* which has 
changed with the release of 3.0.
Before 3.0 release numbers had 3 components. Unstable releases would have an 
odd middle component. 2.4.5 must be a stable release because the middle 
component (4) is even. 2.7.6 must be an unstable release because the middle 
component (7) is odd.
As of 3.0 release numbers will only have two components. Unstable releases 
will be marked by a second component being 900 or more. So 3.1, 3.15 and even 
3.899 will be stable releases if we ever get that far in the numbering (don't 
expect this to be like that). 3.900, 3.915 and so on will be unstable releases 
leading up to the 4.0 new stable release somewhere in the future.

> >> Is master version 3.99, it appears to be 3.0 still and does show the
> >> build
> >> warning ?
> > 
> > Not 3.99. With the new numbering scheme it should become 3.900, leaving us
> > with 99 beta release numbers before 4.0.
> I'd like to join Bob and say I'm also not understanding this.
> I think what I am asking is:
> could you please relate the git commands to versions people understand.

Compared to before the 3.0 release the only thing that has changed is what 
releases will happen from which branch.  has changed really, except for the 
version numbers those branches are linked to. "maint" and "master" are 
abstract concepts that are not tied to the same version all the time.

I'm not sure how I can make that clearer. Do you have a specific question you 
want to see answered ?


More information about the gnucash-devel mailing list