svn版本号,命令中-r 2和@2的区别

问题

假设有一个svn repository是,svn://192.168.2.6/project。
在版本1~20的svn里,存在
svn://192.168.2.6/project/branches/branch_test
在版本21时,由于branches到trunk的merge操作已完成,该分支没有存在的必要了(后续svn版本,仍想使用这个branch_test);于是删除了该分支。【这里举的是分支例子。其实,普通文件或目录,也有这种情况,svn del后,又新建了一个同名称的文件或目录】

在版本30时,新建了
svn://192.168.2.6/project/branches/branch_test

此种场景下,
svn log svn://192.168.2.6/project/branches/branch_test
只能看到30版本以后的svn日志信息。看不到1~20版本的svn日志信息。

这就 疑惑了。经百度,好不容易找到了答案。
svn版本号,存在两种不同的定义。
Peg and Operative Revisions
对一个的命令格式:
svn command -r OPERATIVE-REV item@PEG-REV

个人理解:
1. 操作版本 ,是询问svn,“当前文件,在某版本下的历史日志”;
2. PEG-REV,是询问svn,“某版本下的文件,其历史日志”;
3. 归咎原因,感觉svn没必要这样区分。

依据,来自http://svnbook.red-bean.com/en/1.6/svn.advanced.pegrevs.html

Subversion needs to know whether we are asking about how the current
file looked back in revision 1, or whether we are asking for the
contents of whatever file lived at concept/IDEA in revision 1.
Certainly those questions have different answers, and because of peg
revisions, you can ask those questions.

解决办法

svn log -r1:20 svn://192.168.2.6/project/branches/branch_test@20
说实话,我还没试过。
不过,直接在本地目录里,svn log branch_test@20是不可以的;svn会报错没有这个目录,原因应该是work copy里已经不存在branch_test了。
ps:svn的分支,遇到的疑惑问题还是挺多的;一直没真正的用在项目里。感觉积累的差不多了。

参考文档

Peg and Operative Revisions
http://svnbook.red-bean.com/en/1.6/svn.advanced.pegrevs.html
svn copy -r [revision number] [url] [path] - Stack Overflow
https://stackoverflow.com/questions/6591938/svn-copy-r-revision-number-url-path

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值