|
|
@@ -0,0 +1,171 @@
|
|
|
+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:
|
|
|
+
|
|
|
+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/*.rst`` files into a versioned
|
|
|
+``Help/release/$ver.rst`` file and updates ``Help/release/index.rst`` to
|
|
|
+link to the new document. Commit the changes with a message such as::
|
|
|
+
|
|
|
+ Help: Consolidate $ver release notes
|
|
|
+
|
|
|
+ Run the `Utilities/Release/consolidate-relnotes.bash` script to move
|
|
|
+ notes from `Help/release/dev/*` into `Help/release/$ver.rst`.
|
|
|
+
|
|
|
+Manually edit ``Help/release/$ver.rst`` to add section headers, organize
|
|
|
+the notes, and revise wording. Then commit with a message such as::
|
|
|
+
|
|
|
+ Help: Organize and revise $ver release notes
|
|
|
+
|
|
|
+ Add section headers similar to the $prev release notes and move each
|
|
|
+ individual bullet into an appropriate section. Revise a few bullets.
|
|
|
+
|
|
|
+Open a merge request with the ``doc-$ver-relnotes`` branch for review
|
|
|
+and integration. Further steps may proceed after this has been merged
|
|
|
+to ``master``.
|
|
|
+
|
|
|
+Update 'release' Branch
|
|
|
+-----------------------
|
|
|
+
|
|
|
+Starting from a clean work tree on ``master``, create a new ``release-$ver``
|
|
|
+branch locally:
|
|
|
+
|
|
|
+.. code-block:: shell
|
|
|
+
|
|
|
+ git checkout -b release-$ver origin/master
|
|
|
+
|
|
|
+Remove the development branch release note infrastructure:
|
|
|
+
|
|
|
+.. code-block:: shell
|
|
|
+
|
|
|
+ git rm Help/release/dev/0-sample-topic.rst
|
|
|
+ sed -i '/^\.\. include:: dev.txt/ {N;d}' Help/release/index.rst
|
|
|
+
|
|
|
+Commit with a message such as::
|
|
|
+
|
|
|
+ Help: Drop development topic notes to prepare release
|
|
|
+
|
|
|
+ Release versions do not have the development topic section of
|
|
|
+ the CMake Release Notes index page.
|
|
|
+
|
|
|
+Update ``Source/CMakeVersion.cmake`` to set the version to
|
|
|
+``$major.$minor.0-rc1``:
|
|
|
+
|
|
|
+.. code-block:: cmake
|
|
|
+
|
|
|
+ # CMake version number components.
|
|
|
+ set(CMake_VERSION_MAJOR $major)
|
|
|
+ set(CMake_VERSION_MINOR $minor)
|
|
|
+ set(CMake_VERSION_PATCH 0)
|
|
|
+ set(CMake_VERSION_RC 1)
|
|
|
+
|
|
|
+Update ``Utilities/Release/upload_release.cmake``:
|
|
|
+
|
|
|
+.. code-block:: cmake
|
|
|
+
|
|
|
+ set(VERSION $ver)
|
|
|
+
|
|
|
+Update uses of ``DEVEL_CMAKE_VERSION`` in the source tree to mention the
|
|
|
+actual version number:
|
|
|
+
|
|
|
+.. code-block:: shell
|
|
|
+
|
|
|
+ $EDITOR $(git grep -l DEVEL_CMAKE_VERSION)
|
|
|
+
|
|
|
+Commit with a message such as::
|
|
|
+
|
|
|
+ CMake $major.$minor.0-rc1 version update
|
|
|
+
|
|
|
+Merge the ``release-$ver`` branch to ``master``:
|
|
|
+
|
|
|
+.. code-block:: shell
|
|
|
+
|
|
|
+ git checkout master
|
|
|
+ git pull
|
|
|
+ git merge --no-ff release-$ver
|
|
|
+
|
|
|
+Begin post-release development by restoring the development branch release
|
|
|
+note infrastructure and the version date from ``origin/master``:
|
|
|
+
|
|
|
+.. code-block:: shell
|
|
|
+
|
|
|
+ git checkout origin/master -- \
|
|
|
+ Source/CMakeVersion.cmake Help/release/dev/0-sample-topic.rst
|
|
|
+ sed -i $'/^Releases/ i\\\n.. include:: dev.txt\\\n' Help/release/index.rst
|
|
|
+
|
|
|
+Update ``Source/CMakeVersion.cmake`` to set the version to
|
|
|
+``$major.$minor.$date``:
|
|
|
+
|
|
|
+.. code-block:: cmake
|
|
|
+
|
|
|
+ # CMake version number components.
|
|
|
+ set(CMake_VERSION_MAJOR $major)
|
|
|
+ set(CMake_VERSION_MINOR $minor)
|
|
|
+ set(CMake_VERSION_PATCH $date)
|
|
|
+ #set(CMake_VERSION_RC 1)
|
|
|
+
|
|
|
+Commit with a message such as::
|
|
|
+
|
|
|
+ Begin post-$ver development
|
|
|
+
|
|
|
+Push the update to the ``master`` and ``release`` branches:
|
|
|
+
|
|
|
+.. code-block:: shell
|
|
|
+
|
|
|
+ git push --atomic origin master release-$ver:release
|
|
|
+
|
|
|
+Announce 'release' Branch
|
|
|
+-------------------------
|
|
|
+
|
|
|
+Send email to the ``[email protected]`` mailing list (perhaps
|
|
|
+in reply to a release preparation thread) announcing that post-release
|
|
|
+development is open::
|
|
|
+
|
|
|
+ I've branched 'release' for $ver. The repository is now open for
|
|
|
+ post-$ver development. Please rebase open merge requests on 'master'
|
|
|
+ before staging or merging.
|