We are moving to GitLab

After many years of using Bazaar and, sadly they are being abandoned by their creators, and so to ensure the longevity of OpenLP, we have decided to move to GitLab.

Keep up to date with the status of our move by checking the Moving_to_GitLab page.

Moving to GitLab

From OpenLP
Jump to: navigation, search

Project Migration Status

Project Status Assignee Notes
OpenLP repo Unmigrated thelinuxguy/tgc/superfly Most recent minutes on mailing list have some pointers on work to be done
Documentation Migrated tgc/superfly Move domain, remove old deployment code
Windows/macOS packaging Unmigrated tgc/superfly tgc and superfly have done some work on this, needs to be formalised
Debian package Unmigrated superfly Might migrate package into Debian itself
Web site Migrated superfly Complete
FTW data Unmigrated superfly/phill Need to assess what needs to be done
Wiki Unmigrated trb143 Plan agreed and initial phase of migration in progress.
Android remote Migrated trb143 Complete
iOS remote Unmigrated Daniel/superfly Need to figure out what needs to be done

New to Git

If you're completely new to Git, you may want to read Pro Git or Git in the Trenches.

Moving to Git from Bazaar

Compared to Bazaar and some other version control systems, Git is a little obscure and inconsistent. The following directions will help to make Git easier to use.

Git Config

Copy and paste the following snippet as ~/.gitconfig on Linux and macOS, and %USERPROFILE%/.gitconfig on Windows:

    name = Your Name
    email =
    signingKey = <your gpg key signature>
    gpgSign = true
    br = checkout -b
    co = checkout
    ci = commit -a
    st = status
    pum = pull upstream master
    pom = push origin master
    rbm = rebase master

GPG Signing

One of the nice (but optional) parts of using Git is that you can sign your commits with your private GPG key. This ensures that you are the one who is making those commits, rather than some bad actor pretending to be you.

To set up your GPG keys for signing, follow the instructions in the Git manual for creating your keys. Once you've created the keys, set your GPG key in your .gitconfig file, and set gpgSign to true. Use the following command to get a list of keys:

$ gpg --list-keys
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   3  signed:   1  trust: 0-, 0q, 0n, 0m, 0f, 3u
gpg: depth: 1  valid:   1  signed:   0  trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2020-04-26
pub   rsa4096 2018-01-01 [SC]
uid           [ultimate] Your Name <>
sub   rsa4096 2023-01-01 [E]

The long hash (AB0ED2D509706C94196F78FC3CB14F7C94A37597) above is your key signature.

If your operating system ships with GPG2 as gpg2 (I'm looking at you, Fedora), then you'll want to add the following extra snippet to your .gitconfig file:

    program = gpg2

Once you've set Git up for signing, you need to add your GPG key to your profile in GitLab. First, export your key:

$ gpg --export -a <your gpg key signature>

Then go to the GPG Keys page in GitLab and add the output of the previous command as a key.

Now you should be good to go.


Unlike Bazaar, Git doesn't come with aliases by default. The config file above has a couple aliases that might be useful to you in your workflow, such as co for checkout and st for status


In Git, branches are held within the same directory as the repository, compared to Bazaar which favours branches in separate directories. To create a new branch, based on the current commit in the current branch, you can either use git checkout -b <branch name> or git branch <branch name>. You can also use the br alias from the config file above:

$ git br <branch name>

To switch to an existing branch, you need to use the checkout command, or the co alias in the config above:

$ git co <branch name>

Committing and Staging

Unlike Bazaar, Git won't automatically commit any changes you have made when you run the commit command. You have to first add the files you want committed to the Git staging area through the add command. If you don't want to have to use two commands to achieve what you previously did with once, use the aliases in the config above and type the following to get the same effect as using commit in Bazaar or Mercurial:

$ git ci -m "Added more silly comments"

Adding new files remains the same, you need to use the add command:

$ git add <my new file>
$ git commit -m "Added my new file"

Rebase vs Merge

There is much debate in the Git community on rebase vs merge. If you don't know what this is about, don't worry about it. For those that do, OpenLP doesn't care either, and we will accept merge requests either way.

Git Workflow