123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- CMake Maintainer Guide
- **********************
- The following is a guide to CMake maintenance processes.
- See documentation on `CMake Development`_ for more information.
- .. _`CMake Development`: README.rst
- .. contents:: Maintainer Processes:
- Review a Merge Request
- ======================
- The `CMake Review Process`_ requires a maintainer to issue the ``Do: merge``
- command to integrate a merge request. Please check at least the following:
- * If the MR source branch is not named well for the change it makes
- (e.g. it is just ``master`` or the patch changed during review),
- add a ``Topic-rename: <topic>`` trailing line to the MR description
- to provide a better topic name.
- * If the MR introduces a new feature or a user-facing behavior change,
- such as a policy, ensure that a ``Help/release/dev/$topic.rst`` file
- is added with a release note.
- * If a commit changes a specific area, such as a module, its commit
- message should have an ``area:`` prefix on its first line.
- * If a commit fixes a tracked issue, its commit message should have
- a trailing line such as ``Fixes: #00000``.
- * Ensure that the MR adds sufficient documentation and test cases.
- * Ensure that the MR has been tested sufficiently. Typically it should
- be staged for nightly testing with ``Do: stage``. Then manually
- review the `CMake CDash Page`_ to verify that no regressions were
- introduced. (Learn to tolerate spurious failures due to idiosyncrasies
- of various nightly builders.)
- * Ensure that the MR targets the ``master`` branch. A MR intended for
- the ``release`` branch should be based on ``release`` but still merged
- to ``master`` first (via ``Do: merge``). A maintainer may then merge
- the MR topic to ``release`` manually.
- Maintain Current Release
- ========================
- The ``release`` branch is used to maintain the current release or release
- candidate. The branch is published with no version number but maintained
- using a local branch named ``release-$ver``, where ``$ver`` is the version
- number of the current release in the form ``$major.$minor``. It is always
- merged into ``master`` before publishing.
- To merge some ``$topic`` branch into ``release``, first create the local
- branch:
- .. code-block:: shell
- git fetch origin
- git checkout -b release-$ver origin/release
- Merge the ``$topic`` branch into the local ``release-$ver`` branch:
- .. code-block:: shell
- git merge --no-ff $topic
- Merge the ``release-$ver`` branch to ``master``:
- .. code-block:: shell
- git checkout master
- git pull
- git merge --no-ff release-$ver
- Review new ancestry to ensure nothing unexpected was merged to either branch:
- .. code-block:: shell
- git log --graph --boundary origin/master..master
- git log --graph --boundary origin/release..release-$ver
- Publish both ``master`` and ``release`` simultaneously:
- .. code-block:: shell
- git push --atomic origin master release-$ver:release
- .. _`CMake Review Process`: review.rst
- .. _`CMake CDash Page`: https://open.cdash.org/index.php?project=CMake
- Branch a New Release
- ====================
- This section covers how to start a new ``release`` branch for a major or
- minor version bump (patch releases remain on their existing branch).
- In the following we use the placeholder ``$ver`` to represent the
- version number of the new release with the form ``$major.$minor``,
- and ``$prev`` to represent the version number of the prior release.
- Review Prior Release
- --------------------
- Review the history around the prior release branch:
- .. code-block:: shell
- git log --graph --boundary \
- ^$(git rev-list --grep="Merge topic 'doc-.*-relnotes'" -n 1 master)~1 \
- $(git rev-list --grep="Begin post-.* development" -n 1 master) \
- $(git tag --list *-rc1| tail -1)
- Consolidate Release Notes
- -------------------------
- Starting from a clean work tree on ``master``, create a topic branch to
- use for consolidating the release notes:
- .. code-block:: shell
- git checkout -b doc-$ver-relnotes
- Run the `consolidate-relnotes.bash`_ script:
- .. code-block:: shell
- Utilities/Release/consolidate-relnotes.bash $ver $prev
- .. _`consolidate-relnotes.bash`: ../../Utilities/Release/consolidate-relnotes.bash
- This moves notes from the ``Help/release/dev
|