背景:svn pc客户端项目下的版本号发现其svn log号低于svn update的版本号的情况原因及分析,以及用哪个版本号作为项目发布版本号的最终版本。
经过排查,其原因有二:
- 自己所处项目是处在一个项目集中的一个,根下其它项目(于我同级)地方更新后,我权限不够不知道,用客户端工具也好,终端工具也好都无法看到update的最高版本号(整个根下的最高基线)。
- 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
也就是说,无论是客户端小乌龟,还是命令行其实显示都是对的,我由于两个原因导致:
- 我的目录权限不够大,在.8机器上是赵卫的权限,都有,而我是xiangdong,只能看到windows目录,其显示的是windows下的版本号。
- 验证颜玉刚所说的:根上是最大的,下面的各个目录都是以它作为基数增长,自己打版本号时以自己的目录版本号进行封装即可,得证。
实践如何打版本号:
我想我打出一个客户端的版本是以当前项目的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)