diff --git a/README.md b/README.md index b7b068a3..2b11361e 100644 --- a/README.md +++ b/README.md @@ -91,3 +91,80 @@ Many thanks to all these libraries' authors and contributors. Detailed list with ### Licensing The source code is licensed under GPL v3. License is available [here](/LICENSE). + +## Contribute + +You can help this project by reporting problems, suggestions, or contributing to the code. + +### Report a problem or suggestion + +Go to our [issue tracker](https://github.com/zhukov/webogram/issues) and check if your problem/suggestion is already reported. If not, create a new issue with a descriptive title and detail your suggestion or steps to reproduce the problem. + +### Contribute to the code + +If you know how to code, we welcome you to send fixes and new features, but in order to be efficient we ask you to follow the following procedure: + +* Fork this repo using the button at the top. +* Clone your forked repo locally. + +``$ git clone git@github.com:yourname/webogram.git`` + +* Don't modify or work on the master branch, we'll use it to always be in sync with webogram upstream. + +``` +$ git remote add upstream git@github.com:zhukov/webogram.git +$ git fetch upstream +``` + +* Always create a new issue when you plan to work on a bug or new feature and wait for other devs input before start coding. +* Once the new feature is approved or the problem confirmed, go to your local copy and create a new branch to work on it. Use a descriptive name for it, include the issue number for reference. + +``$ git checkout -b improve-contacts-99`` + +* Do your coding and push it to your fork. Include as few commits as possible (one should be enough) and a good description. Always include a reference to the issue with "Fix #number". + +``` +$ git add . +$ git commit -m "Improved contact list. Fix #99" +$ git push origin improve-contacts-99 +``` + +* Do a new pull request from your "improve-contacts-99" branch to webogram "master". + +#### How do changes suggested on a pull request + +Some times when you do a PR, you will be asked to correct some code. You can do it on your work branch and commit normally, PR will be automatically updated. + +``$ git commit -am "Ops, fixing typo"`` + +Once everything is OK, you will be asked to merge all commit messages into one to keep history clean. + +``$ git rebase -i master`` + +Edit the file and mark as fixup (f) all commits you want to merge with the first one: + +``` +pick 1c85e07 Improved contact list. Fix #99 +f c595f79 Ops, fixing typo +``` + +Once rebased you can force a push to your fork branch and the PR will be automatically updated. + +``$ git push origin improve-contacts-99 --force`` + +#### How to keep your local branches updated + +To keep your local master branch updated with upstream master, regularly do: + +``` +$ git fetch upstream +$ git checkout master +$ git pull --rebase upstream master +``` + +To update the branch you are coding in: + +``` +$ git checkout improve-contacts-99 +$ git rebase master +``` \ No newline at end of file