Subversion:为什么“混合版本”当修订号是顺序的?

3
一个例子:假设在执行svn update后,我处于第10次修订。如果现在我添加一个文件并提交,svnversion将报告我处于混合修订状态;即10:11。但由于这些数字是连续的,显然之间没有其他提交。那么subversion不能从中推断出我的版本已经是最新的(=HEAD),因此我不需要再运行另一个svn update以删除这个混合修订状态吗?
我意识到这并不是什么大不了的事情;我只是想知道是否有一些特殊情况,以上推理可能不成立。

我从未因为提交新文件而意外创建了“混合版本”状态。不过,我使用TortoiseSVN,并且通常在项目根目录上执行提交操作。也许这样它就能确定整个项目都是最新的。 - Wormbo
2个回答

0

我有点惊讶Subversion声称你修改的文件是版本11,因为它们可能不是。如果其他人在你之前提交了版本11,那么你的文件将成为版本12或更高。

我猜原因是你本地的Subversion不能确定你添加的文件的版本完全是11,因为它还不确定。


我尝试描述的情况是,在我的“更新”和后来的“提交”之间没有人提交版本,因为版本号是连续的,所以Subversion应该能够推断出这一点。当然,如果有人在我之前提交了什么东西,那么我就会得到第12个(或更高版本),并且“混合修订”状态就是合理的。 - Terje Mikal
但是你的本地Subversion并不知道没有其他人提交任何内容,除非与服务器通信。 - Greg Hewgill
你是说当我进行提交操作时,我的本地Subversion无法与服务器通信? - Terje Mikal
抱歉,我可能误读了你的话。(要么是因为我使用Git太久了。)当然,你是对的,客户端在提交时确实会与服务器通信。但我想它不一定知道其他文件的状态,除非进行svn update操作。 - Greg Hewgill
没错 :) 我的意思是在这种情况下,Subversion实际上确实知道其他文件的状态;它只是没有利用它。 - Terje Mikal

0
如果我正确理解了您的问题,我可以告诉您,您的工作副本几乎总是具有混合版本。这是因为不同的文件在不同的版本中进行了提交并进行了更改。您是否注意到某些文件(例如)显示为版本10,而其他文件则显示为版本25,但您仍然位于HEAD版本?这是因为您的工作区为文件和版本保存了附加元数据。
一般来说,这应该不会成为任何问题,就我所知,它是SVN工作流程的一部分。我记得在SVN文档的某个地方有解释,但我现在似乎找不到它。如果我找到了,我将相应地编辑我的答案。

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