[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svnrdump revision inconsistency bugs

From: Mark Eichin <eichin_at_gmail.com>
Date: Thu, 12 May 2011 17:01:30 -0400

Fortunately shell scripts aren't really white-space sensitive, so I've
just pasted it inline.

> Just a reminder, you always have the option to use svnsync + 'svnadmin dump'
> instead of 'svnrdump dump'.

The more serious of the two bugs are on the svnrdump *load* side;
svnsync doesn't help with that (because it expects a clean repo, and
it expects more access than I have to the destination repo.) I use
svnrdump dump here just to minimize the tools involved in the
reduction case; if I use "svnadmin dump" with the same options,
svnrdump load fails the same way.

#!/bin/sh -xe

PATH=$HOME/tmp/maverick.chroot/tmp/svnrdump/bin:$PATH

svn --version
svnrdump --version

TMPDIR=/dev/shm

REPO1_DIR=$TMPDIR/repo1
REPO1=file:////$REPO1_DIR
REPO2_DIR=$TMPDIR/repo2
REPO2=file:////$REPO2_DIR

rm -rf $REPO1_DIR $REPO2_DIR

# set up repo1
svnadmin create $REPO1_DIR
WORK=$(mktemp -d -t svnbug_work.XXXXXXX)
echo to clean up:
echo rm -rf $WORK

svn mkdir -m 'setup dross' --parents $REPO1/trunk/unrelated_project
svn co $REPO1/trunk/unrelated_project $WORK
cat > $WORK/sample1 <<EOF
sample1
EOF
cat > $WORK/sample2 <<EOF
sample2
EOF
svn add $WORK/sample1
svn commit -m 'setup dross file' $WORK/sample1
svn add $WORK/sample2
svn commit -m 'setup dross file' $WORK/sample2
svn mkdir -m 'setup real work' --parents $REPO1/trunk/real_project
# record starting rev for what we do want
REV=$(svn info $REPO1 | awk '/Revision:/ { print $2 }')
rm -rf $WORK
svn co $REPO1/trunk/real_project $WORK
cat > $WORK/sample1 <<EOF
sample1
EOF
cat > $WORK/sample2 <<EOF
sample2
EOF
svn add $WORK/sample1
svn commit -m 'setup real file' $WORK/sample1
svn add $WORK/sample2
svn commit -m 'setup real file' $WORK/sample2
svn mv $WORK/sample1 $WORK/sample3
svn commit -m 'perform a rename' $WORK
HEAD=$(svn info $REPO1 | awk '/Revision:/ { print $2 }')
# try crossloading
svnadmin create $REPO2_DIR
svn mkdir -m 'need at least something to load trunk/real_project into'
$REPO2/trunk
# need to pump the version number up, or we lose on *every* rev?
for i in $(seq 1 10); do
    svn mkdir -m 'dummy' $REPO2/trunk/p$i
done

(echo '#!/bin/sh'; echo 'echo "you win" ; exit 0') >
$REPO2_DIR/hooks/pre-revprop-change
chmod +x $REPO2_DIR/hooks/pre-revprop-change
# 3:HEAD gives, falsely, "svnrdump: E205000: Unsupported revision
specifier used; use only integer values or 'HEAD'"
echo $REV = 4 $HEAD = 7
svnrdump dump --incremental -r $REV:$HEAD $REPO1 | svnrdump load $REPO2

On Thu, May 12, 2011 at 4:39 PM, Daniel Shahaf <danielsh_at_elego.de> wrote:
> Mark Eichin wrote on Thu, May 12, 2011 at 16:26:56 -0400:
>> I haven't looked at the actual code (at this point I may be out of
>> time and have to go with convincing people that git-svn's
>> approximation is good enough)
>
> Just a reminder, you always have the option to use svnsync + 'svnadmin dump'
> instead of 'svnrdump dump'.
>
>> but since I'd actually managed to narrow
>> it down to a clean test case that didn't involve any of the
>> dump-mangling I'm doing for the actual task, I figured it best to get
>> that out there so people closer to the code can give it a try.
>
> Thanks for the report; looking forward to see the concrete details (that
> script which our mailing list software killed).
>

-- 
_Mark_ <eichin_at_thok.org> <eichin_at_gmail.com>
Received on 2011-05-12 23:01:57 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.