Description and how-to for maintenance operations. Some of the maintenance scripts have been moved to the pcmsolvermeta repository
Branching Model and Release Process¶
Incomplete or outdated information!
Releases in a
X.Y.Z series are annotated tags on the corresponding branch.
Pull Request Requirements¶
The project is integrated with Danger.Systems.
On each PR, one CI job will run the integration and a bot will
report which requirements are not met in your PR.
These reports can be _warnings_ and _errors_. You will discuss and solve both
of them with the reviewers.
The automatic rules are laid out in the
Dangerfile and are used to enforce an
adequate level of testing, documentation and code quality.
- PRs classed as Work in Progress.
- Codebase was modified, but no tests were added.
- Nontrivial changes to the codebase, but no documentation added.
- Codebase was modified, but
CHANGELOG.mdwas not updated.
- Source files were added or removed, but
.gitattributeswas not updated.
- Commit message linting, based on some of these recommendations: - Commit subject is more than one word. - Commit subject is no longer than 50 characters. - Commit subject and body are separated by an empty line.
- Clean commit history, without merge commits.
- Code style for
.hfiles follows the conventions in
- Code style for
.pyfiles follows the conventions in
We follow the guidelines of Keep a CHANGELOG
On all but the release branches, there is an
under which new additions should be listed.
To simplify perusal of the
CHANGELOG.md, use the following subsections:
Addedfor new features.
Changedfor changes in existing functionality.
Deprecatedfor once-stable features removed in upcoming releases.
Removedfor deprecated features removed in this release.
Fixedfor any bug fixes.
Securityto invite users to upgrade in case of vulnerabilities.
Updating Eigen Distribution¶
The C++ linear algebra library Eigen comes bundled with the module. To update the distributed version one has to:
download the desired version of the library to a scratch location. Eigen’s website is: http://eigen.tuxfamily.org/
unpack the downloaded archive;
go into the newly created directory and create a build directory;
go into the newly created build directory and type the following (remember to substitute @PROJECT_SOURCE_DIR@ with the actual path)
cmake .. -DCMAKE_INSTALL_PREFIX=@PROJECT_SOURCE_DIR@/external/eigen3
Remember to commit and push your modifications.
Git Pre-Commit Hooks¶
[Git pre-commit hooks](https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks) are used to
keep track of code style and license header in source files.
Code style is checked using
clang-format for C/C++ and
yapf for Python.
You need to install ``clang-format`` (v3.9 recommended) and ``yapf`` (v0.20 recommended) to run the code style validation hook!
License headers are checked using the
license_maintainer.py script and the
header templates for the different languages used in this project.
The Python script checks the
.gitattributes file to determine which license
headers need to be maintained and in which files:
src/pedra/pedra_dlapack.F90 !licensefile src/solver/*.hpp licensefile=.githooks/LICENSE-C++
The first line specifies that the file in
not be touched, while the second line states that all
.hpp files in
should get an header from the template in
Location of files in
.gitattributes are always specified with respect
to the project root directory.
The hooks are located in the
.githooks subdirectory and have to be installed by hand
whenever you clone the repository anew:
cd .git/hooks cp --symbolic-link ../../.githooks/* .
Installed hooks will always be executed. Use
git commit --no-verify to
bypass explicitly the hooks.