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

Re: Error when creating tags from working copy

From: Karl Fogel <kfogel_at_red-bean.com>
Date: Sat, 11 Oct 2008 13:20:15 -0400

[apologies for the repost on users@ -- I forgot to CC dev@ last time,
and this is now a dev@ issue]

"Michael Susser" <hdmlist_at_googlemail.com> writes:
> i have found a bug when creating tags from working copy in svn 1.5.2
> (and also 1.5.3). Here is a recipe how to reproduce the error: (my
> apache is configured to host the repositories in E:\SVNRep)
>
> [...]
>
> svn copy -m"tagging" E:\Data\wc\trunk http://myserver/svn/repo/tags/V1.0.0
>>svn: Commit failed (details follow):
>>svn: File '/svn/repo/tags/V1.0.0/dir/file.cpp' already exists

Thank you for the excellent recipe. I can reproduce this, and have
written a Unix Bourne shell reproduction script (see below). Note that
this only reproduces over http://. If you try it with svn:// or
file://, the tagging works fine.

> This error message is absolutely wrong! I investigated what went wrong and
> found the following: after the commit action the working copy is not updated
> correctly(?). The changed file "file.cpp" gets a new revision (2), but its
> parent directory "dir" stays at revision 1. Is this ok?

Well, that part is okay. When you commit, only the committed items get
their revisions bumped locally -- in other words, a commit does not do
an update on the items that are not part of the commit. However,
Subversion is supposed to transparently handle the resultant mixed
revisions. They shouldn't matter here.

This bug seems familiar, like we've either fixed it before or filed an
issue for it. I'll check the logs and the issue tracker. But we have a
reproduction recipe, so that means we can fix it or re-fix it :-).

----------------------------------------------------------------------------
#!/bin/sh

# The next line is the only line you should need to adjust.
SVNDIR=/home/kfogel/src/subversion

SVN=${SVNDIR}/subversion/svn/svn
SVNSERVE=${SVNDIR}/subversion/svnserve/svnserve
SVNADMIN=${SVNDIR}/subversion/svnadmin/svnadmin

# Select an access method. If svn://, the svnserve setup is
# handled automagically by this script; but if http://, then
# you'll have to configure it yourself first.
#
URL=http://localhost/ms/repos
# URL=svn://localhost/repos
# URL=file:///`pwd`/repos

rm -rf repos wc Data import-me

${SVNADMIN} create repos

# These are for svnserve only.
echo "[general]" > repos/conf/svnserve.conf
echo "anon-access = write" >> repos/conf/svnserve.conf
echo "auth-access = write" >> repos/conf/svnserve.conf

# The server will only be contacted if $URL is svn://foo, of course.
${SVNSERVE} --pid-file svnserve-pid -d -r `pwd`
# And put the kill command in a file, in case need to run it manually.
echo "kill -9 `cat svnserve-pid`" > k
chmod a+rwx k

mkdir Data
svn co ${URL} Data/wc
mkdir Data/wc/tags
mkdir Data/wc/trunk
mkdir Data/wc/trunk/dir
cp /dev/null Data/wc/trunk/dir/file.cpp
${SVN} add Data/wc/t*
${SVN} ci -m"test" Data/wc

echo "ABC" >> Data/wc/trunk/dir/file.cpp

${SVN} ci -m"test" Data/wc

# Using http:// only, the next command fails with this error:
#
# subversion/libsvn_client/copy.c:1319: (apr_err=175005)
# svn: Commit failed (details follow):
# subversion/libsvn_ra_neon/commit.c:1036: (apr_err=175005)
# svn: File '/ms/repos/tags/V1.0.0/dir/file.cpp' already exists
#
${SVN} copy -m"tagging" Data/wc/trunk ${URL}/tags/V1.0.0

./k

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-10-11 19:20:46 CEST

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