Diff for "Code"

Not logged in - Log In / Register

Differences between revisions 3 and 4
Revision 3 as of 2009-06-25 08:36:51
Size: 3900
Editor: jml
Comment: Minor tweaks
Revision 4 as of 2009-07-21 05:45:31
Size: 4014
Editor: jml
Comment:
Deletions are marked like this. Additions are marked like this.
Line 18: Line 18:

The [[attachment:codehosting.png|codehosting overview diagram]] summarizes how some of these systems interact.

Launchpad Code

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

TODO: add section on why bzr exactly

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

  • The bzr client
  • Connectivity to Launchpad (sftp and bzr+ssh)
  • Hosting infrastructure
  • The underlying object model
  • The web application
  • Email processing
  • Code imports (from CVS, Subversion and git [Mercurial soon])
  • Branch source code browser (loggerhead)

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.

The bzr 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]

  • bzr client [shared with the bzr team]
  • bzr.plugins.launchpad [shared with the bzr team]
  • server side of lp name resolution

Connectivity to Launchpad

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]

  • HTTP apache configuration [shared with LOSAs]
  • branch location rewrite script (called by mod-rewrite rule)
  • ssh server
    • authentication
    • sftp implementation
    • smart server launching
  • smart server
    • lp-serve plugin
    • bzr's smart server [shared with bzr team]
  • codehosting transport implementations
  • codehosting interfaces on xmlrpc.lp.internal

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]

  • puller
  • scanner
    • revision email jobs
  • scalability concerns - efficient storage and responsiveness [shared with LOSAs]
    • stacking
  • reclaimation cleanup jobs
  • backup support scripts

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

  • general information
  • listings for various registry objects - people, teams, projects, distros, packages
  • privacy
  • code reviews
  • merge management
  • branch gardening
  • linking to other launchpad apps (bugs, blueprints, rosetta (soyuz soon))
    • translation jobs [rosetta team primarily responsible for this]
  • asynchronous generation of review diffs

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:

  • creating a new merge proposal (an possibly a source branch) from a merge directive
  • processing email comments (with possible commands)

Code imports

Launchpad provides a way for users to get access to source code from other systems as Bazaar branches. (from CVS, Subversion and git [Mercurial soon])

  • code import jobs
  • integration of import tools
    • cscvs for CVS and Subversion
    • bzr-git and dulwich for git

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 a separate tree.

  • launchpad-loggerhead - contains Launchpad specific code for our loggerhead instance
  • loggerhead itself - community project but with major contributions from Canonical

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