Apache Cassandra and Pull Requests

Apache Cassandra doesn't use GitHub pull requests as part of the development process. In fact, this repository is a GitHub mirror of the official repo.

How to Contribute

Use Cassandra JIRA to create an issue, then either attach a patch or post a link to a GitHub branch with your changes.

Working with submodules

Apache Cassandra uses git submodules for a set of dependencies, this is to make cross cutting changes easier for developers. When working on such changes, there are a set of scripts to help with the process.

Local Development

When starting a development branch, the following will change all submodules to a new branch based off the JIRA

$ .build/sh/development-switch.sh --jira CASSANDRA-<number>

When changes are made to a submodule (such as to accord), you need to commit and update the reference in Apache Cassandra

$ (cd modules/accord ; git commit -am 'Saving progress')
$ .build/sh/bump-accord.sh

Commit and Merge Process

Due to the nature of submodules, the changes to the submodules must be committed and pushed before the changes to Apache Cassandra; these are different repositories so git's --atomic does not prevent conflicts from concurrent merges; the basic process is as follows:

  • Follow the normal merge process for the submodule
  • Update Apache Cassandra's submodule entry to point to the newly committed change; follow the Accord example below for an example
$ .build/sh/change-submodule-accord.sh
$ .build/sh/bump-accord.sh

Useful Links

  • How you can contribute to Apache Cassandra presentation by Yuki Morishita
  • Code style wiki page
  • Running Cassandra in IDEA guide
  • Running Cassandra in Eclipse guide
  • Cassandra Cluster Manager - CCM and a guide blog post
  • Cassandra Distributed Tests aka dtests
  • Cassandra Testing Guidelines - see TESTING.md