首页
学习
活动
专区
圈层
工具
发布

汞优势
EN

Stack Overflow用户
提问于 2011-11-07 12:19:05
回答 2查看 2.2K关注 0票数 1

我有一个关于最高党的问题。我们的项目是这样设置的:

代码语言:javascript
复制
+ projectA
    + some files
    + dependencyA
        + some files

dependencyA是一个子存储库。它是这样创建的:

  1. cd projectA
  2. mkdir dependencyA
  3. cd dependencyA
  4. hg init
  5. hg拉动ssh://hg@翻滚/依赖
  6. cd ..。
  7. 回波dependencyA =ssh://hg@somerandomiphere/依赖性A> .hgsub
  8. hg添加
  9. hg承诺
  10. hg推

如果我对suprepository做了更改,那么提交并将它们从主项目中推出来。从递归开始,这两种方法都将被推到服务器上。现在,我的同事想要从服务器中提取更改。但是,由于主要项目没有任何变化,它就行不通了。但是如果我在主项目中改变了一些东西并将其推送到服务器上。在hg pull上,他将得到最新的变更集,如果他做了hg update,那么它也将更新子存储库。这是预期的行为。

现在,我的问题是,是否有一种方法来拉动更改,但是只用于子存储库的,而不对其进行新的克隆,或者什么是最好的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-08 16:34:24

上面的建议像我想的那样起作用。真正的问题是我创建子存储库的方法。

而不是:

  1. cd projectA
  2. mkdir
  3. dependencyA
  4. cd dependencyA
  5. hg init
  6. hg拉动ssh://hg@翻滚/依赖

它应该是一个简单的:

  1. hg克隆ssh://hg@somerandomiphere/依赖性dependencyA

正如我们所知道的,.hgsusbtate将在提交后在特定的修订上锁定子回购。事情就是这样,但是(!)在子存储库中执行hg pull以一个错误结束

代码语言:javascript
复制
paths cannot contain dot file components

因此,这意味着我的子回购被锁定在修订上,它是在提交和之后更新的,由于上面显示的错误,无法从它的存储库中提取更改。这个接受答案很好地解释了为什么会发生这种情况。

解决方案:

克隆是要走的路

票数 0
EN

Stack Overflow用户

发布于 2011-11-07 13:49:52

Mercurial wiki中的Subrepository,第2.5页“拉”

默认情况下,“拉”命令不是递归命令。这是因为Mercurial在请求对特定变更集的更新之前,不会知道需要哪个子until。更新将根据需要提取所请求的子存储库和更改集。要在一个步骤中获得拉和更新,使用‘拉-更新’。 请注意,这与没有子存储库的“拉”工作方式完全匹配,考虑到子存储库位于工作目录中:

  • ‘'hg拉’给您上游变更集,但不影响您的工作目录。
  • “contents”更新工作目录的内容(包括顶部的repo和所有的子目录)

如果您有任何子存储库,那么总是使用--更新可能是个好主意。这通常将确保更新不会错过任何更改集,因此更新不会导致任何拉扯。如果pull with update由于跨分支而失败,则必须使用“hg update”来获取所有子存储库更新。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8036395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档