You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Ding Honghui <hh...@gmail.com> on 2008/03/19 06:17:17 UTC
svn update failed
hi, list
Assume 2 developer, User A and User B.
initial svn source struct as like that
svntest/
`-- dir
|-- a
| `-- file
|-- b
| `-- file
`-- c
`-- file
4 directories, 3 files
User A check out the svntest and make some modify on it.
- add a file in directory a
- remove the file in directory b
- modify the file in directory c
and not commit it.
User B remove the directory dir from svn repos by mistake,
then, User B check out the initial rev of svn and add the dir to current
version to recover it.
Then, when the User A try to svn update, it failed.
What should User A do in this condition?
http://218.108.10.40/buildsvn.sh construct the condition above.
--
Best Regards,
Ding Honghui
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Re: svn update failed
Posted by Ryan Schmidt <su...@ryandesign.com>.
On Mar 19, 2008, at 01:17, Ding Honghui wrote:
> Assume 2 developer, User A and User B.
> initial svn source struct as like that
>
> svntest/
> `-- dir
> |-- a
> | `-- file
> |-- b
> | `-- file
> `-- c
> `-- file
>
> 4 directories, 3 files
>
> User A check out the svntest and make some modify on it.
>
> - add a file in directory a
> - remove the file in directory b
> - modify the file in directory c
>
> and not commit it.
>
> User B remove the directory dir from svn repos by mistake,
> then, User B check out the initial rev of svn and add the dir to
> current
> version to recover it.
>
> Then, when the User A try to svn update, it failed.
>
> What should User A do in this condition?
>
> http://218.108.10.40/buildsvn.sh construct the condition above.
From your script:
> svn co -r1 file://$SVNROOT/svntest/
> mv svntest/dir .
> rm -rf svntest
>
> echo find dir -name .svn -exec rm -rf {} \;
> find dir -name .svn | xargs rm -rf
>
> svn co file://$SVNROOT/svntest/
> mv dir svntest
> cd svntest
> svn add dir
> svn ci -m "recover from orignal version"
> echo work space for user is: $WORKSPACE
> echo the svn repos is: file:///$SVNROOT
> echo rm -rf $WORKSPACE $SVNROOT after you finished it.
That's not how you would resurrect the deleted directory. There are
many problems with doing it this way: 1) it's a lot of steps; 2) it
loses the history of deletion and everything before that; 3) it re-
uploads all the files into the repository instead of cheaply copying
them from the previous revision where they already existed; 4) it
causes the error you observed.
The correct way to resurrect it is:
svn cp file://$SVNROOT/svntest/dir@1 file://$SVNROOT/svntest -m
"resurrect dir from r1"
Or you could also undo revision 2 as per the book:
http://svnbook.red-bean.com/en/1.4/
svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org