-
Notifications
You must be signed in to change notification settings - Fork 174
Contributing
We welcome new contributors to GumTree. On this page, we list several information of interest for GumTree's developers.
We recommend GumTree developers to use IntelliJ as it is the only IDE we tested that is capable of a smooth integration with our Gradle build chain. To debug gumtree, it is recommended to use the run task with the params property (i.e. ./gradlew run -Pparams="['webdiff', 'v0.java', 'v1.java']"
or ./gradlew run --args='webdiff v0.java v1.java'
).
GumTree is released regularly. The versions number follow the semantic versioning scheme. Each release is associated to a tag in the main
branch. Non-beta major releases are associated to a name. The current list of releases is here.
Since we do not currently have enough manpower to maintain multiple stable releases, whenever a new major release is handed-out, the maintenance stops on the previous release.
All development happen on the main
branch. Specific releases are associated to tags. Tags are named using semantic versioning (i.e. v2.0.1
).
GumTree has strict coding style policies. There are enforced using checkstyle. To check if you code is compliant, use the command gradle check
.
Commit messages should follow the conventional commit specification. More specifically we use the following categories:
-
feat:
for features -
fix:
for bugfixes -
doc-feat
: for new documentation (CI is skipped in this case) -
doc-fix
: for documentation corrections (CI is skipped in this case) -
ci-feat
: for new CI features -
ci-fix
: for fixes related to the CI
In addition, we have implemented a set of additional keywords that can have an effect on the continuous integration (CI) process:
-
[no ci]
: skips the CI
We have three distribution channels: github maven packages
, dockerhub image
and github releases
.
Dockerhub images are deployed at each commit via an automated build setup in the Docker hub repository.
Snapshot Github maven packages are deployed weekly (every Sunday at 23:59) via the CI.
Github maven packages and Github releases are deployed via the CI via the push of a tag with a semver compliant name (i.e. v2.1.1
). The build.gradle
file is checked to ensure that the versions correspond.
git checkout main
git tag -a vX.Y.Z -m "Release X.Y.Z"
git push --tags