什么时候svn BASE变得与HEAD相等

时间:2009-04-13 01:17:06

标签: svn

我对svn中的BASE版本有疑问。我知道这是上次更新运行时的一个项目的原始版本,svn diff和status基本上是针对这个版本运行的。 BASE什么时候更新?更新运行时是否更新到HEAD?即使在更新期间发生冲突,这也总是正确吗? BASE有什么冲突?它是否仍然具有我上次更新的版本(在导致冲突的最新更新之前)或者即使存在冲突也会更新到HEAD? 此外,当运行svn commit时,我假设BASE更新了我的本地更改,此时BASE,HEAD和我的本地副本都是相同的?如果提交成功。

4 个答案:

答案 0 :(得分:38)

HEAD是存储库中的最新版本。 BASE是您从存储库获取的最后一个修订版。成功提交或更新后,它们是相同的。

进行更改时,您的文件与BASE副本不同。当您还原时,它们将返回匹配BASE修订版。当您遇到冲突时,您不会更新存储库。相反,您的文件仍被视为“正在编辑”,就像您正在进行更改一样。在解决冲突之后,您实际上已经决定了最终文件的外观,然后就像通常那样提交它们。所以,冲突就像一个特殊的编辑案例。

答案 1 :(得分:7)

BASE是存储库中存在的工作副本的修订版。换句话说,您的修订没有您所做的更改。因此,如果您{HEID的文件或文件夹svn update,那么BASE和HEAD是相等的。

如果存在冲突,BASE将成为与您的工作副本冲突的提交之前的修订版。

在项目上运行svn info以查看它的BASE版本。

Revision Specifiers

答案 2 :(得分:3)

当你查看日志时很重要,因为没有url的svn log显示你的BASE日志,但是你的HEAD日志是url,这就是我总是使用“svn log -rHEAD:1”查看所有更改的原因。

答案 3 :(得分:0)

理论:成功递归更新或切换后,所有文件的基本版本变为head。提交或部分更新后,某些文件可能位于HEAD修订版中,但只有在未跳过文件的更新之后,您才能确保所有文件都处于同一版本。 (跳过的原因是无法解决的障碍或冲突)。

但是,为什么你需要知道这一点。 Subversion应该在内部知道这一点,但在大多数情况下,这些知识对用户来说并不重要。 (Subversion会在文件过期时自动发出警告)。

据我所知,当您从工作副本创建分支时,您真正需要确保自己处于稳定版本的唯一时间。