2.4.1 Branches in the Savannah Repository

There are several kinds of branches in the Savannah repository.

Dead Branches

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.

Stable Branches

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.

The Main Branch

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.

Feature Branches

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.