- @title = "Contributing Code"
- @summary = "How to issue a pull request."
%p All development happens via pull requests. To add a new feature or fix a bug, the developer must create a new branch off develop
, make their changes, and then issue a pull request for another developer to review before the changes get merged back into develop
.
%p Here is an example, using github with username rms
and repository bitmask_client
. You don't need to use github, but it is a friendly way to get started.
%p
%b Step 1 — Fork on github
%p Login to github.com as 'rms', browse to #{link 'https://github.com/leapcode/bitmask_client'}, and click the fork button.
%p Now you should have a fork of the code available at https://github.com/rms/bitmask_client
.
%p
%b Step 2 — Set up local clone
%p Clone the upstream repository:
%pre
%code
git clone https://leap.se/git/bitmask_client
cd bitmask_client
%blockquote
.p NOTE: Alternately, you can use the github mirror at https://github.com/leapcode/bitmask_client
. It does not matter which one you choose.
%p
%b Step 4 — Add a "remote" for your fork
%p Next, you need to add the fork you created on github as an alternate remote in your local repository:
%pre
%code
git remote add rms https://github.com/rms/bitmask_client.git
%p
%b Step 5 — Create a new feature branch
%pre
%code
git fetch origin
git checkout develop
git checkout -b feature/my_new_feature
%p
%b Step 6 — Hack away
%P Make all your changes in your feature/my_new_feature
branch, with a separate git commit
for each discrete modification you make.
%p
%b Step 7 — Prepare for pull request
%p Once you are happy with your branch, prepare it for a pull request by rebasing on the latest upstream develop
branch. This will also give you an opportunity to clean up your commit history by squashing and changing commit messages.
%pre
%code
git fetch origin # ensure the latest
git checkout feature/my_new_feature # if not already checked out
git rebase -i develop # rebase and clean up commits
%p
%b Step 8 — Submit pull request
%p Next, you will push your local feature branch to your fork on github, and then issue a pull request.
%pre
%code
git push rms feature/my_new_feature
%p Then browse to https://github.com/rms/bitmask_client
, where you will see a handy button to issue a pull request. Make sure that the upstream branch is leapcode/bitmask_client:develop
and you are requesting the merge of rms/bitmask_client:feature/my_new_feature
.
Then you are done. Some other developer will get a notice of your pull request, review the changes, and merge into upstream develop
branch. If they have questions or comments, you will get an email from github.