50

我在一个小型组织中工作,只有两个开发人员,我们使用 Mercurial 版本控制tortoisehg-2.2.2-hg-2.0.2-x86。我是新手。

考虑programmerA, programmerB

programerA机器中,我创建了一个存储库和一个名为的客户端"EFSL"programmerB只是一个名称"Uthaya Kumar"指向programmerA机器存储库的客户端。

当我在programmerA机器中拉取更改集时,它会创建一个新分支,并且它还"Not a head revision!"在工作目录和存储库中显示错误。

programmerB里面很好。

请参阅下面的屏幕截图。

提前致谢。

屏幕截图 1 屏幕截图 2 屏幕截图 3

4

2 回答 2

58

检查第一个屏幕截图,并看到顶行在列8+中显示。Rev这意味着您的工作副本基于修订版 8。您可以沿着该行向下,还可以看到它在修订版 8 处加入,这表明相同的事情。

有两种方法可以解决此问题,具体取决于您是否进行了任何更改。

  • 如果您没有进行任何更改,那么您将右键单击修订版 13 并选择更新...。更新到最新的更改。

  • 如果您进行了更改,那么您需要提交这些更改,然后右键单击修订版 13 并选择Merge with local...这会弹出一个向导来处理合并。

在您的上一个屏幕截图中,您似乎根本没有工作副本,因此您需要使用上面的更新程序更新到修订版 13。

您可以update通过更改 TortoiseHg 中的设置来自动执行此操作:

  1. 选择文件>设置_Workbench
  2. 通过选择顶部的相应选项卡来选择要更改设置的位置。选择对用户来说是全局的,或者只针对这个存储库
  3. 在左侧列表中选择Workbench
  4. 在右侧部分中,查找标有“拉取操作后”的下拉列表
  5. 从列表中选择更新

每次您进行拉动时,这都会更新到最新版本,这将避免您的第一个屏幕截图中出现问题。当您和其他开发人员进行更改时,您仍然需要进行手动合并。

该列表中的其他选项rebasefetch依赖于启用的适当扩展并且仅供高级使用。

于 2013-01-18T08:45:35.227 回答
32

这是 Mercurial 的完全正常和正确的行为。您的工作目录当前已更新为变更集 8“Merge 2”。拉取操作不会更改工作目录的内容。它只是获取丢失的变更集并将它们添加到您的历史图表中。拉出后,您仍在处理变更集 8。现在“不是主要修订版”出现在警告您,如果您现在进行任何更改并提交它们,您将创建一个从修订版 8 派生的新变更集,这将有效地创建一个新的分支。这是你可能想做也可能不想做的事情。通常在拉取新的变更集后,您希望通过右键单击最新的变更集并选择更新...将工作目录更新为最新的变更集。

PS 你没有使用最新版本的 TortoiseHG。请更新到最新版本。它包含许多改进并解决了许多错误。

于 2013-01-18T08:52:05.177 回答