【发布时间】:2014-02-22 05:13:30
【问题描述】:
我尝试了各种各样的东西,只有一个工具能做到这一点:来自 TortoiseSVN 的 SubWCRev.exe。
svn info、svnversion 都是笑话,并不能提供好的结果(因此,请不要发布涉及这些的回复,除非您确定他们可以这样做)。
我从事一个大型项目,并为我们的项目维护构建服务器。构建服务器进行稀疏检出(例如,仅检出我们项目实际使用的一些文件夹)。我的目标很简单:如果有人修改不属于我的稀疏结帐的其他分支或文件夹中的文件,我不希望我的版本号增加。基本上,我的目标是确保相同的输入文件将生成相同的构建结果(例如嵌入的 svn 编号应该相同)。
来自 tortoise 的 SubWCRev 正是完成这项工作并报告所有签出文件的最后提交修订版。
例如svnversion -cn 是一个近距离的尝试,但它不能正常工作。
想象一下我有这样的结构:
trunk
|
+-src
+-include
+-lib
|
+-Win32
+-Linux
+-WinRT
lib 文件夹包含不同操作系统和平台的库。例如,Win32 的大小超过了一个 gig,而在 linux 机器上,我们进行稀疏结帐,例如svn update --set-depth=exclude trunk/lib/Win32 这种方式在我的 linux buildserver 上我什至看不到trunk/lib/Win32。 svnversion -c 的问题在于,即使在被排除的子文件夹中,它也会报告最后提交的 rev。那么,是否有一个工具的行为类似于来自 tortoise svn 的SubWCRev(我不关心它是否能够替换文件中的标签,我只需要它正确提取的最后提交的版本号)。
【问题讨论】: