将多个子存储库合并为一个并在 Mercurial 中保留历史记录

发布于 2024-09-26 23:51:06 字数 272 浏览 3 评论 0原文

目前我有一个由多个存储库组成的项目,例如:

+---Project (main repo)
    +---Core (subrepo)
    +---Web (subrepo)
    \---Tests (subrepo)

不幸的是,子存储库之间的代码耦合度很高,因此它不能很好地与分支一起工作。

有没有办法将子存储库合并到一个主存储库中以保留历史记录?

Currently I have project consisting of multiple repositories, e.g.:

+---Project (main repo)
    +---Core (subrepo)
    +---Web (subrepo)
    \---Tests (subrepo)

Unfortunately the code between subrepos is quite coupled so it doesn't work nicely with branches.

Is there any way to consolidate the subrepos into one main repository preserving the history?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

悟红尘 2024-10-03 23:51:06

我首先将 hg Convert 与排除 .hgsub 和子存储库的文件映射一起使用。接下来,在子存储库上使用 hg Convert 并重命名文件映射中的条目,例如: rename 。 Core

拥有这些新存储库后,您可以使用 hg pull -f 将变更集从转换后的子存储库一次导入到转换后的主存储库中。您还需要将它们合并到新的主存储库中(它们形成单独的头,并将空修订版作为最近的共同祖先)。

I would start with using hg convert with a filemap that excludes the .hgsub and the subrepos. Next, use hg convert on the subrepos with rename entries in the filemap like: rename . Core

Once you have those new repos, you can use hg pull -f to import the changesets from the converted subrepos into the converted main repo one at a time. You'll also need to merge them into your new main repo (they form separate heads with the null revision as the most recent common ancestor).

毁虫ゝ 2024-10-03 23:51:06

第一个猜测:
也许通过使用 转换扩展 和文件映射?

另一种尝试:

  • 将所有存储库拉入同一个存储库,“默认”分支将有不同的头
  • 然后对于每个头
    • 更新此标题
    • 将文件移动(hg move)到正确的目录
  • 将所有“默认”头合并在一起

编辑:添加更多详细信息,然后再尝试

First guess :
Perhaps by using the convert extension with a filemap ?

Another try :

  • Pull all your repos into the same repo, you will have different heads for the "default" branch
  • Then for each head
    • Update to this head
    • Move the files (hg move) into the right directory
  • Merge all the "default" heads together

Edit : added more details, and another try

探春 2024-10-03 23:51:06

假设您不必转换存储库,为什么不简单地将每个存储库推送到中央存储库中呢?

  1. 确保每个存储库根目录都有一个以存储库名称命名的主目录。
  2. 将每个存储库推送到主存储库中。

Assuming you don't have to convert repos, why not simply push each repo in the central one?

  1. Make sure each repo root directory have a main directory named after the repo name.
  2. push each repo in the main repo.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文