LilyPond Contributor's Guide: 2.2 Using lily-git

## 2.2 Using lily-git

`lily-git.tcl` is a graphical tool to help you access and share changes to the lilypond source code.

### Install and configuration of `lily-git.tcl`

Note: The rest of this manual assumes that you are using the command-line; double-click on the ‘Terminal’ icon on the desktop.

1. Type (or copy&paste) into the Terminal:

   >     lily-git.tcl

2. Click on the “Get source” button.

   This will create a directory called ‘`lilypond-git/`’ within your home directory, and will download the source code into that directory (around 55Mb). When the process is finished, the “Command output” window will display “Done”, and the button label will change to say “Update source”.

   Note: Some contributors have reported that nothing happens at this step. If this occurs, then try again in a few minutes – we suspect that this is an intermittant network problem. If the problem persists, please ask for help.

3. Navigate to the ‘`lilypond-git/`’ directory to view the source files.

You should now progress to Compiling with lilydev.

Note: Throughout the rest of this manual, most command-line input should be entered from ‘`~/lilypond-git/`’. This is referred to as the top source directory.

Advanced note: the “Get source” button does not fetch the entire history of the git repository, so utilities like `gitk` will only be able to display the most recent additions. As you continue to work with `lily-git.tcl`, the “Update source” button will take any new additions and add it to whatever is currently in your repository’s history.

### Daily use of `lily-git.tcl`

Note: Only work on one set of changes at once. Do not start work on any new changes until your first set has been accepted.

#### 1. Update source

At the beginning of each session of lilypond work, you should click the “Update source” button to get the latest changes to the source code.

Note: In some rare and unfortunate circumstances, this will result in a merge conflict. If this occurs, follow the instructions for “Abort changes”, below. Your work will not be lost.

#### 2a. New local commit

A single commit typically represents one logical set of related changes (such as a bug-fix), and may incorporate changes to multiple files at the same time.

When you’re finished making the changes for a commit, click the “New local commit” button. This will open the “Git Commit Message” window. The message header is required, and the message body is optional.

After entering a commit message, click “OK” to finalize the commit.

Advanced note: for more information regarding commits and commit messages, see Commits and patches.

#### 2b. Amend previous commit

You can go back and make changes to the most recent commit with the “Amend previous commit” button. This is useful if a mistake is found after you have clicked the “New local commit” button.

To amend the most recent commit, re-edit the source files as needed and then click the “Amend previous commit” button. The earlier version of the commit is not saved, but is replaced by the new one.

Note: This does not update the patch files; if you have a patch file from an earlier version of the commit, you will need to make another patch set when using this feature. The old patch file will not be saved, but will be replaced by the new one after you click on “Make patch set”.

#### 3. Make patch set

Before making a patch set from any commits, you should click the “Update source” button to make sure the commits are based on the most recent remote snapshot.

When you click the “Make patch set” button, `lily-git.tcl` will produce patch files for any new commits, saving them to the current directory. The command output will display the name of the new patch files near the end of the output:

>     0001-CG-add-lily-git-instructions.patch
>     Done.

Send patch files to the appropriate place:

- If you have a mentor, send it to them via email.
- New contributors should send the patch attached to an email to frogs@lilynet.net. Please add “[PATCH]” to the subject line.
- Translators should send patches to translations@lilynet.net.
- More experienced contributors should upload the patch for web-based review. This requires additional software and use of the command-line; see Uploading a patch for review.

#### The “Abort changes – Reset to origin” button

Note: Only use this if your local commit history gets hopelessly confused!

The button labeled “Abort changes – Reset to origin” will copy all changed files to a subdirectory of ‘`lilypond-git/`’ named ‘`aborted_edits/`’, and will reset the repository to the current state of the remote repository (at `git.sv.gnu.org`).

#### LilyPond — Contributor’s Guide