wiki:Patches

Version 29 (modified by markberger, at 2013-08-07T20:43:37Z) (diff)

--

(see also How To Review Patches)

Please create a new ticket to track the issue unless your patch addresses an issue that is already ticketed. If you're not sure whether there is a ticket for your issue, just make a new one. Someone will point you in the right direction if your ticket is a duplicate.

We use git as our versoin control system and the tahoe source code is hosted on Github. Github requires that you have a Github account in order to submit patches, so you will have to create one if you don't already have one. If you are unfamiliar with Github or git we recommend the following resources:

Once you have finished installing git and creating your Github account, fork the offical Tahoe-LAFS repo here. You can also star or watch the official repo to make us feel fuzzy inside.

Download the source code from your new fork. This can be done by typing git clone https://github.com/<YOUR USERNAME>/tahoe-lafs.git into terminal.

Navigate to the tahoe-lafs folder and type git branch to make sure master is selected. Then create a new branch with git checkout -b <your branch name>. Your branch name should have the ticket number and a small description of what the ticket is addressing. For example, the branch name for ticket #1382 - immutable peer selection refactoring and enhancements was 1382-immutable-peer-selection.

Now, hack at Tahoe-LAFS!

Once you think you have solved the issue run the test suite with python setup.py trial. This ensures that you didn't accidentally break something while working on your patch.

Now that all of the existing unit tests pass, write your own tests for the ticket if they don't already exist.

Finally, push your branch to Github and open a pull request. Please add the tag review-needed to the ticket and add a link to the pull request. If you had trouble writing unit tests for your patch, don't worry. Submit the pull request anyway and add the tag tests-needed to the ticket.

Design reviews

To request a design review, explain your design (with or without a patch) and then add the design-review-needed tag. Completion of a design review will normally not directly result in a patch being committed. The main goal of a design review is to give the person working on the ticket confidence that there are no show-stopping issues with the approach they are taking, and to get feedback on smaller issues that are useful to take into account before doing further work on a patch.