Obsolete (pre-Git) documentation of the Ruby Team

This page contains obsolete documentation about the SVN workflow of the Ruby team before the switch to Git. This information is kept for historians and archeologists.

OBSOLETE: Using the Subversion repository (obsolete because we are migrating to Git)

Follow the instructions for building the pkg-ruby-extras packages.

If you need general help with Subversion, an online book is available.

Repository structure

Our repository is structured like this:

pkg-ruby-extras
+-- trunk
    +-- libfoo-ruby
    +-- libbar-ruby
    +-- ...
    +-- tools
    +-- website
+-- branches
+-- tags

All our packages will live inside the trunk/ directory. When uploaded, the version being uploaded is copied to tags/.

First, you have to build your package outside of the SVN tree. You should get something like that:

.
|-- libfeedparser-ruby-0.1/ (build dir)
|-- libfeedparser-ruby1.8-dev_0.1-1_all.deb
|-- libfeedparser-ruby1.8_0.1-1_all.deb
|-- libfeedparser-ruby_0.1-1.diff.gz
|-- libfeedparser-ruby_0.1-1.dsc
|-- libfeedparser-ruby_0.1-1_i386.changes
|-- libfeedparser-ruby_0.1.orig.tar.gz
`-- libxfeedparser-ruby_0.1-1_all.deb

Then just do:

svn-inject -v -l 2 -o libfeedparser-ruby_0.1-1.dsc \
       svn+ssh://LOGIN@svn.debian.org/svn/pkg-ruby-extras/

You should not try to import your package manually: this handles a lot of small gory details you do not want to know.

N.B. Make sure that you have registered a SSH key, else you will be prompted for your password a good dozen of times.

Checking out

You can check a package out by using:

$ svn checkout svn+ssh://svn.debian.org/svn/pkg-ruby-extras/trunk/libfoo-ruby

Alternatively, you can check out all the current versions of all packages (takes less than 50 MB):

$ svn checkout svn+ssh://svn.debian.org/svn/pkg-ruby-extras/trunk

Building with svn-buildpackage

First, you have to change do the trunk directory:

$ cd libfoo-ruby/

You need upstream sources to build the package. Use uscan to download them:

$ uscan --download-current-version --destdir ../tarballs/

or just tell svn-buildpackage to automatically download upstream sources when needed. It can be done by adding svn-download-orig to ~/.svn-buildpackage.conf.

Inside libfoo-ruby/, you can build the package with svn-buildpackage:

$ svn-buildpackage -rfakeroot

Releasing and tagging

After releasing the package, its current state must be tagged to keep the exact source used to build the uploaded package. This can be done from the package directory with (assuming the released version is 0.1-1):

$ svn copy trunk/libfoo-ruby tags/libfoo-ruby/0.1-1

Alternatively, you can tell svn-buildpackage to automatically tag the release after building using the option --svn-tag. You can also optionally use debcommit -r if you have the devscripts package installed.

Attention: use this option only when you are sure that this build will be the final build, just before upload.

Package upload checklist

  1. Update your repository (just in case).
  2. Rebuild the package (without --svn-ignore-new!).

  3. Check everything is alright and do whatever tests you always do.
  4. Change the latest changelog entry distribution to “unstable” (or whatever is appropriate).
  5. Rebuild again with pbuilder!

  6. Perform small checks, final lintian & linda check.

  7. Upload the package.
  8. Tag with svn-buildpackage --svn-tag-only.

  9. Commit the new changelog entry for the UNRELEASED distribution.

We will soon release a bash source file with useful aliases. If you are interested, write to our mailing list, pkg-ruby-extras-maintainers (at lists.alioth.debian.org).

OBSOLETE: Packaging with ruby-pkg-tools (obsolete because we are migrating to gem2deb)

See ?/RubyExtras/RubyPackageTools