There are several kinds of branches in the Savannah repository.
Branches with the prefix ‘dead-branches/’ (such as
dead-branches/const
) hold code that was never merged into the
main code base. For example, a feature which was started, but later
deemed to be unwise to add. These branches keep the code available,
but they are not updated.
These branches are used for bug fixes to released versions
of gawk
. Sometimes new development (i.e., user-visible
changes) also occurs on these branches, although in a perfect world
they would be used only for bug fixes.
These branches have names like gawk-4.1-stable
,
gawk-4.0-stable
, and so on. Once a release has been made from
master
, the previous stable branch is not updated. For example,
once gawk
4.1.0 was released, no more work was done on
gawk-4.0-stable
.
This is the master
branch. Here is where most new feature
development takes place, and releases of new major versions are based
off of this branch.
Feature branches are typically based off this branch as well, and when the feature is deemed complete, merged back into it.
Often, a proposed new feature or code improvement is quite involved.
It may take some time to perfect, or the gawk
development team
may not be convinced that the feature should be kept.
For this purpose, the team uses branches prefixed with ‘feature/’. This prefix is used even for code that simply improves the internals and does not make a user-visible change.
Having large changes on separate branches makes it easier for members
of the team to review the code, and also makes it easier to keep the
changes up-to-date with respect to master
, since Git excels at
merging commits from one branch to another.