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