pengpenglin
人,必须选择一种生活方式并有勇气坚持下去
语源科技BlogJava
首页
新随笔
新文章
联系
聚合
管理
posts - 262, comments - 221, trackbacks - 0
【原】SVN In Action(12)
【14】svn update与svn revert
对于svn revert命令,前面我们分别通过“回滚文件内容”,“回滚属性”,“回滚操作”来给出直观的认识。现在我们再通过一个稍微复杂的例子来进一步了解svn revet命令。
假设现在我们的目录环境如下:
C:\
>
svn list E:\Temp\ECoupon
WebRoot
/
doc
/
read
-
from
-
repo.txt
read
-
from
-
wc.txt
src
/
前面我们提到对于尚未提交的本地修改,可以使用svn revet回滚。那么如果我们使用svn update来从版本库同步到本地文件,不也是可以达到同样的目的吗?事实是这样吗?
C:
\>
svn status E:
\
Temp
\
ECoupon
M E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
C:
\>
svn update E:
\
Temp
\
ECoupon
At revision
18
.
C:
\>
svn status E:
\
Temp
\
ECoupon
M E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
C:
\>
svn cat E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
C:
\>
type E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
Wrong content, don
'
t commit!
C:
\>
svn diff
-
r HEAD E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
Index: E:
/
Temp
/
ECoupon
/
read
-
from
-
wc.txt
========================================================
---
E:
/
Temp
/
ECoupon
/
read
-
from
-
wc.txt (revision
18
)
+++
E:
/
Temp
/
ECoupon
/
read
-
from
-
wc.txt (working copy)
@@
-
0
,
0
+
1
@@
+
Wrong content, don
'
t commit!
\
No newline at
end
of file
可以发现,即便我们执行了svn update操作,本地已经修改的文件仍然不会被回滚到和版本库一样的版本。这是因为:
因为SVN为了保护用户不小心update操作而覆盖自己本地的修改,不会对已经被修改但尚未提交的资源进行update操作。像这种情况下只能用svn revert而不能用svn update。
【15】svn del与svn revert
好了,那么假如现在我们在修改后临提交之前发觉这个read-from-wc.txt是不需要的,我们要删除而不是回滚它了。该怎么做?看看下面的实验:
C:
\>
svn del E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
svn: Use
--
force
to
override this restriction
svn:
'
E:\Temp\ECoupon\read-from-wc.txt' has local modifications
C:
\>
svn del E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
--
force
D E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
C:
\>
svn status E:
\
Temp
\
ECoupon
D E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
上面的实验我们一共做了2个变更:
A.修改本地文件read-from-wc.txt
B.标记删除本地文件read-from-wc.txt
和svn update不会对已修改而尚未提交的资源进行update一样,svn del同样不会删除已修改但尚未提交的资源---除非你强制加上--force参数。
如果此时我们又想反悔了,那么再次执行svn revert命令会有什么后果:
C:
\>
svn revert E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
Reverted
'
E:\Temp\ECoupon\read-from-wc.txt'
C:
\>
svn status E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
C:
\>
svn diff
-
r HEAD E:
\
Temp
\
ECoupon
\
read
-
from
-
wc.txt
C:
\>
好了,现在文件read-from-wc.txt又回来,但是之前我们对它进行的本地修改也跟着不见了!这是因为svn revert回滚的是所有本地未提交的操作,内容,属性。所以在回滚删除操作之时,也会连修改操作也一起回滚。这个教训告诉我们:
不要把所有变更都放在最后一次性提交,提交要及时、多次。否则一旦回滚所有其他修改都会跟着撤销。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2009-12-09 11:19
Paul Lin
阅读(642)
评论(0)
编辑
收藏
所属分类:
项目管理
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
博客园最新博文
博问
管理
相关文章:
【转】有没有可能进行同级管理
敏捷文章三则
【原】敏捷开发沉思(真实对话)
【转】新任项目经理必须掌握的五项修炼
【转】管理者的困境:放权或者崩溃
【转】网络阅读,为什么人会浮躁?
【原】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)