Skip to content
Jean-Rémy Falleri edited this page Mar 13, 2019 · 22 revisions

We welcome new contributors to GumTree. On this page, we list several information of interest for GumTree's developers.

Recommended tools

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').

Release policy

GumTree is released regularly. The versions number follow the semantic versioning scheme. Each release is associated to a tag in the master branch. 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.

Branch policy

Master branch

  • The master branch is supposed to be always working and contains all gumtree releases.
  • Specific releases are associated to tags. Tags are named using semantic versioning.
  • Bugfixes are directly committed to the master branch.

Develop branch

  • Development takes place on the develop branch.
  • New features are developed in dedicated branches. These branches are then pull-requested into develop and peer-reviewed before integration.

Code policy

GumTree has strict coding style policies. There are enforced using checkstyle. To check if you code is compliant, use the command gradle check.

Preparing a new release

First, it is required to update the version number in the pom of all modules, using the following commands. The version used to the release should not have a trailing -SNAPSHOT. The version has to be edited in the root build.gradle file.

git checkout master
git merge develop
gradle build -Pmvn
gradle uploadArchives -Pmvn

Once the artifacts are released, checkout the develop branch and set a new version number, that ends with -SNAPSHOT in the root build.gradle file.

Auto-release

To deploy automatically on GitHub release, just merge develop on the master branch and create a tag. Then push to the origin repository, and Travis will take care of deploying.

git checkout master
git merge develop
git tag vX.Y.Z -m "vX.Y.Z"
git push --tags

Clone this wiki locally