采取这个回购结构:
Server (main repo)
ProjectA (subrepo)
SharedLibrary (subrepo)
Client (main repo)
ProjectB (subrepo)
SharedLibrary (subrepo)
SharedLibrary 指向同一个文件夹(这是 Windows),它不是每个主仓库下的单独副本/克隆。
假设每个主仓库都有两个变更集,0 和 1(tip)。我们从 1(tip) 修订版的两个主要回购开始。
采取以下步骤:
在客户端存储库中,更新到变更集 0。这会将 ProjectB 和 SharedLibrary 更新为较早但匹配的修订版。
ProjectA 现在与 SharedLibrary 不同步。第 1 步将 SharedLibrary 更新为比 ProjectA 所需的版本更旧的版本,该版本仍为 1(tip)。
在服务器存储库中,我们希望将 SharedLibrary 更新为 ProjectA 的正确修订版,因此我们在服务器主存储库中运行 hg update tip。这不会将 SharedLibrary 更新为正确的版本。它将 SharedLibrary 留在与第一步相同的修订版中。
返回客户端 repo 并运行 hg update tip。SharedLibrary 现在处于 ProjectA 和 ProjectB 的正确版本。
似乎服务器存储库中的更新并未检查 SharedLibrary 是否处于正确的修订版。这种行为是预期的,还是有更好的方法来做到这一点?