【问题标题】:Create a new repo from sub folder in Mercurial Repo using convert使用 convert 从 Mercurial Repo 中的子文件夹创建一个新的 repo
【发布时间】:2011-07-27 11:22:51
【问题描述】:

我正在尝试使用 Convert 扩展从现有的 Mercurial Repo(调用 MainRepo)中提取一个文件夹(称为 Project1),以进行 Mercurial 到 Mercurial 的转换。我在 Windows XP 下遵循 Mercurial 开发人员(以及网络上其他地方)描述的方法:

 C:\MainRepo>echo include Project1 > ~myfilemap
 C:\MainRepo>echo rename Project1 . >> ~myfilemap
 C:\MainRepo>hg convert --filemap ~myfilemap . C:\Project1Repo
 C:\MainRepo>cd \Project1Repo
 C:\Project1Repo>hg update

这将创建带有 Mercurial 文件夹/文件的新存储库 (Project1Repo)。 但它没有:

1) 在文件夹 Project1 中进行与项目所做更改相关的历史记录。 (只存在 MainRepo 的第一个历史条目和一个 Convert 项)。

2) 将所有源代码文件从 MainRepo\Project1 复制到 Project1Repo。

我在 stackoverflow 中看到了其他类似的问题和答案,但这些似乎没有帮助(我遵循了其中讨论的方法): Can I clone part of a Mercurial repository?

所以问题是:我如何从 MainRepo 中提取一个子文件夹,只保留完整的子文件夹历史并完成到一个新的 Repo 并同时传输源文件? (虽然我猜直接复制会做最后)。保留重要的历史记录 - 在这种情况下,我可以在日期或变更集编号之后进行此操作。

任何帮助都非常感谢,因为我对此比较陌生

谢谢

【问题讨论】:

    标签: mercurial repository extract subdirectory


    【解决方案1】:

    您列出的工作流程是正确的。这就是 convert 扩展的工作方式。

    您的问题表明 hg convert 的 repo 输出实际上是空的(“MainRepo 的第一个历史记录条目和转换项”除外)。这表明convert 无法找到您的文件映射中指定的路径。

    您确定include 语句给出的路径是正确的吗?

    include 语句中给出的目录名称必须是存储库根目录的完整路径。例如,您的 include 语句:

    include Project1
    

    要求 Project1 的路径实际上是:

    C:\MainRepo\Project1
    

    如果 Project1 实际上位于 MainRepo 的其他位置,则转换后您将得到一个空的 repo。

    【讨论】:

    • 嗨,蒂姆 - 感谢您对此的回复。是的,这是一个路径问题。在阅读了有关该主题的更多帖子并清楚地指出我需要做什么之后,它工作得很好。虽然在 hg update 之后实际上并没有复制任何源文件(我是手动复制的)。我觉得这是一个强大的命令,但没有很好的文档记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    相关资源
    最近更新 更多