posts - 262,  comments - 221,  trackbacks - 0
【16】回滚到指定的版本
通过前面对svn revert命令的学习,我们已经知道了如何回滚尚未提交的本地变更。但是如果变更已经提交,成为版本库的某个版本,这时还能够再回滚吗?前面的实验已经知道svn update命令不会对已经发生修改的本地资源进行update操作,以免覆盖本地尚未提交的修改。那么对于当前没有发生修改的本地资源,通过svn update能否回滚到指定的历史版本呢?

通常要回滚到某个指定的历史版本,我们需要知道两件事:
 A.要回滚到的那个版本的版本号
 B.要回滚到的那个版本当时所做的修改

现在假设我们对ECoupon下的read-from-local.txt文件进行了修改,增加了“modify by user qlinpen”这句话,并提交到版本库。之后我们想回滚到某个指定的历史版本。实验如下:

C:\>svn commit E:\Temp\ECoupon -"update read-from-local.txt file"
Sending        E:\Temp\ECoupon\read
-from-wc.txt
Transmitting file data .
Committed revision 
19.

C:\
>svn update E:\Temp\ECoupon
At revision 
19.

好,现在在开始回滚之前,我需要知道在我提交变更之后,是否有其他人对该文件进行了修改,以及修改的时间。这时我们可以通过svn log命令方便地查看版本的变更历史。该命令的用法:

svn log [PATH]、svn log URL[PATH...]、svnl og URL[@REV] [PATH...]

默认情况下如果svn log不加任何参数,会显示当前目录下所有资源的变更历史,我们可以通过PATH,URL来限定显示范围,还可以通过URL PATH来显示某个URL下的某个(些)文件的变更历史,甚至还可以指定版本号,版本范围。

下面我们逐个来看svn log的使用:

●svn log PATH
C:\>svn log E:\Temp\ECoupon\read-from-wc.txt
------------------------------------------------------------------------
r19 | qlinpen | 
2009-12-09 16:08:59 +0800 (星期三, 09 十二月 2009) | 1 line

update read
-from-local.txt file
------------------------------------------------------------------------
r18 | qlinpen | 
2009-12-08 23:11:45 +0800 (星期二, 08 十二月 2009) | 1 line

commit after update
------------------------------------------------------------------------

●svn log URL [PATH...]
C:\>svn log http://localhost:8000/svn/Workspace/Ericsson/ECoupon/read-from-wc.txt
------------------------------------------------------------------------
r19 | qlinpen | 
2009-12-09 16:08:59 +0800 (星期三, 09 十二月 2009) | 1 line

update read
-from-local.txt file
------------------------------------------------------------------------
r18 | qlinpen | 
2009-12-08 23:11:45 +0800 (星期二, 08 十二月 2009) | 1 line

commit after update
------------------------------------------------------------------------

C:
\>svn log http://localhost:8000/svn/Workspace/Ericsson ECoupon/read-from-wc.txt
------------------------------------------------------------------------
r19 | qlinpen | 
2009-12-09 16:08:59 +0800 (星期三, 09 十二月 2009) | 1 line

update read
-from-local.txt file
------------------------------------------------------------------------
r18 | qlinpen | 
2009-12-08 23:11:45 +0800 (星期二, 08 十二月 2009) | 1 line

commit after update
------------------------------------------------------------------------

●svn log URL[@REV] [PATH]
C:\>svn log -18:HEAD E:\Temp\ECoupon\read-from-wc.txt
------------------------------------------------------------------------
r18 | qlinpen | 
2009-12-08 23:11:45 +0800 (星期二, 08 十二月 2009) | 1 line

commit after update
------------------------------------------------------------------------
r19 | qlinpen | 
2009-12-09 16:08:59 +0800 (星期三, 09 十二月 2009) | 1 line

update read
-from-local.txt file
------------------------------------------------------------------------

C:
\>svn log -18:19 http://localhost:8000/svn/Workspace/Ericsson/ECoupon/read-from-wc.txt
------------------------------------------------------------------------
r18 | qlinpen | 
2009-12-08 23:11:45 +0800 (星期二, 08 十二月 2009) | 1 line

commit after update
------------------------------------------------------------------------
r19 | qlinpen | 
2009-12-09 16:08:59 +0800 (星期三, 09 十二月 2009) | 1 line

update read
-from-local.txt file
------------------------------------------------------------------------

C:
\>svn log E:\Temp\ECoupon\read-from-wc.txt@18
------------------------------------------------------------------------
r18 | qlinpen | 
2009-12-08 23:11:45 +0800 (星期二, 08 十二月 2009) | 1 line

commit after update
------------------------------------------------------------------------

C:
\>svn log http://localhost:8000/svn/Workspace/Ericsson/ECoupon/read-from-wc.txt@18
------------------------------------------------------------------------
r18 | qlinpen | 
2009-12-08 23:11:45 +0800 (星期二, 08 十二月 2009) | 1 line

commit after update
------------------------------------------------------------------------

以上各种svn log的用法看似复杂,实际上离不开两样东西:

 A.资源路径:本地路径(PATH)或远程路径(URL/URL PATH)
 B.版本号或版本范围:-r 18:HEAD或者@19

当我们知道了资源的版本变更历史后,我们就可以着手进行回滚到历史版本的操作了。


-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2009-12-09 16:01 Paul Lin 阅读(298) 评论(0)  编辑  收藏 所属分类: 项目管理

只有注册用户登录后才能发表评论。


网站导航:
 
<2009年12月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(21)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜