This page is about how Launchpad's Code Hosting component. Please ask for help right away if you have any questions.

Launchpad Code Hosting

Launchpad hosts source code using Git and Bazaar branches. However dealing with code in Launchpad covers many more areas than just hosting branches.

Code for the web application is only part of the Launchpad codehosting system. The major sub-systems are:

Each of these subsystems also have multiple moving parts and some have other asynchronous jobs associated with them.

The codehosting overview diagram summarizes how some of these systems interact.

You can run the codehosting system locally.

We no longer put significant effort into bzr hosting beyond making sure it remains functional. The future of bzr is Breezy; Launchpad has migrated to it for code hosting, and will migrate to it for code imports in due course.

The bzr/brz client

This is what users install on their systems to use Bazaar. The bzr application is also installed on the server side for Launchpad to use to access the information in the Bazaar branches.

Parts [and responsibilities]

Connectivity to Launchpad

Git

turnip implements several frontends for different transports.

Parts [and responsibilities]

Bazaar

Connecting to the code hosting system from the outside world is done either through SSH using SFTP or the bzr+ssh protocol, or through HTTP. Apache handles the HTTP routing using a number of mod-rewrite rules.

Parts [and responsibilities]

Hosting infrastructure

This really groups together the bits around what happens once we have a branch that a user has pushed to us, and the associated jobs that get kicked off.

Parts [and responsibilities]

The web application

Code that is executed as part of the Launchpad web application. The core concepts are documented on the Code/Concepts page.

Major features

Email processing

There is also the processing of incoming email to the code.launchpad.net domain. Currently there are two main things are triggered with incoming email:

Code imports

Launchpad provides a way for users to get access to source code from other systems as Bazaar branches (from CVS, Subversion, git and Mercurial). This also supports mirroring Git repositories from elsewhere into Git repositories in Launchpad.

Git repository source code browser (cgit)

Launchpad uses cgit to provide a web view of the repository contents. We use an unmodified package of cgit; Launchpad's customizations are in turnip.pack.http.

Bazaar branch source code browser (loggerhead)

Launchpad uses loggerhead to provide a web view of the branch contents. We try not to have any Launchpad specific code in loggerhead itself, but instead keep that in the lp:~launchpad-pqm/loggerhead/devel branch.

See Loggerhead for Launchpad developers for details on how to land changes to Launchpad loggerhead.

Source package recipes

See the help wiki for more details on what recipes are.

Code (last edited 2020-08-17 15:21:50 by cjwatson)