The preferred way of submitting patches is using the Pull Request feature on Github. If you do not yet have an account there, please consider creating one – it's free of charge for free software projects. While preferred, we don't force you to create a Github account.
Using Github: Go to our Git repository on Github and click the Fork button. Afterwards, you will need to clone your repository / fork:
git clone email@example.com:your_user_name/collectd.git
Without Github: Clone collectd's Git repository using the following command:
git clone git://git.verplant.org/collectd.git
After you cloned the repository you should create a development branch. If you want to implement a new feature, create the branch based on the master branch. If you are fixing a bug, base your branch on the oldest still supported version which includes this bug, e.g. the collectd-5.1 branch. We have a wiki article describing the repository structure in case you wonder what all this is about.
# Create a development branch for a new feature
git branch my_dev_branch master
# Create a development branch for a bugfix
git branch my_dev_branch collectd-5.1
After you have implemented your new feature or your bugfix, you will (hopefully) want to submit the changes to us. If you're using Github, open a Pull Request (PR). Otherwise, send the patch or patch series to the mailing list.
Using Github: Go to your fork of the repository and click on the Pull Request button. As head branch select your development branch, i.e. the branch holding the commits to be merged. For base branch, select either master if you were implementing a new feature or the appropriate version branch, e.g. collectd-5.1. This should, of course, match the branch you used above.
Without Github: Send your changes to the mailing list using the normal
procedure. Please send them directly to
collectd's mailinglist at
# Assuming a new feature based on the "master" branch:
git format-patch -o output-directory -s master..my_dev_branch
git send-email --to firstname.lastname@example.org output-directory
If you're new to Git you might want to read the following documents to get started:
Patching a release
If you don't want to work out the complexities of Git (or you read this page after you made the changes ;) you can take some release (at best the latest one) and make your changes there.
I'll outline the typical steps one does when making the changes:
# Get the tarball
# Unpack and rename the sources
tar jxf collectd-version.tar.bz2
cp -r collectd-version collectd-version-mine
# Do changes to collectd-version-mine
# Create the patch
diff -pur collectd-version collectd-version-mine >collectd-version-mine.patch
So the steps are typically:
Other random notes