Guidelines for Packages Maintained on

This chapter adds additional guidelines for packages maintained on Alioth's subversion repository. Please read the page Java/JavaVcs first if you have not done yet.

The subversion root URL is svn+ssh:// Every source package has its trunk in svn+ssh:// where SOURCE is the name of the source package. There are similar directories for tags and branches: svn+ssh:// and svn+ssh://

Multiple versions of the same source package SHOULD have their individual directories in trunk and SHOULD NOT share the same directory, e.g. svn+ssh:// and svn+ssh:// is correct but svn+ssh:// and svn+ssh:// would be incorrect.

Old and no longer maintained packages SHOULD be moved from trunk to svn+ssh://

Renamed source packages MUST be renamed in trunk, too. It is RECOMMENDED to recreate the old directory and commit a README file there with the information about the rename.

You SHOULD NOT import upstream source into Debian's svn repository. You SHOULD import only the debian directory. Setting the property mergeWithUpstream to 1 for this directory is RECOMMENDED for using svn-buildpackage.

You MUST create a tag in the tags directory for every successful upload.

Practical information

This chapter gives instructions for using certain tools. The subversion-based source repository of Debian-Java can be inspected at

initial import

USER=<your username on debian>
PACKAGE=$(basename ` pwd`) # replace with your package name
svn list "svn+ssh://${USER}"
debuild clean
svn import debian "svn+ssh://${USER}${PACKAGE}/debian"
svn mkdir "svn+ssh://${USER}${PACKAGE}"
svn mkdir "svn+ssh://${USER}${PACKAGE}"

initial import, the svn-inject way

This way is much easier and takes care of a lot of small details. Please first check that:

        User USER-guest

The part about the login is important as it makes it much easier for other people to work on the package you imported. It also saves you from all the ${USER}-guest@ in the URLS.Then, import with the following command:

svn-inject -o -l 2  $PACKAGE.dsc svn+ssh://

This takes care of all the small details of importing (in particular setting the mergeWithUpstream property, but also many other details.

working, updating, committing

svn checkout svn+ssh://${USER}${PACKAGE}
svn update
svn add DIR|FILE
svn commit

creating a tag

svn copy 'svn+ssh://${USER}${PACKAGE}' \
         'svn+ssh://${USER}${PACKAGE}/RELEASE_1_2_2-8' \
        -m 'SOME COMMENT'

You can also use svn-buildpackage to create the tag. (This is similar to the sequence for svn-buildpackage below, but only generates the tag.)

svn-buildpackage --svn-tag-only

using svn-buildpackage

mkdir tarballs build-area
cp .../*.orig.tar.gz tarballs
svn checkout svn+ssh://${USER}${PACKAGE}
svn propset mergeWithUpstream 1 debian
svn commit (svn update)
svn-buildpackage --svn-ignore -us -uc -rfakeroot
svn-buildpackage --svn-lintian -rfakeroot
svn-buildpackage --svn-tag -rfakeroot

(created packages land in directory build-area)

Updating a package

rm ../*.gz
uscan --no-symlink
svn-upgrade ../*.gz
rm ../*.gz

Then edit/test/commit as normal.

If uscan fails, update or create the debian/watch file.

Branching for stable-security

Create a branch from the tag that corresponds to the version of the package released in stable. Edit debian/control and update the Vcs-Svn: and Vcs-Browser: fields to point to the branch.

svn copy 'svn+ssh://${USER}${PACKAGE}/${VERSION}' \
         'svn+ssh://${USER}${PACKAGE}/${RELEASE}-security' \
        -m 'branching ${VERSION} for ${RELEASE}-security updates'

After a package upload to stable-security, create the release tag manually, as svn-buildpackage won't place it correctly in the tree.

svn copy 'svn+ssh://${USER}${PACKAGE}/${RELEASE}-security' \
         'svn+ssh://${USER}${PACKAGE}/${SECURITY-VERSION}' \
        -m 'tagging ${SECURITY-VERSION} upload'