Development

Arch

Rhythmbox is maintained primarily in the Arch revision control system, specifically the tla implementation.

Archive Name

rhythmbox-devel@gnome.org--2004

Archive Location

http://web.rhythmbox.org/arch/2004

Main development branch

rhythmbox--main--0.9

Stable branch

rhythmbox--main--0.8

IMPORTANT: These instructions require tla 1.1 or better.

First, if you have never registered the Rhythmbox archive, you should do that now:

$ tla register-archive http://web.rhythmbox.org/arch/2004
    

After doing that (which you only have to do once), you can get a copy of the tree like so:

$ tla get rhythmbox-devel@gnome.org--2004/rhythmbox--main--0.9
    

Updating the tree

To update the source tree, just do:

$ tla update

Known Rhythmbox development archives

On the IRC channel and in Bugzilla, you will occasionally see references to developers' branches of Rhythmbox. One example is: walters@rhythmbox.org--2003b/rhythmbox--main--0.9 . It can be hard to find what the walters@rhythmbox.org--2003b part refers to, so we've provided this handy table of known archives. Here's how you might register an archive:

$ tla register-archive http://arch.example.com/archive

tla will then add that archive to your list of registered archives.

Archive Name Archive Location GPG key Comments
rhythmbox-devel@gnome.org--2004 http://web.rhythmbox.org/arch/2004 (keyring) Central archive
walters@rhythmbox.org--2003b http://arch.verbum.org/rhythmbox-2003b 6A765865 Maintainer's archive
desrt@desrt.ca--2003 http://arch.desrt.ca/ song display, misc bugfixes
harshy@dersoldat.org--2004 http://arch.dersoldat.org/arch--2004 C828E736 misc bugfixes
jyasskin@mail.utexas.edu--2003 http://bluejay.dyndns.org/archives/2003 04F49795 Shuffle and random play orders
sri@aracnet.com--2004 http://banu.homelinux.net:3517/Arch/archives/sri@aracnet.com--2004/ 7BB80427 GtkFileChooser fixes, statusbar
teuf@gnome.org--2003 http://cfergeau.free.fr/arch/ 39734ACE iPod integration
teuf@gnome.org--2004 http://testoo.no-ip.com/~teuf/archive 39734ACE Various experiments
treed@surreality.us--2003-rhythmbox http://www.surreality.us/arch/rhythmbox CE1A0CDC misc bugfixes
yann@cvs.gnome.org--2003 ftp://81.64.184.176/archive 2FE51A2E drag & drop, misc bugfixes
mterry@fastmail.fm--2004 http://people.umass.edu/msterry/archive 136B762D automatic rating work
mfcn@wh-hms.uni-ulm.de--2004 http://www.wh-hms.uni-ulm.de/~mfcn/archive/ album covers
aeb@debian.org--2004 http://home.in.tum.de/~bombe/arch/aeb@debian.org--2004 04880A44 bugfixes
daf@muse.19inch.net--2004 http://muse.19inch.net/~daf/arch/ 128287E8 Welsh translation
david@grepninja.com--2004 http://arch.grepninja.com DD0ABE82 Xine fixes, iradio work, and more

One hint: after registering a new archive, you may want to run

$ tla abrowse jane@example.com--2003

This will show you in a nice format what all is in the archive.

The GNOME CVS

However, not all the developers use Arch right now, so the arch tree is regularly synchronized (about once a day) with the GNOME CVS , in the rhythmbox module. See this message for more information about how things work.

Creating your own Rhythmbox branch

So you'd like to start contributing to Rhythmbox? Arch makes it incredibly easy. You don't need any kind of write access to the GNOME CVS or the main Rhythmbox arch tree to start working. You can create your own local branch of the tree, and start hacking on it.

If you've never used tla before...

The very first thing you need to do is tell tla what your identity is. Do this, if you've never done it before:

$ tla my-id 'Jane Doe <myname@myisp.com>'

Creating your archive

First, if you haven't already, you need to create your own Arch "archive". This is your local repository; it can contain many multiple branches of various software.

$ tla make-archive myname@myisp.com--2003 ~/code/archive
    

If you have at least tla 1.2pre0 and a gpg key, you may want to sign your archive. To do so, use the following command instead.

$ tla make-archive --signed myname@myisp.com--2003 ~/code/archive
    

Then create the file ~/.arch-params/signing/=default containing the line

gpg --clearsign
    

Creating a branch

Next, you want to create a branch. At this point, if you didn't register the archives above, you should do that now. You will then make this branch refer back to the main Rhythmbox arch repository:

$ tla archive-setup myname@myisp.com--2003/rhythmbox--main--0.9
$ tla tag rhythmbox-devel@gnome.org--2004/rhythmbox--main--0.9 myname@myisp.com--2003/rhythmbox--main--0.9
    

Congratulations, you've created your own branch! Next, let's get a copy of the tree, where we can do work:

$ tla get myname@myisp.com--2003/rhythmbox--main--0.9 rhythmbox
    

Updating your branch

Development on your branch is now entirely independent of development on the main Rhythmbox tree. However, it's likely that you will want to merge in changes made on the main Rhythmbox tree. When you want to do that, just do:

$ tla star-merge rhythmbox-devel@gnome.org--2004/rhythmbox--main--0.9 
    

Committing changes

That's it! Now, cd into rhythmbox and hack away. When you're ready to commit, do this:

$ tla commit -s 'fix crash on invalid mp3s'

Publishing your archive

That's the basic work cycle. Now, finally you need to publish your changes somewhere. You do this by creating a mirror of your local repository, on a public web site or FTP site, where others can read your changes. You will need write access for yourself to the repository; I personally talk to arch.verbum.org over SFTP, but there are other transports available.

$ tla make-archive --listing --mirror myname@myisp.com--2003 sftp://myisp.com/home/me/public_html/archive

If you have signed your main archive, in order to preserve your signatures, the above command should be

$ tla make-archive --signed --listing --mirror myname@myisp.com--2003 sftp://myisp.com/home/me/public_html/archive

And you should create the file ~/.arch-params/signing/myname@myisp.com--2003-MIRROR containing the line

myname@myisp.com--2003

In the above command, the directory archive must not already exist. Now, you want to push the changes in your local repository to the mirror:

$ tla archive-mirror myname@myisp.com--2003

Finally, to publish your changes, you need to tell people how to access your public mirror, by giving them the archive name ( myname@myisp.com--2003 ) and the location (say http://myisp.com/~me/archive ).

A bit more advanced: tracking upstream branch changes

Periodically, a new branch of Rhythmbox will be created for new major versions. If you have your own branch of an older version, you will likely also want your own branch of the newer version as well. This message describes how to handle that.

A discussion of Arch and Rhythmbox

You may find this IRC discussion to be a good introduction to Arch from a newbie perspective.