Download from Git


 * Since MediaWiki 1.19beta2, 1.18.2, 1.17.3, MediaWiki core and extensions use gerrit>Special:MyLanguage/Gerrit|Git for version control. For older versions, see svn>Special:MyLanguage/Subversion|Subversion

Git is distributed version control software that allows users to download the very latest version of a branch, without having to wait for someone to get around to packaging it. MediaWiki will release faster, and it'll be easier for you to update your installation, roll back an upgrade, or [https://bugzilla.wikimedia.org/ submit patches]. (Of course always remember official stable releases are less risky.)

See Git for more details, particularly for making contributions. Below are some quick directions for a couple common tasks.

Prerequisites
You must have Git installed before you can use it. There are many different ways to acquire Git, depending on your operating system. For source and official binaries, check out [http://git-scm.com/ git-scm.com]. For alternative ways to install Git, use your favorite search engine to find instructions for your operating system.

It is recommended that you have composer installed to download and install third party libraries, but not required.

Download
You can download MediaWiki core using Git, as well as all extensions currently installed on the Wikimedia Foundation server cluster and many other extensions hosted on .

The first step is to clone the MediaWiki core repository. This will take a while.

In a terminal window, enter the following command: git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git

This clones the entire MediaWiki core repository into a subdirectory named <tt>core</tt>. To install into a specific directory, add that to the command line (for more info refer to these docs). The default "branch" will be, the cutting-edge, developer version of MediaWiki. Once the repository is cloned, you can easily switch to different branches or tags (see below), including those tracking stable versions of MediaWiki.

Download for development
If you have dev>Special:MyLanguage/Developer access</>|Developer access (which is easy to request), then instead of cloning anonymously with https you should clone with your ssh <USERNAME> so that you can submit changes for review: git clone ssh:// <USERNAME>@gerrit.wikimedia.org:29418/mediawiki/core.git



Fetch external libraries
Starting with MediaWiki 1.25, some external libraries that MediaWiki requires are no longer in this "core" git repository.

We use composer to manage them.

To install these needed libraries, you have a choice:

Note that if you have an existing <tvar|lock><tt>composer.lock</tt></> file you will need to run <tvar|update> composer update --no-dev </> instead.
 * [<tvar|url-c>https://getcomposer.org/doc/00-intro.md#globally</> Download and install composer], switch to your core directory and then run <tvar|code> composer install --no-dev </>.


 * If you don't want to use composer, or if you want to use the same set of vendor libraries as used on the WMF production cluster, you can instead <tvar|git> git clone https://gerrit.wikimedia.org/r/p/mediawiki/vendor.git </> to create a <tvar|vendor><tt>vendor/</tt></> directory inside the core folder of your MediaWiki installation.

Make sure you use the right branch for your MediaWiki version (e.g. <tt>REL1_25</tt> for 1.25).

WMF branches
Remote branches track the MediaWiki versions used on the Wikimedia Foundation server cluster. These may not be entirely stable, but they receive very quick bug fixes and are generally stable enough – after all, these are what major projects such as Wikipedia are using. Once a REL* branch is considered 'stable', we 'tag>#MediaWiki_tags_.28stable_version.29</>|tag' it and turn it into a tarball release.

To see what branches are available, switch to your MediaWiki core directory and enter the following command: git branch -r | sort -V

Major releases are denoted by "<tvar|1>origin/REL </>", e.g. "<tvar|2>origin/</>". To switch to a particular release branch: git checkout -b REL origin/REL

For example, to switch to the current stable version,, enter: git checkout -b origin/

MediaWiki tags (stable version)
Alternatively, specific stable versions of MediaWiki are tracked using 'tags'. These are analogous to the tarball releases. You can see the versions available with: git tag -l | sort -V

Using non GNU sort command, such as on Mac OS X, you have to rely on the good old separators: git tag -l | sort -n -t. -k1 -k2 -k3

To use a specific tag: git checkout

Latest development version of MediaWiki
The latest development version of MediaWiki is tracked in the 'master' branch. This is what is locally checked out by default when you first clone the MediaWiki repository. If you have switched to another branch but would like to switch back to using bleeding-edge MediaWiki, do: git checkout master

Keeping up to date
If you're using a particular branch or the development version ("master" branch) of MediaWiki, picking up the latest changes is relatively easy. Change into your MediaWiki clone directory and issue the git pull command: git pull

All of the latest changes for the branch you are using will be applied.

The new version of core may require newer versions of extensions and skins, so you must go into each extension and skin directory and update it with a command like git pull --recurse-submodules.

After updating/upgrading you should run the MediaWiki <tt>update.php</tt> command-line script to update database tables as needed: php maintenance/update.php

You also need to update <tt>mediawiki/vendor</tt> to any newer versions of required libraries, see.

If you use MediaWiki-Vagrant, it offers a single command, vagrant git-update, that performs all these steps.

Switching to a different version
Switching to a different version of MediaWiki is far simpler with Git than with SVN. Each of our versions are tracked as branches or tags. In order to switch to one of these, all you have to do is [<tvar|url>https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging</> checkout] the particular branch or tag you want from within your MediaWiki clone directory: git checkout

or git checkout

The changes will be applied automatically and you will be all set to go.

Using Git to download MediaWiki extensions

 * [<tvar|url>https://gerrit.wikimedia.org/r/#/admin/projects/?filter=mediawiki%252Fextensions%252F</> List of extensions in git]

Download an extension

 * <EXT> should be replaced with the name of the extension you want to download, without spaces. For ext-titlekey>Special:MyLanguage/Extension:TitleKey</>|Extension:TitleKey, it would be TitleKey. (case sensitive!)

Download and clone an extension from Git:

cd /path/to/extensions git clone https: //gerrit.wikimedia.org/r/p/mediawiki/extensions/<EXT>.git

Developers clone with: git clone ssh:// <USERNAME>@gerrit.wikimedia.org:29418/mediawiki/extensions/<EXT>.git

You can view extension source code in Phabricator's diffusion application, and at the URL:

<pre style="white-space: pre-wrap;"> https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/extensions/<EXT>.git;a=tree;h=refs/heads/master;hb=master

Download all extensions
If you prefer to have all MediaWiki extensions that are at <tvar|gerrit>gerrit.wikimedia.org</> checked out to your machine, enter the following:

Thereafter, to update all extensions to their latest versions, just enter:

To track a specific branch:

Remove an extension
Just remove the extension folder and remove the "<tvar|code> </>" from <tvar|LocalSettings> </>.

Using Git to download MediaWiki skins

 * [<tvar|url>https://gerrit.wikimedia.org/r/#/admin/projects/?filter=mediawiki%252Fskins%252F</> List of skins in git]

MediaWiki 1.24 and later don't include skins in the Git download.

Follow the exact same procedure as for extensions (described in the previous section), but using  rather than   in all URLs and paths.

Detailed installation instructions are available on each skin's page here on MediaWiki.org, for example see vector>Special:MyLanguage/Skin:Vector#Installation</>|Skin:Vector#Installation. Instructions for all other skins are analogous.