= Contributing to WebKit using GitHub (Proposal) = TODO: Add an overview for what you might want to do this. == Setup == 1. Create a GitHub account (if you don't already have one) 1. Fork https://github.com/WebKit/webkit 1. `$ git clone git@github.com:yourname/webkit.git` == Writing code == 1. `$ git checkout master -b awesomefeature` 1. Write some awesome code. 1. Commit locally and push to origin (your GitHub account) as you normally would with git. == Tracking upstream == 1. One-time setup: `$ git remote add upstream git://github.com/WebKit/webkit.git` 1. `$ git fetch upstream` 1. `$ git merge upstream/master` 1. `$ git push origin master` If you never modify your local master branch, merging upstream/master will always be a fast-forward merge (i.e., no merge conflicts). You can then merge these new commits into your in-flight feature branches as you normally would with git. == Getting your code reviewed == 1. Find a reviewer who is interested in reviewing your awesome feature. 1. Create a pull request by going to https://github.com/yourname/webkit/pull/new/awesomefeature 1. Click the "Change Commits" button to select that reviewer's base branch of WebKit. 1. Write a helpful description of your pull request and click "Send pull request". 1. Iterate with the reviewer as usual using GitHub's review tools. ''TODO: Investigate whether we can make reviewers members of the "WebKit" organization so you can just use WebKit/webkit@master as the base branch.'' == Landing a patch == If we're going to use this process, we'd want to teach webkit-patch how to automate this process. 1. If you're landing a patch for someone else, first download and apply the patch: `$ curl https://github.com/yourname/webkit/pull/7.patch | git am` 1. `$ ./Tools/Scripts/webkit-patch upload --no-review` 1. Fill in the ChangeLog description from the pull request, and fill out the "Reviewed by" line based on who reviewed your patch. (Please include a link to the pull request in case folks want to read the discussion.) 1. Go to the https://bugs.webkit.org/ bug for your patch and set the commit-queue+ flag. (If you're not a committer, you'll need to ask a committer to set that flag for you.)