---
title: "Auto-syncing revision history from Github to Launchpad\n    | Ubuntu"
description: In the design team we keep some projects in Launchpad (as canonical-webmonkeys),
  and some project in Github (as UbuntuDesign), meaning we work in both Bazaar and
  Git. The need to synchronise Github to Launchpad Some of our Github projects need
  to be also stored in Launchpad, as some of our systems only have access to  […]
url: https://ubuntu.com/blog/auto-syncing-revision-history-from-github-to-launchpad?format=md
keywords: index, follow
---

1. [Blog](https://ubuntu.com/blog)
2. Article

---

[Robin Winslow](https://ubuntu.com/blog/author/nottrobin "More about Robin Winslow")

28 January 2015

# Auto-syncing revision history from Github to Launchpad

[Design](https://ubuntu.com/blog/tag/design)

---

Share the article

In the [design team](http://design.canonical.com/team/) we keep some projects in [Launchpad](https://launchpad.net/) (as [canonical-webmonkeys](https://launchpad.net/~canonical-webmonkeys)), and some project in [Github](https://github.com/) (as [UbuntuDesign](https://github.com/ubuntudesign)), meaning we [work in both Bazaar and Git](https://ubuntu.com/2015/01/converting-projects-between-git-and-bazaar/).

## The need to synchronise Github to Launchpad

Some of our Github projects need to be also stored in Launchpad, as some of our systems only have access to Launchpad repositories.

Initally we were [converting these projects manually](https://ubuntu.com/2015/01/converting-projects-between-git-and-bazaar/) at regular intervals, but this quickly became too cumbersome.

## The Bazaar synchroniser

To manage this we created a simple [web-service project to synchronise Git projects to Bazaar](https://github.com/ubuntudesign/bzr-sync). This script basically automates the techniques described in [our previous article](https://ubuntu.com/2015/01/converting-projects-between-git-and-bazaar/) to pull down the Github repository, convert it to Bazaar and push it up to Launchpad at a specified location.

It’s a simple Python [WSGI](http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface) app which can be run directly or through a server that understands WSGI like [gunicorn](http://gunicorn.org/).

### Setting up the server

Here’s a guide to setting up our `bzr-sync` project on a server somewhere to sync Github to Launchpad.

#### System dependencies

Install necessary system dependencies:

#### User permissions

First off, you’ll have to make sure you set up a user on whichever server is to run this service which has read access to your Github projects and write access to your Launchpad projects:

#### Cloning the project

Then you should clone [the project](https://github.com/ubuntudesign/bzr-sync) and install dependencies. We placed it at `/srv/bzr-sync` but you can put it anywhere:

#### Preparing gunicorn

We should serve this over HTTPS, so our `auth_token` will remain secret. This means you’ll need a SSL certificate keyfile and certfile. You should get one from a certificate authority, but for testing you could just generate a self-signed-certificate.

Put your certificate files somewhere accessible (like `/srv/bzr-sync/certs/`), and then test out running your server with `gunicorn`:

#### Try out the sync server

You should now be able to synchronise a Github repository with Launchpad by pointing your browser at:

`https://{server-domain}/?token={secret-token}&git_url={url-of-github-repository}&bzr_url=lp:{launchpad-branch-location}`

You should be able to see the progress of the conversion as command-line output from the above `gunicorn` command.

#### Add upstart job

Rather than running the server directly, we can setup an upstart job to manage running the process. This way the bzr-sync service will restart if the server restarts.

Here’s an example of an upstart job, which we placed at `/etc/init/bzr-sync.conf`:

You can now start the bzr-sync server as a service:

And output will be logged to `/etc/upstart/bzr-sync.log`.

### Setting up Github projects

Now to use this sync server to automatically synchronise your Github projects to Launchpad, you simply need to add a [post-commit webhook](https://github.com/blog/1778-webhooks-level-up) to ping a URL of the form:

`https://{server-domain}/?token={secret-token}&git_url={url-of-github-repository}&bzr_url=lp:{launchpad-branch-location}`

Creating a webhook

In your repository settings, select “Webhooks and Services”, then “Add webhook”, and enter the following information:

* **Payload URL**: `https://{server-domain}/?token={secret-token}&git_url={url-of-github-repository}&bzr_url=lp:{launchpad-branch-location}`
* **Content type**: “application/json”
* **Secret**: -leave blank-
* Select **Just the push event**
* Tick **Active**

Saving a webhook

**NB**: Notice the `Disable SSL verification` button. By default, the hook will only work if your server has a *valid* certificate. If you are testing with a self-signed one then you’ll need to disable this SSL verification.

Now whenever you commit to your Github repository, Github should ping the URL, and the server should synchronise your repository into Launchpad.

[Get in touch

Interested in running Ubuntu in your organization?](https://ubuntu.com/about/contact-us/form)

## Newsletter signup

Get the latest Ubuntu news and updates in your inbox.

Work email:

\*I agree to receive information about Canonical's
products and services.

By submitting this form, I confirm that I have read and agree to [Canonical's Privacy Policy](https://canonical.com/legal/data-privacy).

Sign up

## Share on

---

## Related posts

[### Challenges designers face in open source (and how to fix them)](https://ubuntu.com/blog/challenges-designers-face-in-open-source-and-how-to-fix-them)

Open source powers up to 90% of modern software, yet many projects lack usability. Canonical’s Design team surveyed 115 cross-functional professionals to uncover the 4 core...

[Kola Ojoodide](https://ubuntu.com/blog/author/kola-ojoodide)

26 June 2026

[### Template: Streamlining open source design contributions](https://ubuntu.com/blog/template-streamlining-open-source-design-contributions)

As designers working at Canonical, we’re always thinking about open source. We believe that encouraging more designers to contribute to open source benefits everyone, from the...

[Nina Rojc](https://ubuntu.com/blog/author/ninarojc)

16 June 2026

[### Decoding design: How design and engineering thrive together in open source](https://ubuntu.com/blog/decoding-design-how-design-and-engineering-thrive-together-in-open-source)

Open source thrives on engineering-driven processes. Fast feedback loops, terminal tools, Git workflows: they’re the lifeblood of how we build software in the open. But for...

[Miguel Divo](https://ubuntu.com/blog/author/mdivo)

22 May 2026

[### Why web engineering is great](https://ubuntu.com/blog/why-web-engineering-is-great)

Hi, I’m Johann! I’m an engineering manager in Canonical’s web team. For the larger part of my 15 years of work experience as engineer, I’ve been working in web development....

[Johann Wolf](https://ubuntu.com/blog/author/johannwolf)

27 April 2026
