User:Aron Manning/Developer bootstrap

Software needed
The basic command line tools:
 * http://git-scm.org/
 * https://www.npmjs.com/

Optional:
 * Python -
 * Ruby - for browser (UI) tests with Selenium tool

A proper GUI that will help a lot with learning the intricacies and terminology:
 * https://gitextensions.github.io/ (fast)
 * https://www.gitkraken.com/ ("luxurious", runs on Electron - not fast)

A GUI merge tool for comparing files:
 * Diffinity (new)
 * Meld (old, reliable, comfortable)
 * Araxis Merge (fancy, commercial and good)

Shell
Set up git shortcuts to type less (tune to your taste).

Add to ~/.ssh/.gitconfig [alias] s = status c = commit r = review cl = clone co = checkout br = branch

To use these commands: git s git c
 * 1) List modified files
 * 1) Commit (create patch)

git r -R
 * 1) Send patch

git 'n' gerrit
git review -s
 * 1) Setup the project for git review

Sssssh
Have this in ~/.ssh/config: Host wikimedia HostName gerrit.wikimedia.org Port 29418 User IdentityFile ~/.ssh/id_ PreferredAuthentications publickey PasswordAuthentication no IdentitiesOnly yes

Download (clone) the code (repository)
git clone @wikimedia:mediawiki/core git clone @wikimedia:mediawiki/extensions/<...> git clone @wikimedia:mediawiki/skins/<...>

Testing, part 1, the unreal

 * 1) . Install npm
 * 2) . Go to the project folder, install the needed node_modules: `npm ci`
 * 3) * Advanced level at your own risk (will cause version troubles occasionally): save space and install time by installing globally.  `npm link  eslint  &&  npm link  eslint-config-wikimedia  &&  npm link  eslint-plugin-json@1.4.0  &&  npm link  eslint-plugin-mediawiki  &&  npm link  eslint-plugin-no-jquery  &&  npm link  eslint-plugin-qunit  &&  npm link  grunt-banana-checker  &&  npm link  stylelint  &&  npm link  stylelint-config-wikimedia`
 * 4) * To update:  `npm i --link  eslint-plugin-json@1.4.0  eslint-plugin-no-jquery  eslint-plugin-qunit  stylelint`
 * 5) . Run `npm test` -- no this won't run the tests, only check the coding style, maybe build the documentation (depending on project)

Testing, part2, the real one
Won't be easy, nor painless.


 * 1) . QUnit
 * 2) . Selenium/Ruby/Running_tests