我有一个关于最高党的问题。我们的项目是这样设置的:
+ projectA
+ some files
+ dependencyA
+ some filesdependencyA是一个子存储库。它是这样创建的:
如果我对suprepository做了更改,那么提交并将它们从主项目中推出来。从递归开始,这两种方法都将被推到服务器上。现在,我的同事想要从服务器中提取更改。但是,由于主要项目没有任何变化,它就行不通了。但是如果我在主项目中改变了一些东西并将其推送到服务器上。在hg pull上,他将得到最新的变更集,如果他做了hg update,那么它也将更新子存储库。这是预期的行为。
现在,我的问题是,是否有一种方法来拉动更改,但是只用于子存储库的,而不对其进行新的克隆,或者什么是最好的方法。
发布于 2011-11-08 16:34:24
上面的建议像我想的那样起作用。真正的问题是我创建子存储库的方法。
而不是:
它应该是一个简单的:
正如我们所知道的,.hgsusbtate将在提交后在特定的修订上锁定子回购。事情就是这样,但是(!)在子存储库中执行hg pull以一个错误结束
paths cannot contain dot file components因此,这意味着我的子回购被锁定在修订上,它是在提交和之后更新的,由于上面显示的错误,无法从它的存储库中提取更改。这个接受答案很好地解释了为什么会发生这种情况。
解决方案:
克隆是要走的路
发布于 2011-11-07 13:49:52
Mercurial wiki中的Subrepository,第2.5页“拉”
默认情况下,“拉”命令不是递归命令。这是因为Mercurial在请求对特定变更集的更新之前,不会知道需要哪个子until。更新将根据需要提取所请求的子存储库和更改集。要在一个步骤中获得拉和更新,使用‘拉-更新’。 请注意,这与没有子存储库的“拉”工作方式完全匹配,考虑到子存储库位于工作目录中:
如果您有任何子存储库,那么总是使用--更新可能是个好主意。这通常将确保更新不会错过任何更改集,因此更新不会导致任何拉扯。如果pull with update由于跨分支而失败,则必须使用“hg update”来获取所有子存储库更新。
https://stackoverflow.com/questions/8036395
复制相似问题