[cmake-developers] [ANNOUNCE] CMake merge process transition

Brad King brad.king at kitware.com
Thu Mar 2 15:55:49 EST 2017


Hi Folks,

We're moving CMake's process for merging changes to new infrastructure
that is managed directly within merge requests on gitlab.kitware.com.


Summary
-------

The new process for reviewing changes, staging them for nightly
testing, and eventually merging to `master` is documented in a new
`Help/dev/review.rst` file.  This document is drafted here:

 https://gitlab.kitware.com/cmake/cmake/merge_requests/542

Please take a look at the draft.  Once we have actually made the final
transition I'll merge the new instructions and post a link here to their
final URL.


Details
-------

The rest of this message is primarily meant for those who had push
access to the old staging repository and/or run nightly builds.

Our contribution and review process currently works through GitLab
merge requests.  However, the actual merge to `next` or `master` has
still been done by manually pushing topic branches to our old staging
repository (cmake.org/stage/cmake.git) and commanding merge scripts
via ssh.  Our process for staging topics in `next` for the nightly
builds has worked well but requires tedious manual steps and makes
updating a topic with a fixup commit difficult.  We will drop `next`
and replace it with an automatically-maintained staging branch.

We currently have a bot that listens to GitLab merge request activity
and responds to commands like `Do: test` for topic testing.  The bot
is capable of much more.  It will soon be configured to respond to
`Do: stage` and `Do: unstage` commands that instruct it to add or
remove the branch associated with a MR to/from the staging branch
used for nightly testing.

The staging branch is always built from `master` plus a set of staged
MR topics.  When `master` is updated the entire staging branch is
rebuilt automatically.  When a staged MR is updated it is unstaged
automatically awaiting review and a new `Do: stage`.  This will hugely
simplify the process of staging a MR for nightly testing.

Furthermore, the staging branch will not be published as an official
branch under refs/heads/ on the gitlab.kitware.com/cmake/cmake repo.
Instead it will be in a custom refs/ path that Git does not clone or
fetch by default.  CTest scripts used to drive nightly testing will
need to be adapted for this.  I'll post more information for those of
you running nightly builds once we are ready to update the clients.

The bot will also gain a `Do: merge` command that I'll use to perform
the actual merges to `master`.  Its merge commit messages will have
more information than the current ones, and will refer back to the MRs
that created them.

-Brad


More information about the cmake-developers mailing list