savannah-hackers-public
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Savannah-hackers-public] Bazaar codehosting


From: Tim Penhey
Subject: [Savannah-hackers-public] Bazaar codehosting
Date: Mon, 21 Jul 2008 16:33:07 +1200
User-agent: KMail/1.9.9

Hi Sylvain and savannah hackers,

I wanted to touch base and show what we have set up for the GNOME community,
as this is what we were trying to communicate earlier (somewhat unsuccessfully 
I feel).

http://bzr-playground.gnome.org

What you see on this page is a simple HTML file with some server side includes 
to populate
the modules.  It also is themed nicely to look like an integral part of the 
GNOME infrastructure.
The "Help" link goes to a wiki page that was created to help document the 
process for the
developers who are wanting to try things out.

A complete import was done of the GNOME Subversion repositories to import the 
trunk and
branches that were there for the projects.  The imports were initially done by 
a GNOME
community member (John Carr) who used the bzr-svn plug-in.  These imported 
branches
are kept in sync with the Subversion repository by listening to the Subversion 
commit
mailing list and updating the branches as necessary.

We also created users on the machine for all the GNOME members who had 
Subversion 
commit rights, and they are able to push branches to that machine.  A server 
side plug-in
was written to help with the initial branching and population of the 
developer's server side
repositories.  These are explained on the help page.

On the technical side we have the following:

  /srv/bzr -- location of all the bazaar repositories and branches, also 
symlinked from root as /bzr
  /srv/gnome-loggerhead -- a custom loggerhead with themed templates (that is 
the limit of the
      customisation AFAIK)
  /srv/bzr.gnome.org -- the static web content for the theming and initial pages
  apache config to serve the static content, and fall through to loggerhead 
(some rewrite magic)
  several cron jobs to keep the list of modules and developers up to date (used 
as server side includes
      in the static pages)
  incoming mail from the commit list and a script that keeps the trunk imports 
in sync
  bzr server side plug-in used by the client's helper script (also explained in 
the help)

The branch layout is as follows:

  /bzr/gnome -- the location of the imported branches
  /bzr/gnome/gedit -- the shared repository for the gedit project
  /bzr/gnome/gedit/trunk -- the trunk branch for gedit
  /bzr/gnome/gedit/branches/gnome-2-22 -- a branch of gedit imported from 
Subversion (around 25
    other branches are also available for this project)

Each project has its own shared repository in the /bzr/gnome area.  This 
location is restricted
to the user that does the actual imports (a service type user).

Now a user (I'll use thumper) who has used the script to set up their hosting 
for gedit would 
have a layout like:

  /bzr/thumper/gedit -- a shared repository that only thumper has write access 
to
  /bzr/thumper/gedit/devel -- a branch of trunk (other branches at this level 
too)

Any one can get a copy of any of the trunk branches over http like:

    bzr branch http://bzr-playground.gnome.org/gedit/trunk gedit

or some users branch using:

    bzr branch http://bzr-playground.gnome.org/~tthurman/metacity/vectacity/ 
tthurman-metacity


The helper script was made to make getting started with Bazaar even easier.
     ./bzr-gnome-setup.py module [branch-name]

 * Create a repository at ~/gnome-bzr/repos/$module.
 * Create a branch under ~/gnome-bzr/repos/$module/$branch.
 * A working tree will be created under ~/gnome-bzr/src/$module for the new 
branch.
 * A matching repository will be created on bzr-playground.gnome.org for you to 
push your changes to.
 * Bazaar will be configured to push the branch to bzr-playground.gnome.org by 
default. 
 [ taken from http://live.gnome.org/Bazaar ]

Pushing user branches to the playground is done with `bzr push` as the script 
adds some
configuration entries to .bazaar/locations.conf to make this easy (uses 
bzr+ssh).

This setup was decided as it gave the user a single working tree, which many 
GNOME developers
like as they often have many object files, and switching to a new branch 
reduces recompilation
for files that are unchanged.


Right now we have some apache rewrite magic making the HTTP urls pretty, but 
are looking
into loggerhead modifications to make loggerhead understand trunk and user 
branches.


In the situation where a project moves from Subversion to Bazaar formally, the 
directory
permissions on the project's repository and branches would be altered to allow 
writing from
the "core" team for that project.


Now I'm not sure how the layout above differs from what you have now on 
Savannah, or what
level of integration you you are wanting with Savannah.

Tim
-- 
https://launchpad.net/~thumper

Attachment: signature.asc
Description: This is a digitally signed message part.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]