Gerrit/GitHub

Setting up the GitHub triangular workflow
This is a guide on contributing to Wikimedia's Gerrit-hosted projects with a GitHub-based workflow. This guide is aimed mainly at Windows-based users that use GitHub for Windows (GitHub Desktop), but should also be usable for contributors who work from the console. However, for this last group, contributing using Gerrit/git-review is probably easier.

In this guide, I'm using the pywikibot-core repository as an example, but the same workflow can be applied to any repository hosted in WMF's Gerrit. The GitHub for Windows workflow has some issues (notably GHfW reporting an error while pushing).

The normal GitHub workflow is as follows:
 * 1) Clone from the original repository
 * 2) Push to your own repository
 * 3) Submit a pull request

We will set up this using GitHub for Windows:

Cloning the repository

 * 1) Go to https://github.com/wikimedia/pywikibot-core
 * 2) Click 'Clone in Desktop'

GitHub desktop will now launch, and clone pywikibot-core, including all submodules.

Forking the repository

 * 1) Go to https://github.com/wikimedia/pywikibot-core
 * 2) Click 'Fork'

A fork is now created under your GitHub username, e.g. https://github.com/wikimedia/pywikibot-core

Setting up push options
We now want to configure git to pull from the central repository (https://github.com/wikimedia/pywikibot-core) and to push to your own repository (https://github.com/ /pywikibot-core). For this, follow these steps:


 * 1) In GitHub for Windows, click tools » open a shell here
 * 2) In this shell, type these commands:
 * 3) git config remote.origin.pushurl https://github.com/ /pywikibot-core.git
 * 4) git config remote.origin.push +refs/heads/*:refs/heads/*

The first command configures your own GitHub repository as place to push, the second sets 'force push' as default - this will result in your fork to be always equal to what you have locally in GitHub for Windows.

Submitting a patch

 * 1) Make some changes
 * 2) In GitHub for Windows, click 'master' and type a branch name in the 'Filter or create new' field. Press Enter to create it.
 * 3) Select files to commit and press 'commit'
 * 4) Press 'publish'. Your changes are now pushed to your own repository on GitHub.
 * 5) Browse to https://github.com/wikimedia/pywikibot-core
 * 6) Under 'Your recently pushed branches' click 'Compare & pull request'
 * 7) Add a note, then click 'Send pull request'

Updating a patch

 * 1) Make some changes
 * 2) Commit to the relevant branch
 * 3) Click 'sync'
 * 4) If you get an error message, click tools » open a shell here, and run  'git push'. This should always succeed.
 * 5) The change is automatically added to your pull request