【问题标题】:How can I import a mercurial repo (including history) into another mercurial repo as a subdirectory, without using subrepos?如何在不使用 subrepos 的情况下将 mercurial repo(包括历史记录)作为子目录导入另一个 mercurial repo?
【发布时间】:2011-03-13 23:37:45
【问题描述】:

这听起来有点复杂,所以让我解释一下:

Project_A 在其自己的 Mercurial 存储库中已经存在了一段时间。 Project_A 现在被合并到一个新的超级项目 Super-Project_B 中。 Super-Project_B 也有一个 mercurial 存储库。如果 Project_A 不是子存储库,而只是一个普通的孩子,我们更愿意,但我们也不想丢失历史记录。有没有办法做到这一点?

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    是的。使用 convert 扩展将 projectA 下移一级目录:

    hg convert --filemap filemap.txt projectA projectA-redone
    

    你的filemap.txt 里面有这行:

    rename . projectA
    

    (那个点可能是斜线,但我不这么认为)。

    这将为您提供一个新的 repo,projectA-redone,它具有 A 的所有历史记录,尽管所有变更集将具有不同的哈希值,因为它们的内容(路径)已更改为在所有变更集前面获得“projectA”。

    然后你进入 Super-Project_B 并执行hg pull -f /path/to/projectA-redone。你需要-f,否则你会被告知repos是不相关的,因为它们没有共同的变更集。

    最后你将在 Super_project_b 中创建一个hg merge,它应该没有冲突(除非你已经有一个 projectA 目录,在这种情况下你应该选择一个不同的名称或 hg removed 先)。

    这样做之后,B 将在 projectA 子目录中拥有所有 A,并且所有历史记录都将保持不变。

    【讨论】:

    • 是一个点还是一个斜线有效。我认为这是一个斜线,但帮助说如果你要走另一条路(重命名 projectA . 将其移动到顶层),请使用一个点,所以我猜到了。
    • @Ry4an 这是点。仍然可以完美运行。我首先必须在我的 mercurial.ini 中启用转换扩展
    • 找到了!将--branchmap branchmap.txt 添加到转换中,branchmap.txt 包含default xyz
    • 对于 TortoiseHG 用户,convert 扩展在文件->TortoiseHG Workbench 中的设置中启用
    • windows用户必须在当前用户目录下的mercurial.ini中添加convert扩展-c:\Users\currentUserName\mercurial.ini
    猜你喜欢
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2021-12-04
    相关资源
    最近更新 更多