-Repository Access and Compiling
-===============================
+Compiling and Contributing
+==========================
Xonotic uses [several Git repositories](Git). The `all` script in the main repo manages them, builds Xonotic and runs it. Each repo can also contain feature branches next to the stable `master` branch, check them out for WIP features.
-***
+Build Requirements
+------------------
-Setting up the development environment
---------------------------------------
+Make sure you have at least 2 GB memory to compile. This is enough to run a git server, but 4GB is needed to play using a git client.
-Make sure you have at least 2 GB memory to compile.
+[About 12GB of disk space is required for the git repositories.](Git)
### Linux
-**Ubuntu Dependencies**:
+Note: `curl` isn't required but it's strongly recommended for downloading maps when playing online, `wget` is not supported for this.
+
+Note: The `all` script requires either `wget` or `curl`.
- sudo apt-get install autoconf build-essential curl git-core libtool libgmp-dev libjpeg-turbo8-dev libsdl2-dev libxpm-dev xserver-xorg-dev zlib1g-dev
-Note: On Debian, use `libjpeg8-dev` if `libjpeg-turbo8-dev` isn’t available in the package repositories.
+**Ubuntu** dependencies:
-Note: `curl` isn't required but it's strongly recommended for downloading maps when playing online.
+ sudo apt-get install autoconf build-essential curl git libtool libgmp-dev libjpeg-turbo8-dev libsdl2-dev libxpm-dev xserver-xorg-dev zlib1g-dev
+
+Note: On Debian, use `libjpeg62-turbo-dev` if `libjpeg-turbo8-dev` isn’t available in the package repositories.
Note: `libasound2-dev libxext-dev libxxf86vm-dev p7zip-full unzip wget x11proto-xf86vidmode-dev` might be needed but are probably already installed. `libclalsadrv-dev libsdl2-image-dev libxcb-xf86dri0-dev libxxf86dga-dev x11proto-xf86dga-dev x11proto-xf86dri-dev` should no longer be needed.
**Fedora** and other **RPM based** distro dependencies:
- autoconf automake gcc-c++ gmp-devel libjpeg-turbo-devel libtool SDL2-devel
+ autoconf automake gcc-c++ gmp-devel libjpeg-turbo-devel libtool SDL2-devel curl
Note: `x11-proto-devel` or `xorg-x11-proto-devel` might be needed but might be already installed.
**Archlinux** dependencies:
- sudo pacman -S alsa-lib curl libjpeg-turbo libmodplug libpng libvorbis libxpm libxxf86dga libxxf86vm sdl2 unzip wget
+ sudo pacman -S alsa-lib curl git libjpeg-turbo libmodplug libpng libvorbis libxpm xorgproto libxxf86vm sdl2 unzip
### Windows
You must first install **XCode** which comes on your installation DVD or can be downloaded from the Apple website. This package provides tools like **Git and GCC**, which are needed for successful checkout and compilation of Xonotic. Some versions of XCode come with Git and others don’t - if you don’t have Git after installing XCode get it here: [XCode installer](http://sourceforge.net/projects/git-osx-installer/files/)
-***
-
-Cloning the repository and compiling
+Cloning the Repository and Compiling
------------------------------------
To begin downloading:
If you run into issues with the latest version you can easily revert to an older one. Since most bugs are caused by the game code rather that the engine, you just need to downgrade that repository. Inside the main xonotic repository, use `cd data/xonotic-data.pk3dir` and then `git checkout <some older commit>`. After that go back `cd -` and `./all compile` (with the optional `-r` flag).
-***
-
-Contributing and getting write access
+Contributing and Getting Write Access
-------------------------------------
Cloning (one of) our repos and submitting MRs from there (as in any other project) works but you won't be able to use our CI setup for the data repo (which seems to need a custom runner). It's therefore a good idea to join the Xonotic group and get push access - then you can create branches in our repos and use our CI.
Starts a Xonotic dedicated server
-General contributor guidelines
+General Contributor Guidelines
------------------------------
1. Before creating your local branch and committing to it, make sure you’ve configured your user settings such as your name which will display in the logs (in TortoiseGit: Settings > Git > Config).
2. Try naming your branch myname/mychange for each patch. For instance, if your name is Alex and the change you are committing is a menu fix, use something like alex/menufix.
-Further git information
+Further Git Information
-----------------------
About tracking remote branches: