Dear Wiki user, You have subscribed to a wiki page or wiki category on "Jclouds Wiki" for change notification.
The "How to contribute" page has been changed by mattstep: https://wiki.apache.org/jclouds/How%20to%20contribute?action=diff&rev1=3&rev2=4 All contributions and patches attached to a [[https://issues.apache.org/jira/browse/JCLOUDS|JIRA]] issue are assumed to be under the [[http://www.apache.org/licenses/#clas|Apache ICLA]], so make sure you read and understand it before making your contributions. - == The Git repositories == - - The jclouds Git repositories are hosted in the ASF infrastructure, but there are also have mirros in Github. This is the current repository layout: - - || Apache || https://git-wip-us.apache.org/repos/asf?s=incubator-jclouds || The main and official repositories || - || Github || https://github.com/jclouds/jclouds || Mirrors from the ASF repositories, used to accept contributions and do code reviews || - || Github || https://github.com/jclouds/legacy-jclouds || The legacy repositories, as they were before the migration to the ASF, used to keep old code || - == How to contribute == + We use [[https://github.com/jclouds|GitHub] and [[https://issues.apache.org/jira/browse/JCLOUDS|JIRA]] on the jclouds project. - 1. Create a [[https://issues.apache.org/jira/browse/JCLOUDS|JIRA]] issue for your feature request/bugfix. - 2. Fork the mirrored repository from Github, clone your form and add the upstream repository: - {{{ - git clone [email protected]:YOUR_GITHUB_USER/jclouds.git - cd jclouds - git remote add upstream git://github.com/jclouds/jclouds.git - }}} + Your first step is to create or find an issue in [[https://issues.apache.org/jira/browse/JCLOUDS|JIRA]] for your feature request or fix. If it's a simple cleanup, this isn't necessary, but it's good to see if you're change fixes an existing issue anyway. If it's a formatting issue alone, consider creating an issue for us to fix our checkstyle configuration to catch it in the future. - 3. Make sure you are up to date with the last version of the master branch: - {{{ - git fetch upstream - git rebase upstream/master - }}} + Next, you'll want to create a pull request in GitHub for the change you're interested in making. Some good references for working with Github are below. We ask that you keep your change rebased to master as much as possible, and we will ask you to rebase again if master has moved before accepting your patch. + * [[https://help.github.com/articles/set-up-git|Setting Up Git with GitHub]] + * [[https://help.github.com/articles/fork-a-repo|Forking a Repository and Submitting Pull Requests with GitHub]]] - 4. Create a topic branch for your changes: - {{{ - git checkout -b my_feature - }}} - 5. Add and commit all changes, and push the topic branch to your fork ([[http://stackoverflow.com/questions/5968964/avoid-unwanted-merge-commits-and-other-commits-when-doing-pull-request-in-github|why rebase?]]): - {{{ - git add . - git commit -m "JCLOUDS-XX: My changes" # Add the JIRA ID in the commit message - git fetch upstream # Verify that your branch still is up to date - git rebase upstream/master - git push origin my_feature - }}} - - 6. Once your changes are pushed to your fork, [[https://help.github.com/articles/using-pull-requests|send us a pull request]]. - 7. Add a comment in the JIRA issue with a link to the pull request so we know the code is ready to be reviewed. + Finally, add a comment in the JIRA issue with a link to the pull request so we know the code is ready to be reviewed. == The review process == - Someone will review your pull request before it is merged. This process can take a while, but if you feel no one is taking care of it, join the #jclouds IRC channel in Freenode and ask for a review. You can also drop a message to the development mailing list. + Someone will review your pull request before it is merged. This process can take a while. - During the review process you may be asked to do some changes. When applying, just add the new commits to the pull request without squashing the commits (unless you are asked to do it). This way reviewers can focus only in the changed stuff instead of going over the entire changes again. + If we are slow to respond, feel free to join us in irc on [[http://webchat.freenode.net/?channels=#jclouds|irc.freenode.net #jclouds]] and ask for help. Feel free to also email our dev mailing list : [[mailto:[email protected]|[email protected]]]. + + During the review process you may be asked to do some changes. While working through feedback, it can be beneficial to create new commits so the incremental change is obvious. This can also lead to a complex set of commits, and having an atomic change per commit is preferred in the end. Use your best judgement and work with your reviewer as to when you should revise a commit or create a new one. A pull request is considered ready to be merged once it gets at lease one +1 from a reviewer. Once all the changes are done and the pull request is accepted, it '''__must be rebased to the latest upstream version__'''. It is also a good idea to squash all the commits into a single one, since this will allow us to generate a clean patch and merge it properly. - == Commiting the changes to the ASF repo == - - If you are not a commiter, you just have to wait. The reviewer will take care of commiting the changes. - - If you are a commiter, you can follow these steps: - - 1. Save the patch from the Github patch link (just appehd '.patch' to the pull request link to get it). This patch will keep the authorship of the commit, so we should use it instead of the diff. - 2. If the commit message needs to be edited, edit it in the patch file. - 3. Pull the changes in the ASF repository to make sure you have the latest version of the master branch. - {{{ - git remote add asf https://git-wip-us.apache.org/repos/asf/incubator-jclouds.git - git fetch asf - git checkout master - git rebase asf/master - }}} - 4. Apply the patch preserving the original author: - {{{ - git am JCLOUDS-XX.patch - }}} - 5. Run a build to make sure everything works as expected after applying the patch and push the changes once the build succeeds. - {{{ - mvn clean install - git push asf master - }}} - 6. If there are no issues with the applied patch, attach the patch file to the JIRA issue, and mark it as Resolved. - 7. Close the pull request and leave a comment saying it has been merged. -
