pengpenglin
人,必须选择一种生活方式并有勇气坚持下去
BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 262, comments - 221, trackbacks - 0
【原】SVN In Action(14)
前面认识了svn log命令的用法,知道了该文件的最新版本号是19。那么现在我们就来试试回滚到版本号18。下面将通过三种不同的方式来演示如何回滚到指定的历史版本
●使用svn update -r 命令
C:
\>
svn cat E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
modify by user qlinpen
C:
\>
svn cat
-
r HEAD http:
//
localhost:
8000
/
svn
/
Workspace
/
Ericsson
/
ECoupon
/
read
-
from
-
wc.txt
modify by user qlinpen
C:
\>
svn cat
-
r
18
http:
//
localhost:
8000
/
svn
/
Workspace
/
Ericsson
/
ECoupon
/
read
-
from
-
wc.txt
C:
\>
svn update
-
r
18
E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
U E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
Updated
to
revision
18
.
C:
\>
svn cat E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
C:
\>
svn cat
-
r HEAD http:
//
localhost:
8000
/
svn
/
Workspace
/
Ericsson
/
ECoupon
/
read
-
from
-
wc.txt
modify by user qlinpen
上面的例子中,在执行回滚前,本地工作副本和版本库的read-from-wc.txt文件的内容都是一样的:modify by user qlinpen。当我们执行了svn update -r 18 ...命令后可以看到本地的read-from-wc.txt文件的内容已经被回滚到版本18时的状态:即空文本。但是版本库上面的read-from-wc.txt文件依然是版本号19的,也即是最新状态。如果此时执行svn status命令,就可以看到差别了:
C:
\>
svn status E:
\
Temp
\
ECoupon
--
show
-
updates
*
18
E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
Status against revision:
19
结论:对于没有本地修改的资源,svn update可以回滚到指定的历史版本。但是如果资源已经被修改,则svn update不会对其进行update。
●使用svn copy命令
实际上,除了使用svn update。另外一种更好的办法是使用svn copy命令。那么svn copy命令的用法如何呢?根据SVN手册,svn copy的用法有4种:
A.WC->WC:即从工作副本到工作副本
B.WC->URL:即从工作副本到版本库,立即产生一次commit操作
C.URL->WC:即从版本库到工作副本,相当于check out操作
D.URL->URL:即从版本库到版本库,通常用于创建分支和标记
而且更加有用的是,svn copy支持针对特定版本的拷贝。下面我们通过实际的例子来演示如何通过svn copy来回滚资源到历史版本。首先检查read-from-wc.txt文件的版本历史:
C:\
>
svn log
-
v
-
r
18
:HEAD E:\Temp\ECoupon\read
-
from
-
wc.txt
------------------------------------------------------------------------
r18
|
qlinpen
|
2009
-
12
-
08
23
:
11
:
45
+
0800
(星期二,
08
十二月
2009
)
|
1
line
Changed paths:
A
/
Ericsson
/
ECoupon
/
read
-
from
-
wc.txt
commit after update
------------------------------------------------------------------------
r19
|
qlinpen
|
2009
-
12
-
09
16
:
08
:
59
+
0800
(星期三,
09
十二月
2009
)
|
1
line
Changed paths:
M
/
Ericsson
/
ECoupon
/
read
-
from
-
wc.txt
update read
-
from
-
local.txt file
------------------------------------------------------------------------
接下来我们要回滚到版本18.也就是刚刚创建的哪一个版本。
C:\
>
svn copy E:\Temp\ECoupon\read
-
from
-
wc.txt@
18
E:\Temp\ECoupon
svn: Path
'
E:\Temp\ECoupon\read-from-wc.txt
'
already exists
C:\
>
svn del E:\Temp\ECoupon\read
-
from
-
wc.txt
D E:\Temp\ECoupon\read
-
from
-
wc.txt
C:\
>
svn copy E:\Temp\ECoupon\read
-
from
-
wc.txt@
18
E:\Temp\ECoupon
A E:\Temp\ECoupon\read
-
from
-
wc.txt
C:\
>
svn status E:\Temp\ECoupon
--
show
-
updates
R
+
-
E:\Temp\ECoupon\read
-
from
-
wc.txt
Status against revision:
19
C:\
>
svn cat
-
r BASE E:\Temp\ECoupon\read
-
from
-
wc.txt
C:\
>
svn cat
-
r HEAD http:
//
localhost:8000/svn/Workspace/Ericsson/ECoupon/read-from-wc.txt
modify by user qlinpen
通过svn copy的做法是
A.首先用svn del删除本地已经存在的同名文件,否则copy操作失败
B.然后用svn copy
PATH/URL@REV
PATH/URL来拷贝指定版本的资源到目的地
和svn update -r REV相比,这里多了一个“删除”的动作,所以在svn status命令的执行结果中会出现一个“R +”,R是Replace的缩写:表明这个文件已经被同名的文件所取代。从以上的实例可以看到svn copy不单可以拷贝当前的文件,还可以拷贝历史版本。
●使用svn cat命令配合重定向
最后介绍另外一种办法:svn cat重定向。和svn log类似,svn cat也可以查看历史版本的内容,但它不能指定版本范围而只能使用单个版本号。配合重定向功能我们可以在查看历史版本后重定向到本地。
C:\
>
svn cat
-
r
18
E:\Temp\ECoupon\read
-
from
-
wc.txt
C:\
>
svn cat
-
r
18
E:\Temp\ECoupon\read
-
from
-
wc.txt
>
E:\Temp\ECoupon\read
-
from
-
wc.txt
C:\
>
svn status E:\Temp\ECoupon
--
show
-
updates
M
19
E:\Temp\ECoupon\read
-
from
-
wc.txt
Status against revision:
19
和svn update,svn copy命令相比,svn cat 配合重定向显得“高效”和“霸道”多了---因为它不会给出任何提示或警告就直接覆盖了
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2009-12-09 17:19
Paul Lin
阅读(418)
评论(0)
编辑
收藏
所属分类:
项目管理
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
【转】有没有可能进行同级管理
敏捷文章三则
【原】敏捷开发沉思(真实对话)
【转】新任项目经理必须掌握的五项修炼
【转】管理者的困境:放权或者崩溃
【转】网络阅读,为什么人会浮躁?
【原】SVN In Action系列发布
【原】SVN In Action(23)
【原】SVN In Action(22)
【原】SVN In Action(21)
<
2009年12月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(21)
给我留言
查看公开留言
查看私人留言
随笔分类
J2EE 框架(9)
J2EE基础(4)
J2SE(43)
Java 工具(5)
Oracle Concept(4)
Oracle SQL/PLSQL(9)
Oracle 开发(13)
Oracle 管理(4)
Oracle 调优
Oracle 错误诊断
RoR(19)
UML(3)
Unix / Linux(13)
Web基础(19)
其它技术(7)
感悟(3)
杂项(7)
架构与性能(8)
模式与重构(19)
灌水(8)
电影与音乐(16)
走过的路(1)
软件过程与软件方法(3)
阳光户外(2)
项目管理(36)
随笔档案
2012年2月 (3)
2011年11月 (4)
2011年10月 (1)
2011年9月 (2)
2011年8月 (2)
2011年7月 (5)
2011年6月 (3)
2011年5月 (1)
2011年4月 (1)
2011年3月 (3)
2011年1月 (1)
2010年12月 (1)
2010年11月 (5)
2010年10月 (3)
2010年9月 (1)
2010年7月 (1)
2010年6月 (1)
2010年5月 (4)
2010年4月 (9)
2010年3月 (19)
2010年2月 (8)
2010年1月 (3)
2009年12月 (34)
2009年11月 (1)
2009年10月 (2)
2009年7月 (4)
2009年6月 (5)
2009年5月 (3)
2009年4月 (2)
2009年3月 (1)
2009年2月 (5)
2009年1月 (5)
2008年12月 (13)
2008年11月 (4)
2008年10月 (1)
2008年9月 (6)
2008年8月 (5)
2008年7月 (3)
2008年6月 (31)
2008年5月 (10)
2008年4月 (9)
2008年3月 (7)
2008年2月 (4)
2008年1月 (19)
BlogJava热点博客
BeanSoft
Jack.Wang
如坐春风
诗特林
郑晖
银河使者
阿密果
隔叶黄莺
好友博客
无羽苍鹰
搜索
最新评论
1. re: 【Java基础专题】编码与乱码(01)---编码基础[未登录]
666666666666666666666这几天正在做个类似工程编码出现错误
--李
2. re: 【Java基础专题】IO与文件读写---使用Apache commons IO简化文件读写
不错
--阿斯兰
3. re: 【Java基础专题】编码与乱码(03)----String的toCharArray()方法
多谢分享
--thx
4. re: 【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换
评论内容较长,点击标题查看
--karl
5. re: 【Java基础专题】编码与乱码(01)---编码基础[未登录]
谢谢,帮了我大忙!
--小龙
阅读排行榜
1. Oracle中如何插入特殊字符:& 和 ' (多种解决方案)(48351)
2. getOutputStream() has already been called for this response的解决方法(43322)
3. 【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换(36953)
4. 360安全卫士误删audiosrv.dll文件造成系统无声的解决方案(21210)
5. Java中读取字节流并按指定编码转换成字符串的方法(17300)
评论排行榜
1. 360安全卫士误删audiosrv.dll文件造成系统无声的解决方案(33)
2. 【原】Oracle开发专题之:时间运算(11)
3. 【Java基础专题】编码与乱码(05)---GBK与UTF-8之间的转换(11)
4. getOutputStream() has already been called for this response的解决方法(10)
5. 【原】Oracle开发专题之:分析函数(OVER)(8)