On Oct 9, 2011, at 00:45, Geoff Hoffman wrote:

> On Sat, Oct 8, 2011 at 8:38 PM, Xiang Liu wrote:
> 
>> I have removed a directory by mistake.
>> 
>> > svn del https://pl3.projectlocker.com/gnwd/notes/svn/a_dir
>> 
>> So, How can I recover it?
> 
> What I would do is pick a new location on your machine and export the parent 
> directory of where your directory used to be (the svn dir above?) and force 
> the revision number of the repository to be what it was, when a_dir used to 
> exist. If your repo is at -r 10 now but the folder existed at -r 9, do 
> something like:
> 
> #> cd /other/dir
> #> svn export https://pl3.projectlocker.com/gnwd/notes/svn -r 9 svn
> Exported revision 9
> 
> now you will have a new svn folder at /other/dir/svn, you can then copy the 
> a_dir inside there back to your working copy and commit it back to the 
> repository
> 
> cp svn/a_dir /path/to/workingcopy/gnwd/notes/svn/
> 
> now if you cd to your working copy dir and do a svn status, you can see these 
> a_dir files are just a new unversioned directory
> 
> #> cd /path/to/workingcopy/gnwd/notes/svn
> #> svn add a_dir
> A foo.c
> A bar.c
> etc
> #> svn commit -m "Restored a_dir"
> Committed revision 11.

If you do it that way, it will appear to Subversion (and yourself later, when 
you review the history) as though you created the directory an all its contents 
in revision 11. It will be completely disconnected from its previous history in 
the repository. "svn log" on this new directory will only go back to revision 
11. "svn blame" will show it was created in revision 11. This is probably not 
what you want. You probably want to bring the directory back from the past, 
linked with all its prior history.

To do that, instead copy it from its prior repository location with svn cp:

cd /path/to/workingcopy/gnwd/notes/svn
svn cp https://pl3.projectlocker.com/gnwd/notes/svn/a_dir@9 .
# test, test, test
svn ci -m "resurrecting a_dir from revision 9"

Reply via email to