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

Re: svn cp/mv problem?

From: <cmpilato_at_collab.net>
Date: 2001-12-04 17:12:35 CET

Karl Fogel <kfogel@newton.ch.collab.net> writes:

> Vladimir,
>
> That sequence of commands looks legitimate to me.

The sequence of commands is legit, but this is not going to work out
very well using ra_local these days. See the play-by-play below.

> > # svnadming create /tmp/svn

Got a repos, version 0.

> > #cd /tmp
> > #mkdir t
> > #touch /tmp/t/foo
> > #svn import file://localhost/tmp/svn
> > Adding ./t
> > Adding ./t/foo
> > Commit succeeded.

Now our repos is at version 1, with ./t and ./t/foo in it.

> > #svn co file://localhost/tmp/svn/t
> > A t/foo

Now we have a working copy at version 1.

> > #cd t
> > #svn cp foo foo2
> > A foo2
> > #svn ci
> > Adding /tmp/t/foo2
> > Commit succeeded.

Okay, repos is at version 2, working copy is at version 1 save for
/t/foo2, which is at version 2.

> > #svn mv foo2 foo_2
> > A foo_2
> > D foo2
> > #svn ci
> >
> > svn_error: #21050 : <Filesystem has no such file>
> > commit failed: wc locks and tmpfiles have been removed.
> >
> > svn_error: #21050 : <Filesystem has no such file>
> > commit failed: while sending tree-delta to repos.
> >
> > svn_error: #21050 : <Filesystem has no such file>
> > file not found: filesystem `/tmp/svn/db', transaction `2', path `/t/foo2'

Remember that foo2 (and only foo2) is at revision 2 in the working
copy. So, the move command will make foo_2 a copy of foo2:2 (using
file:revision syntax), and schedule foo2 for deletion. The problem
(at least with the current commit system) is that we build the commit
txn on the parent directory's (t in this case) revision (again, 1 in
this case), and then we attempt to delete 'foo2' from it. But 'foo2'
didn't show up until revision 2, so we can't possibly delete it from
revision 1!

I'm pretty sure you can also reproduce this more simply with:

   svn co file://localhost/tmp/svn/t
   cd t
   echo "foo" > foo
   svn add foo
   svn ci
   svn rm foo (this is just your 'move' above minus the 'copy' part, right?)
   svn ci

---------------------
NOTE (and this the real important part of this mail): We are
addressing this (and many related problems) in the next Milestone.
---------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:51 2006

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.