Provide a `.devcontainer` definition, following the Dev Container
Specification, to give contributors a ready-made Linux environment with
the tools needed to build CMake, run its test suite, build its
documentation, and satisfy its style rules.
Base the container on Ubuntu, which offers the broadest ecosystem of
packages and tooling for development, including a recent `cmake` and the
`clang-format` version our style rules require, exactly. Mirror the
package lists of the Debian image our CI infrastructure uses, section by
section, so that the dependencies available closely match the ones
against which merge requests are tested. Build the image the way the
images under `.gitlab/ci/docker/` are built: bind mount the package
lists and the installation script rather than copying them in, and cache
the package lists and downloaded archives so that a rebuild fetches only
what has changed.
Run optional `.devcontainer/hooks/root.sh` and
`.devcontainer/hooks/user.sh` scripts, both ignored by Git, so that
developers may customize the container without modifying tracked files.
Document usage in a new `Help/dev/devcontainer.rst`.
Fixes: #28043
The sentence "Base all new work on the upstream master branch." may be
interpreted to mean that one should commit on a 'master' branch.
Precede this with an explicit step for creating a topic branch.
Recent GitLab updates have changed the label associated with the
checkbox in merge request descriptions for allowing edits from
maintainers. Make the contributor guidelines match the new label
and add a note for why it is recommended.
The latter is now the preferred URL for visiting cmake.org with a
browser. Convert using the shell code:
git ls-files -z | xargs -0 sed -i 's|http://www\.cmake|https://cmake|g'
Rename 'Readme.txt' to 'README.rst', format the documentation as
reStructuredText, and modernize the content. Also add a new
'CONTRIBUTING.rst' explaining the preferred entry path for new
contributors.