最新消息:

SVN有时的Log版本号和SVN update的版本号不一致的原因分析

svn admin 9308浏览 0评论

背景:svn pc客户端项目下的版本号发现其svn log号低于svn update的版本号的情况原因及分析,以及用哪个版本号作为项目发布版本号的最终版本。

经过排查,其原因有二:

  1. 自己所处项目是处在一个项目集中的一个,根下其它项目(于我同级)地方更新后,我权限不够不知道,用客户端工具也好,终端工具也好都无法看到update的最高版本号(整个根下的最高基线)。
  2. update的版本号是全局版本号,而自己项目的svn log则是自己项目的版本号,以它为准才相对靠谱些。

冒个泡:

问个SVN的问题,那个SVN里的Log的版本号为嘛会出现比svn up的版本号低呢?
我想确认下是不是服务端有hook钩子之类的作了手脚,提高了版本号?

  • update的那个版本是版本库根的版本号,而不是你这个项目的版本号,所以有可能就不一样
  • 比如你的version root路径是:http://svn.test.com/root,你下面有很多项目,比如http://svn.test.com/root/app1和http://svn.test.com/root/app2。log里看到的是app1或者app2的版本号,update的是root的版本号
  • svn info的时候就可以看到版本库根是什么了
  • 我用的小乌龟,没终端呀,
  • 也就是说我update只是把根里的版本号update下来了,而log则是这个目录下的了。

——————————————————————————————————————————————————————————————————

  • 有没有使用svn server上做钩子啥的给版本号加了的情形?
  • 钩子的话为何要加版本号呢,一般可能是svn更新出发某个更新,没必要修改svn的版本吧
  • 嗯,我主是怕服务端它模拟提交了一次如版本号啥的没加入log中,所以才有此一问。
  • 我发现这个根访问不了,但这个根下面的版本号还是不够。
  • 所以,我怀疑这个根作了更新,但我无权限的推断,呵呵。
  • 可能就是你没有根权限,也不一定是要往根上面提交,也可能是根下面有其他项目svn,别的项目提交的
  • 嗯,我从这个靠近根一层级(turnk这地级)的log里(这一级我有权限)发现也不是最大的svn版本号呀。所以,我估计根一层还是有改动。

—————————————————实践证明是没有的如下:———————————————————————————————————

首先,用那个svn的小乌龟看是不准的-repo-browner,到根下它里面显示才532,而直接用svn命令行checkOut出来也就对了537,如下:

[root@aikaiyuan pcclient]# svn co http://svn.aikaiyuan.com/clients
......
A    clients/windows/tags
Checked out revision 537.

查看下SVN的日志:
svn log 命令怎么样能够只显示前面几行这个直接用svn log | head -n XX表示行数就ok了。

[root@aikaiyuan pcclient]# cd clients/
[root@aikaiyuan clients]# svn log  //列出一堆
[root@aikaiyuan clients]# svn log|head -n 20
[root@aikaiyuan clients]# svn log|head -n 20
r537 | wangzh | 2014-08-11 14:42:52 +0800 (Mon, 11 Aug 2014) | 1 line
搜索和我的 标题显示两行
r536 | wangzh | 2014-08-11 14:42:01 +0800 (Mon, 11 Aug 2014) | 1 line
登录时增加提示
r535 | wangzh | 2014-08-11 12:35:52 +0800 (Mon, 11 Aug 2014) | 1 line
广场标题显示两行文字
r534 | wangzh | 2014-08-11 12:35:32 +0800 (Mon, 11 Aug 2014) | 1 line
获取字符串宽度时,增加显示行数限制
r533 | wangzh | 2014-08-09 22:44:56 +0800 (Sat, 09 Aug 2014) | 1 line


调试

最后,发现在下面这个目录下有这个日志,是王振华修改的:

/pcclient/clients/ios  533---》537
/pcclient/clients/tv   521---》525

也就是说,无论是客户端小乌龟,还是命令行其实显示都是对的,我由于两个原因导致:

  1. 我的目录权限不够大,在.8机器上是赵卫的权限,都有,而我是xiangdong,只能看到windows目录,其显示的是windows下的版本号。
  2. 验证颜玉刚所说的:根上是最大的,下面的各个目录都是以它作为基数增长,自己打版本号时以自己的目录版本号进行封装即可,得证。

实践如何打版本号:

我想我打出一个客户端的版本是以当前项目的svn log为准,还是以整个根下的update版本号为准?一般来说是svn update是全局版本号大于当前项目的svn log版本号。
如此这斑,我还是用我自己项目的svn log版本号吧。
————————————————#######————————————————

  • 我刚才说的svn版本号的问题,你们是怎么玩的?
  • 以log的来算
  • 嗯,那个update如果根下多个项目总会出现update的版本号大于当前自己项目的log版本号。

——————————————————————————————————————————————————————————————————

SVN info在windows下看根:(Repository Root: http://svn.aikaiyuan.com/clients)
D:>svn info
Path: .
Working Copy Root Path: D:
URL: http://svn.aikaiyuan.com/clients/windows/branches/xiyouPcClient_Branches1
Repository Root: http://svn.aikaiyuan.com/clients
Repository UUID: 0e7b03ef-3438-4a6b-a5b1-5057ffea11a7
Revision: 535
Node Kind: directory
Schedule: normal
Last Changed Author: chaijinjian
Last Changed Rev: 529
Last Changed Date: 2014-08-08 11:06:13 +0800 (周五, 08 八月 2014)

转载请注明:爱开源 » SVN有时的Log版本号和SVN update的版本号不一致的原因分析

您必须 登录 才能发表评论!