doc: Document the branching and rebuild scheduling strategy.

* doc/contributing.texi (Submitting Patches): Document the branching
scheme.
This commit is contained in:
Ludovic Courtès 2017-05-13 22:24:51 +02:00
parent 4d8806c3d6
commit 916b5eba0d
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 24 additions and 3 deletions

View File

@ -345,9 +345,30 @@ For important changes, check that dependent package (if applicable) are
not affected by the change; @code{guix refresh --list-dependent not affected by the change; @code{guix refresh --list-dependent
@var{package}} will help you do that (@pxref{Invoking guix refresh}). @var{package}} will help you do that (@pxref{Invoking guix refresh}).
Packages with roughly 100 dependents or more usually have to be @c See <https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html>.
committed to a separate branch. That branch can then be built @cindex branching strategy
separately by our build farm, and later merged into @code{master} once @cindex rebuild scheduling strategy
Depending on the number of dependent packages and thus the amount of
rebuilding induced, commits go to different branches, along these lines:
@table @asis
@item 300 dependent packages or less
@code{master} branch (non-disruptive changes).
@item between 300 and 1,200 dependent packages
@code{staging} branch (non-disruptive changes). This branch is intended
to be merged in @code{master} every 3 weeks or so. Topical changes
(e.g., an update of the GNOME stack) can instead go to a specific branch
(say, @code{gnome-updates}).
@item more than 1,200 dependent packages
@code{core-updates} branch (may include major and potentially disruptive
changes). This branch is intended to be merged in @code{master} every
2.5 months or so.
@end table
All these branches are tracked by our build farm
and merged into @code{master} once
everything has been successfully built. This allows us to fix issues everything has been successfully built. This allows us to fix issues
before they hit users, and to reduce the window during which pre-built before they hit users, and to reduce the window during which pre-built
binaries are not available. binaries are not available.