On 10/2/2013 10:36 AM, Ullrich Jans wrote:

I'm now facing the same problem. My users want the rebasing, but during
the dump/load instead of after the fact (apparently, it causes issues
with their environment when they need to go back to an earlier revision
to reproduce something). They also want to keep the empty revisions (for
references from the issue tracker).

I haven't tried it with svnadmin dump followed by svndumpfilter (I don't
think it has that capability).

The command we ended up using back in May 2011 when we did this looked like the following. It's been two years, but I'm pretty sure these two scripts is all we ended up using.

- We had a master dump of the entire brc-jobs repository.
- Target repository name was "brc-jobs-zp" (CLCODE)
- It takes the dump and splits it into a smaller chunk (CLPATH).
- Had to edit the script for each new client/path that we wanted to split out.

It does *not* attempt to rebase the individual projects up to the root directory. It *is* possible by using 'sed' to do this in the resulting dump file, but it is trick.

----------------------------------------
#!/bin/bash

SOURCE=/mnt/scratch/svn-dump-brc-jobs.may2011.dump.gz

DESTDIR=/var/svn/
DESTPFX=svn-raw-brc-jobs-
DESTSFX=10xx.dump.gz

CLCODE=zp
CLPATH=Z/ZP_SingleJobs

SDFOPTS='--drop-empty-revs  --renumber-revs'

date

echo ${DESTDIR}${DESTPFX}${CLCODE}${DESTSFX}

svnadmin dump --quiet /var/svn/brc-jobs | \
    svndumpfilter include --quiet $SDFOPTS $CLPATH | \
    gzip > ${DESTDIR}${DESTPFX}${CLCODE}${DESTSFX}

date
----------------------------------------

The mirror to this was the script that created the new SVN repository and loads in the individual dump.

Note the commented out 'sed' lines where we attempted to rebase individual project folders back up to the root of the repository. They didn't work, so we ended up just doing a move operation in the TortoiseSVN repository browser.

- It changes the UUID of the newly created repository to be something unique instead of using the old repo's UUID.
- Had to be edited anew for each new client/path.

----------------------------------------
#!/bin/bash

SRCDIR=/var/svn/
SRCPFX=svn-raw-brc-jobs-
SRCSFX=10xx.dump.gz

DESTDIR=/var/svn/
DESTPFX=svn-newbase-brc-jobs-
DESTSFX=10xx.dump.gz

SDFOPTS='--quiet --drop-empty-revs  --renumber-revs'

CLPARENT=Z
CLCODE=zp

date

#gunzip -c ${SRCDIR}${SRCPFX}${CLCODE}${SRCSFX} | \
#sed "s/Node-path: $CLPATH\//Node-path: /" | \
#sed "s/Node-copyfrompath: $CLPATH\//Node-copyfrompath: /" | \
#gzip > ${DESTDIR}${DESTPFX}${CLCODE}${DESTSFX}

svn mkdir -m "Import from brc-jobs" file:///var/svn/brc-jobs-${CLCODE}/${CLPARENT}

gunzip -c ${SRCDIR}${SRCPFX}${CLCODE}${SRCSFX} | \
  svnadmin load --quiet /var/svn/brc-jobs-${CLCODE}

svnlook uuid /var/svn/brc-jobs-${CLCODE}
svnadmin setuuid /var/svn/brc-jobs-${CLCODE}
svnlook uuid /var/svn/brc-jobs-${CLCODE}
svnadmin pack /var/svn/brc-jobs-${CLCODE}

chmod -R 775 /var/svn/brc-jobs-${CLCODE}
chmod -R g+s /var/svn/brc-jobs-${CLCODE}/db
chgrp -R svn-brc-jobs /var/svn/brc-jobs-${CLCODE}

date
----------------------------------------

I do wish I could have figured out the 'sed' commands to move a project from /Z/ZP_SingleJobs/JOBNR to be just /JOBNR in the repository, but there wasn't time.

For rebasing, that's probably your missing piece... which I don't have.

Reply via email to