金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  330 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
SVN中邪恶的replace

(转载请注明来源于金庆的专栏)

用TSVN客户端删除一个文件, 然后再新建一个同名文件,
可以看到该文件上的图标被打上了TSVN的小红叉.
然后Add, Commit, 就会出现一条replace记录.
replace的操作会有个提示, 就是Add(as replacement)...命令项与普通的Add不同.

意思应该是该文件被替换了.

邪恶之处是以前的更改日志显示不出来了.
用revision graph可以看到所有历史, 只是在replace处是断裂的.
也就是说替换的效果是重新开启一个文件的更改记录, 隐藏之前的记录.
我想不出什么情况下需要这种功能.

更邪恶的是, revert changes from this revision会失败(TSVN 1.4.3).
错误原因是该文件的上个版本不存在.
好像所有的Add操作都是无法revert, 应该算是个缺陷吧?

为了还原该替换,须删除该文件, 然后revert changes from this revision.


posted on 2009-06-18 14:53 金庆 阅读(7281) 评论(8)  编辑 收藏 引用 所属分类: 5. 软工与管理7. 其它

评论

# re: SVN中邪恶的replace 2009-06-19 08:56 aa
正常
svn本没有replace,win上的svn客户端增加的功能吧
相当于删除 再增加,既然删除了 以前的历史自然没了,新增加的自然要重头开始。

删除后 commit,之后再增加一样。和svn server本身没啥关系  回复  更多评论
  

# re: SVN中邪恶的replace 2010-02-26 13:25 Jim
为了还原该替换,须删除该文件, 然后revert changes from this revision?
该文件是那个文件?是整个checkout文件还是被replace的同名文件?
我也碰到同类问题,烦  回复  更多评论
  

# re: SVN中邪恶的replace 2010-02-26 15:11 金庆
@Jim
自己试试吧。试过才能理解SVN操作。  回复  更多评论
  

# re: SVN中邪恶的replace 2010-08-19 14:35 fj
我也碰到这个问题了,不会还原啊。试了半天没试出来怎么操作。
博主指导一下吧:)  回复  更多评论
  

# re: SVN中邪恶的replace 2010-08-20 10:10 金庆
@fj
SVN log 中有个 replacing 记录,对该记录的版本执行 “revert changes from this revision” 即可。注意要TSVN显示整个目录的log。  回复  更多评论
  

# re: SVN中邪恶的replace 2011-06-27 18:02 frankie
我也遇到这样的问题。解决方法是:退回上一级目录,点击文件所在目录,svn选择revert,选择有delete记录的那项,点击确定就回来了。   回复  更多评论
  

# re: SVN中邪恶的replace 2012-06-14 20:03 marten
我也遇到此问题,请问是在客户端操作码?还是没能还原。。。  回复  更多评论
  

# re: SVN中邪恶的replace 2012-06-15 10:37 金庆
@marten
是在客户端操作。目前版本的TSVN的show log有个选项, "stop on copy/rename", 取消该选项,应该能看到历史记录了。  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理