我是靠谱客的博主 傲娇白云,最近开发中收集的这篇文章主要介绍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

最后

以上就是傲娇白云为你收集整理的svn版本号,命令中-r 2和@2的区别问题解决办法参考文档的全部内容,希望文章能够帮你解决svn版本号,命令中-r 2和@2的区别问题解决办法参考文档所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部