Translation(s): English - Italiano

(!) ?Discussion


This page contains guidelines to help you import your existing Subversion repository into the collab-maint repository for collaborative maintenance of packages on Alioth. If you are just looking to import an existing repository into a new empty repository of a new project, this is a little easier, so the steps below may help too.

In the explanation below, it is assumed that your existing repository is in the location "/svn/myrepository", and that your package is called "${PACKAGE}". Replace these values with the appropriate values for you. It is also assumed that you will be using the deb-maint section of the collab-maint repository, so if you are using ext-maint then just replace deb-maint with ext-maint everywhere below.

(deb-maint is for packages maintained by Debian developers, while ext-maint is for packages maintained by others.)

Dumping your existing repository

First you need to create a dump of your existing repository. This will need to be done on the machine where your repository currently resides, and it will be a little different depending on how your repository is setup. The difference will depend on whether your repository contains a top-level directory for your package or not.

Your existing repository contains a top-level directory for your package

In this case, your repository is setup something like this:

/svn/myrepository/${PACKAGE}/branches
/svn/myrepository/${PACKAGE}/tags
/svn/myrepository/${PACKAGE}/trunk

Your repository is probably setup like this as it contains other files than just your package. You will need to make sure you only extract the data for your package by using the following dump command:

svnadmin dump /svn/myrepository \
   | svndumpfilter --drop-empty-revs include ${PACKAGE} \
        1> dumpfile 2> dumpfile.error

Check the dumpfile.error file for any problems.

Your existing repository does not have a directory for your package

In this case, your repository is setup something like this:

/svn/myrepository/branches
/svn/myrepository/tags
/svn/myrepository/trunk

Your data is ready to be dumped, using the following command:

svnadmin dump /svn/myrepository 1> dumpfile 2> dumpfile.error

Testing loading the dumpfile into a repository

First, test the loading of the dumpfile you created in the previous step into a temporary repository. To begin, create an empty repository somewhere where you have write access (/svn, perhaps):

svnadmin create /svn/collab-maint

Next, create the deb-maint directory:

svn mkdir file:///svn/collab-maint/deb-maint -m "Initial directory creation"

Now, try loading the dumpfile into the test repository. Again, the method to use depends on how you did the dump in the previous step.

Your existing repository contains a top-level directory for your package

First, check to see what the directory currently looks like:

svn list file:///svn/collab-maint/deb-maint

Now you are ready to load the dumpfile. As your repository already contained a directory for your package, you don't need to create a package directory under the deb-maint directory. The load will take care of that:

svnadmin load /svn/collab-maint --parent-dir deb-maint < dumpfile \
   > load 2> load.error

If everything went well, your load.error file should be empty and you should have created a new directory for your package containing your previous repository's data for the package and all the revisions of it. Check if the directory exists:

svn list file:///svn/collab-maint/deb-maint

Then check if the log looks good:

svn log file:///svn/collab-maint/deb-maint/${PACKAGE} | less

If there are no problems, then you are ready to do this for real.

Your existing repository does not have a directory for your package

First, check to see what the directory currently looks like:

svn list file:///svn/collab-maint/deb-maint

Before loading the dumpfile, a directory for your package needs to be created:

svn mkdir file:///svn/collab-maint/deb-maint/${PACKAGE} \
   -m "Creating initial directory."

Now you are ready to load the dumpfile:

svnadmin load /svn/collab-maint --parent-dir deb-maint/${PACKAGE} < dumpfile \
   > load 2> load.error

If everything went well, your load.error file should be empty and you should have created all the revisions under your package directory. Check if the package directory looks right:

svn list file:///svn/collab-maint/deb-maint/${PACKAGE}

Then check if the log looks good:

svn log file:///svn/collab-maint/deb-maint/${PACKAGE} | less

If there are no problems, then you are ready to do this for real.

Loading the dumpfile into the Alioth repository

Important: you must perform the following on host svn.debian.org, which is the writeable version of alioth.

Now that you've successfully tested the procedure, you can do the same steps on Alioth. Copy the dumpfile you created in the previous step to svn.debian.org and log in there for the rest of the steps. You may want to also check the dumpfile with md5sum to make sure it was not corrupted in the transfer.

Again, the method to use depends on how you did the dump in the first step.

Your existing repository contains a top-level directory for your package

First, check to see what the directory currently looks like:

svn list file:///svn/collab-maint/deb-maint

Now you are ready to load the dumpfile. As your repository already contained a directory for your package, you don't need to create a package directory under the deb-maint directory. The load will take care of that:

svnadmin load /svn/collab-maint --parent-dir deb-maint < dumpfile \
   > load 2> load.error

If everything went well, your load.error file should be empty and you should have created a new directory for your package containing your previous repository's data for the package and all the revisions of it. Check if the directory exists:

svn list file:///svn/collab-maint/deb-maint

Then check if the log looks good:

svn log file:///svn/collab-maint/deb-maint/${PACKAGE} | less

If there are no problems, then you can checkout a new copy of your repository and start working.

Your existing repository does not have a directory for your package

First, check to see what the directory currently looks like:

svn list file:///svn/collab-maint/deb-maint

Before loading the dumpfile, a directory for your package needs to be created:

svn mkdir file:///svn/collab-maint/deb-maint/${PACKAGE} \
   -m "Creating initial directory."

Now you are ready to load the dumpfile:

svnadmin load /svn/collab-maint --parent-dir deb-maint/${PACKAGE} < dumpfile \
   > load 2> load.error

If everything went well, your load.error file should be empty and you should have created all the revisions under your package directory. Check if the package directory looks right:

svn list file:///svn/collab-maint/deb-maint/${PACKAGE}

Then check if the log looks good:

svn log file:///svn/collab-maint/deb-maint/${PACKAGE} | less

If there are no problems, then you can checkout a new copy of your repository and start working.

Creating a new directory

Alternatively if you do not yet have a private repository and want to create a new package directory you can do the following:

Create a new directory in svn:

svn mkdir svn+ssh://svn.debian.org/svn/collab-maint/deb-maint/${PACKAGE}

Checkout this directory for further usage:

svn checkout svn+ssh://svn.debian.org/svn/collab-maint/deb-maint/${PACKAGE} ${PACKAGE}


CategoryAlioth