linux svn恢复删除的文件夹和文件

张映 发表于 2010-10-26

分类目录: 服务器相关

标签:,

我觉得在window下面,查找被删除的svn文件夹和文件是件比较麻烦的事,恢复就更麻烦了。有的时候,命令还是比鼠标要好用的。

下面做一个例子来说明一下,删除和恢复的例子。

[root@BlackGhost branch]# svn delete tank  //标记删除一个目录,不是真正删除
D         tank
[root@BlackGhost branch]# svn revert tank  //可以用svn revert dir 来恢复前面的操作
Reverted 'tank'
[root@BlackGhost branch]# svn commit tank -m "tank"
svn: Working copy '/home/zhangy/checkout/repos' locked
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
[root@BlackGhost branch]# svn cleanup   //如果出现锁定的情况,cleanup一下
[root@BlackGhost branch]# svn ci tank -m "tank"
Deleting       tank

Committed revision 21.
[root@BlackGhost branch]# svn revert tank   //提交删除后,用这个方法就不管用了
Skipped 'tank'

实际删除文件夹和删除文件的操作的方法有一点点不同

1,删除文件夹后,要回到被删除文件夹的上一级目录

cd 父目录
[root@BlackGhost main]# svn log -v |grep -C 4 tank
------------------------------------------------------------------------
r21 | zhangy | 2010-10-26 21:11:16 +0800 (Tue, 26 Oct 2010) | 1 line
Changed paths:
D /main/tank

a
------------------------------------------------------------------------
r20 | zhangy | 2010-10-26 21:10:59 +0800 (Tue, 26 Oct 2010) | 1 line
Changed paths:
M /main
A /main/tank

a
------------------------------------------------------------------------

从上面我们可以看出,在21版本的时候被删除了,在20这个版本还在,我就可以将其恢复到20版本删除前最新的版本

[root@BlackGhost main]# svn update -r 20 tank   //恢复删除文件夹
A    tank
Updated to revision 20.

2,如果是删除文件后,是不要回到上一级目录,本目录就行

[root@BlackGhost branch]# svn log -v |grep -C 4 test.php
------------------------------------------------------------------------
r13 | zhangy | 2010-10-26 21:11:16 +0800 (Tue, 26 Oct 2010) | 1 line
Changed paths:
D /branch/test.php     //在13版的时候,被删除了。

test
------------------------------------------------------------------------
r12 | zhangy | 2010-10-26 21:10:59 +0800 (Tue, 26 Oct 2010) | 1 line
Changed paths:
M /branch
A /branch/test.php

test
------------------------------------------------------------------------

从上面可以看出,12版本test.php是有的

[root@BlackGhost branch]# svn update -r 12 test.php    //更新的时候,出现了以下问题
Skipped 'test.php'
At revision 12.
Summary of conflicts:       //提示是有冲突的
Skipped paths: 1
[root@BlackGhost branch]# svn resolve --accept working test.php   //解决冲突
Resolved conflicted state of 'test.php'
[root@BlackGhost branch]# svn update -r 12 test.php     //恢复删除的文件
A    test.php
Updated to revision 12.



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/server/1073.html/comment-page-1

1 条评论

  1. 留言

    你的这恢复方法,在重新svn update 以后,又回到之后的版本了,被恢复的文件还是丢掉的了。你试试看?