【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 -m "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 -r 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 -r 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) 编辑 收藏 所属分类:
项目管理