Subversion异常 - svn info的修订版本高于项目文件夹上次更改的修订版本

13

我遇到了一些无法解释的问题。

我有一个项目的工作副本 - 已经做了 svn update(显示:Updated to revision 1895),我知道这是最新的。当我在项目文件夹上执行 svn info 时,Revision 是 1895,但 Last Changed Rev 是 1888。

使用 TortoiseSVN 检查日志,显示最后修订版本为1888,没有任何关于 1895 的痕迹。对 1895 执行 svn log 是空的,并且在 1895 和 1888 之间执行的 svn diff 也是空的,即没有差异。

我怎么会以某种方式获得一些没有真正改变任何东西的流氓版本?它基本上导致构建服务器(认为它在 1888 上)与我的 MSBuild SvnVersion 任务(认为修订版本是 1895)不同步。

有任何建议都欢迎。

编辑: 如果 Revision 总是显示整个仓库的最新修订版本,这意味着像 SvnVersion MSBuild 任务(使用 svnversion.exe,但表现出类似的行为)这样的工具无法为多个项目单一仓库显示正确的修订版本号,您需要使用“Last Changed Rev”作为版本号。

因此,我现在正在制作自己的 SvnLastChangedRev MSBuild 任务。


实际上,整个代码库并不是一个巨大的问题:如果您检出该修订版本,您仍将获得该项目的正确代码副本,并能够重新构建它。如果您正在使用像CruiseControl这样的东西,只设置为在更改时构建,那么您将无法获得该项目的新版本(假设它是唯一检出的内容)。 - gregmac
你在SvnLastChangedRev MSBuild任务方面有什么进展了吗?因为我也遇到了类似的问题。 - James Woolfenden
1
@James - 是的,我在CodePlex上发布了一堆有用的MSBuild任务,其中包括SvnLastChangedRev。请参见:http://zealanditmsbuild.codeplex.com/ - Wim
1个回答

22

这不是一个问题或者异常情况...修订号适用于整个Subversion存储库,因此,由于仓库的其他部分发生更改,与您正在工作的存储库分支中发生更改的最后修订号相比,修订号可能会更高。

为了澄清,如果您提交到 trunk,将仓库带到修订版10,然后在 branchestags 中进行了一系列更改,将仓库带到修订版1000,则10将是 trunk 文件夹的“最后更改的修订号”,但整个仓库的当前修订号将是1000。


我知道修订号在每个仓库中都是全局的。但是,当我在工作文件夹中执行更新操作时,它只会更新到该路径下的最新版本,而不是全局的最新版本,这一点我之前没有注意到。 - Wim
@WimHollebrandse 只有在你在检出/存储库的根目录运行 svn update 时,你才会在全局范围内看到更新的版本。Subversion 永远不会更新父目录的元数据。 - Sandip Bhattacharya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接