【问题标题】:parent/child project relationship in MercurialMercurial中的父/子项目关系
【发布时间】:2011-04-01 08:09:00
【问题描述】:

我是 mercurial(以及一般的 SCM)的新手,我一直在处理我的两个项目之间的父子关系。一个项目是父项目并且是另一个项目的子集(或者更确切地说,另一个是第一个项目的超集)。我想在一个本地存储库中处理这两个项目,就好像它们是一个,但我想将它们发布到两个不同的公共存储库。

我查看了子存储库,但这不是我想要的,因为我需要我的存储库在同一个根目录上工作。我的猜测是使用分支但不会将更改合并到超级项目中需要添加新文件?

最简单/正确的方法是什么?

【问题讨论】:

  • 发布超集时是否要包含子集?
  • 是的,但不是相反。

标签: version-control mercurial


【解决方案1】:

我认为,如果您四处寻找“供应商分支”的答案,您会发现它们也涵盖了您的情况。

基本要点是确保您想要保留的任何更改是子集存储库 具有来自该子集的更改集作为祖先。这是一张粗略的图片:

subset:

[A]---[B]----[C]----[D]

superset1:

[A]---[B]----[C]----[D]---[E]---[F]


superset2:

[A]---[B]----[C]----[D]---[G]---[H]

使用这样的存储库,您在 subset 中所做的任何更改都可以轻松地hg pulled 到 superset1 和/或 superset2 中。例如,如果您在子集中添加新功能,您的存储库现在可能如下所示:

subset:

[A]---[B]----[C]----[D]---[I]---[J]

superset1:

[A]---[B]----[C]----[D]---[E]---[F]


superset2:

[A]---[B]----[C]----[D]---[G]---[H]

在将它们拉入 superset1 和 superset2 之后,您将拥有:

subset:

[A]---[B]----[C]----[D]---[I]---[J]

superset1:

[A]---[B]----[C]----[D]---[E]---[F]
                       \
                        --[I]---[J]

superset2:

[A]---[B]----[C]----[D]---[G]---[H]
                       \
                        --[I]---[J]

然后你只需 hg merge 在 superset1 和 superset2 中得到:

subset:

[A]---[B]----[C]----[D]---[I]---[J]

superset1:

[A]---[B]----[C]----[D]---[E]---[F]---[K]
                       \             /
                        --[I]---[J]--

superset2:

[A]---[B]----[C]----[D]---[G]---[H]---[L]
                       \             /
                        --[I]---[J]--

将更改从超集 1 移动到超集 2 或从任一超集移动到子集不太干净,因此在子集中进行更改并将其拉入/合并到超集中,一切顺利。

【讨论】:

  • 为了记录,这根本没有使用“命名分支”。只是“默认”分支上的正常变更集父系,这是一个很好的方法。
  • 这几乎证实了我认为有必要的内容,但我也认为将更改提升到 super 并不是一个简单/干净的过程,而这正是我希望得到的。但这似乎是唯一的方法,我将保留两个存储库并从 Super->Sub 移动更改。我接受答案,tnx。
  • 你可以对 sub 做 super ,你最终会使用 export+import (又名移植),这意味着相同的变化将存在于 2 个不同的哈希值中,你会在 super 中得到两次你从 sub 拉回 super。它会工作得很好,只是看起来有点奇怪。最好在方便的时候去 sub 到 super。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多