GNU LilyPond Contributor's Guide: 1.1 Getting the source code

## 1.1 Getting the source code

### 1.1.1 Git introduction

The source code is kept in a Git respository. This allows us to track changes to files, and for multiple people to work on the same set of files efficiently.

Note: These instructions assume that you are using the command-line version of Git 1.5 or higher. Windows users should skip to Git on Windows.

### 1.1.2 Main source code

To get the main source code and documentation,

    mkdir lilypond; cd lilypond
    git init-db
    git remote add -f -t master -m master origin git://git.sv.gnu.org/lilypond.git/
    git checkout -b master origin/master

### 1.1.3 Website source code

To get the website (including translations),

    mkdir lilypond-web ; cd lilypond-web
    git init-db
    git remote add -f -t web -m web origin git://git.sv.gnu.org/lilypond.git/
    git checkout -b web origin/web

### 1.1.4 Documentation translations source code

To translate the documentation (not the website),

    mkdir lilypond-translation; cd lilypond-translation
    git init-db
    git remote add -f -t lilypond/translation -m lilypond/translation origin git://git.sv.gnu.org/lilypond.git/
    git checkout -b lilypond/translation origin/lilypond/translation

### 1.1.5 Other branches

Most contributors will never need to touch the other branches. If you wish to do so, you will need more familiarity with git.

- `gub`: This stores the Grand Unified Binary, our cross-platform building tool. For more info, see http://lilypond.org/gub. The git location is:

  >     http://github.com/janneke/gub

- `dev/XYZ`: These branches are for individual developers. They store code which is not yet stable enough to be added to the `master` branch.
- `stable/XYZ`: The branches are kept for archival reasons.

### 1.1.6 Other locations for git

If you have difficulty connecting to most of the repositories listed in earlier sections, try:

>     http://git.sv.gnu.org/r/lilypond.git
>     git://git.sv.gnu.org/lilypond.git
>     ssh://git.sv.gnu.org/srv/git/lilypond.git

Using HTTP protocol is slowest, so it is not recommended unless both SSH and Git protocols fail, which happens e.g. if you connect to internet through a router that filters out Git and/or SSH connections.

### 1.1.7 Git user configuration

To configure git to automatically use your name and email address for commits and patches,

>     git config --global user.name "MYNAME"
>     git config --global user.email MYEMAIL@EXAMPLE.NET

#### Contributor’s Guide