【问题标题】:Are there advantages of using hg convert to merge 2 repos instead of hg pull -f?使用 hg convert 合并 2 个 repos 而不是 hg pull -f 是否有优势?
【发布时间】:2011-08-24 17:42:37
【问题描述】:

documentation 中,他们使用包含以下内容的映射文件:

$ echo include subfoo > /tmp/myfilemap
$ echo rename subfoo . >> /tmp/myfilemap
$ hg convert --filemap /tmp/myfilemap /path/to/repo/foo /tmp/mysubfoo-repo

合并 2 个 repos 有什么好处。是否有正当理由不这样做:

hg pull -f other_repo
hg merge

他们通过将 subfoo 重命名为 . ?

【问题讨论】:

  • 这 2 个 repos 是相关的(1 是另一个的克隆或两者都从同一个 repo 克隆)还是完全不相关?
  • repos 完全不相关。

标签: mercurial merge


【解决方案1】:

他们的示例(您在问题中发布的 subfoo 文件映射)用于将现有 repo 的子目录转换为它自己的存储库,其中包含该子目录下文件的所有历史记录。将subfoo重命名为.意味着源repo中subfoo目录下的所有文件和目录现在都在新repo的根目录下。

您可以使用带有rename 的文件映射来做相反的事情,并将repo A 的根目录的内容现在成为子目录的内容,然后使用pull 将它与repo B 结合起来:

> echo rename . subfoo > /tmp/myfilemap

> hg convert --filemap /tmp/myfilemap /path/to/repoA /path/to/repoA_converted

> hg -R /path/to/repoB pull -f /path/to/repoA_converted

> hg merge

但是,subrepos 可能是一个更好的选择。

【讨论】:

  • 但是,convert 是否允许您指定在哪个文件夹中拉取?如果我进行 pull+merge,如果我想将文件放在不同的目录中,我必须自己移动它们。
  • 啊,这一定是重命名的目的。对吗?
  • 对。重命名允许您更改 repo en-masse 中的文件路径,而无需添加变更集。在我的示例中,文件 /path/to/repoA/myfile.txt 最终将成为 /path/to/repoA_converted/subfoo/myfile.txt
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多