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

Re: svn up --depth empty breaks working copy

From: David Glasser <glasser_at_davidglasser.net>
Date: Wed, 28 May 2008 23:29:42 -0700

I can reproduce this with 1.4.x svnserve but not trunk svnserve.

Note that the actual over-the-wire communication seems identical,
which is kind of wacky. But maybe the lack of depth capability is
triggering some compat code, which is broken?

--dave

On Wed, May 28, 2008 at 11:12 PM, David Glasser
<glasser_at_davidglasser.net> wrote:
> I have a reproduction script.
>
> needs-lock was a red herring, I think; the important thing to
> reproduce is to use a 1.4.x server.
>
> #!/bin/sh -ex
>
> CLIENT_BIN_DIR=/opt/svn/trunk/bin
> SERVER_BIN_DIR=/opt/svn/1.4.x/bin
>
> SVN=$CLIENT_BIN_DIR/svn
> SVNSERVE=$SERVER_BIN_DIR/svnserve
> SVNADMIN=$SERVER_BIN_DIR/svnadmin
> alias svn='echo "Use \$SVN." # '
> alias svnserve='echo "Use \$SVNSERVE." # '
> alias svnadmin='echo "Use \$SVNADMIN." # '
>
> svnserve_port=$(($RANDOM+1024))
> # URL=http://localhost/SOMETHING/repos
> URL=svn://localhost:$svnserve_port/repos
> # URL=file:///`pwd`/repos
>
> rm -rf repos wc* import-me
>
> ${SVNADMIN} create repos
> echo "[general]" > repos/conf/svnserve.conf
> echo "anon-access = write" >> repos/conf/svnserve.conf
> echo "auth-access = write" >> repos/conf/svnserve.conf
>
> svnserve_pid=''
> clean_exit() {
> set +e
> [[ -n "$svnserve_pid" ]] && kill -9 "$svnserve_pid"
> }
> trap clean_exit EXIT
>
> rm -f .svnserve_pid
> ${SVNSERVE} --listen-port $svnserve_port --pid-file .svnserve_pid -d -r `pwd`
> while [[ ! -r .svnserve_pid ]]; do sleep 0.01; done
> svnserve_pid=`cat .svnserve_pid`
>
> echo "### Making a Greek Tree for import..."
> mkdir import-me
> mkdir import-me/trunk
> mkdir import-me/tags
> mkdir import-me/branches
> mkdir import-me/trunk/A
> mkdir import-me/trunk/A/B/
> mkdir import-me/trunk/A/C/
> mkdir import-me/trunk/A/D/
> mkdir import-me/trunk/A/B/E/
> mkdir import-me/trunk/A/B/F/
> mkdir import-me/trunk/A/D/G/
> mkdir import-me/trunk/A/D/H/
> echo "This is the file 'iota'." > import-me/trunk/iota
> echo "This is the file 'A/mu'." > import-me/trunk/A/mu
> echo "This is the file 'A/B/lambda'." > import-me/trunk/A/B/lambda
> echo "This is the file 'A/B/E/alpha'." > import-me/trunk/A/B/E/alpha
> echo "This is the file 'A/B/E/beta'." > import-me/trunk/A/B/E/beta
> echo "This is the file 'A/D/gamma'." > import-me/trunk/A/D/gamma
> echo "This is the file 'A/D/G/pi'." > import-me/trunk/A/D/G/pi
> echo "This is the file 'A/D/G/rho'." > import-me/trunk/A/D/G/rho
> echo "This is the file 'A/D/G/tau'." > import-me/trunk/A/D/G/tau
> echo "This is the file 'A/D/H/chi'." > import-me/trunk/A/D/H/chi
> echo "This is the file 'A/D/H/omega'." > import-me/trunk/A/D/H/omega
> echo "This is the file 'A/D/H/psi'." > import-me/trunk/A/D/H/psi
> echo "### Done."
> echo ""
> echo "### Importing it..."
> (cd import-me; ${SVN} import -q -m "Initial import." ${URL})
> echo "### Done."
> echo ""
>
> ${SVN} co ${URL}/trunk wc
>
> cd wc
> echo "Modification in r2." >>iota
> $SVN ci -m "Append to iota in r2."
>
> $SVN up iota -r1 --depth=empty
>
> # Look at the output from 'svn info'. It claims "Revision: 1". But
> # then "Last Changed Rev: 2" (eek!), and catting both iota and its
> # text-base reveals the r2 change.
>
> $SVN info iota
> $SVN st iota
> cat iota
> cat .svn/text-base/iota.svn-base
>

-- 
David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-05-29 08:30:01 CEST

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