The Git repositories
The jclouds Git repositories are hosted in the ASF infrastructure, but there are also mirrors in Github. This is the current repository layout:
The main and official repositories
Mirrors from the ASF repositories, used to accept contributions and do code reviews
Rules of thumb
Every contribution is a piece of intellectual property. This is the precious sustenance that nourishes our project. Please treat it with respect. If it's sufficiently complex, or from a large corporate entity, ensure there is an ICLA or CCLA on file that covers the contribution. Asking in #jclouds or #asf will probably be the easiest way to get an answer.
- ALWAYS give credit where it is due, ensure EVERY merged commit reflects properly the individual who authored that commit. Preserve both the name and email address.
Ensure your name and email address are there as the committer prior to pushing it to the Apache repositories. Please read the 'which hat' guide before deciding whether to use your @apache.org, personal or other email address.
- Always strive for linear commit history, avoid merge commits while pulling in contributor's changes.
Committing the changes to the ASF repo
From a GitHub pull request
- Clone the canonical ASF repo
git clone https://git-wip-us.apache.org/repos/asf/jclouds.git cd jclouds
- Fetch the branch of the user you want to merge from
git fetch https://github.com/user-to-merge-from/jclouds.git branch-to-merge-from
- If you commonly merge from a particular user, you'll want to add their repo as a remote to make fetching branches easier.
git remote add user-to-merge-from https://github.com/user-to-merge-from/jclouds.git git fetch user-to-merge-from
Alternatively, you can configure a github remote to also fetch the pull requests, and checkout them as follows (for a complete guide refer to the GitHub howto):
$ git remote add github firstname.lastname@example.org:jclouds/jclouds.git $ git config --local --add remote.github.fetch '+refs/pull/*/head:refs/remotes/github/pr/*' # Now when fetching you will see all the pull requests (you can checkout them with "git checkout github/pr/99"): $ git fetch github * [new ref] refs/pull/98/head -> github/pr/98 * [new ref] refs/pull/99/head -> github/pr/99
- Cherry pick the commit you want to merge
git cherry-pick hash-to-merge
Push the commit (you'll want to setup a .netrc file to make this easy, see Committers: Getting Started)
From a patch file
- Save the patch from the Github patch link (just append '.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.
- If the commit message needs to be edited, edit it in the patch file.
- 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/jclouds.git git fetch asf git checkout master git rebase asf/master
- Apply the patch preserving the original author:
git am JCLOUDS-XX.patch
- 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
- If there are no issues with the applied patch, attach the patch file to the JIRA issue, and mark it as Resolved.
- Close the pull request and leave a comment saying it has been merged.