git - 拆分现有存储库并将最新提交应用到另一个存储库

标签 git mercurial repository dvcs

不久前,我已将 SVN 存储库转换为 Mercurial 存储库。它似乎已正确转换,并且我已经对该项目进行了许多更改。一段时间后(在挖掘历史记录时)我意识到转换没有正确完成 - 即旧提交没有按时间排序,所以我从 SVN 存储库中获得了所有修订,但顺序不正确(并且在我在转换后进行了提交)。

我想解决这个问题。我能想到的解决这个问题的唯一方法是将存储库分成两部分

  • 包含从旧 SVN 存储库转换而来的修订版本(我们称之为 A1)
  • 还有一个仅包含新提交(我们称之为 B1)

我想再次转换我的 SVN 存储库(这次是正确的),然后重新应用自第一次转换存储库以来我所做的所有更改(B1 部分)。

总而言之,我需要做的(或者,我认为我需要做的)是:

  1. 将现有存储库一分为二 - 一个是通过从 SVN 存储库 (A1) 转换创建的,另一部分包含正确的提交(由我在存储库转换后创建 - B1)。

  2. 将 SVN 存储库转换为 Mercurial(或 Git,如果由于某种原因所有其他步骤在 Mercurial 中无法执行)。因此,转换后我将得到 A2

  3. B1 中的更改应用到第 2 点 - A2 的新转换的存储库

我想我知道如何进行转换(第 2 点)以获得正确排序的提交 (A2)。我只需要 1.(将现有存储库拆分为 A1B1)和 3(将提交从 B1 应用于 A2)。

这在 Mercurial 中可行吗?如果在 Mercurial 中不可行 - 是否可以使用 Git 来实现(据我所知,可以轻松地将 SVN 和 Mercurial 存储库转换为 Git 存储库)。

最佳答案

我猜新的变更集是相当线性的。如果是,您可以使用 MQ 轻松完成此操作。您只需将所有新变更集转换为 MQ 变更集 (qimport),然后将这些变更集应用到新转换的存储库之上。

关于git - 拆分现有存储库并将最新提交应用到另一个存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12225767/

相关文章:

asp.net-mvc - ASP.NET MVC : BLL and DAL to Repository design

git - 从 Git bash 调用 Notepad++

linux - 如何在 TFS 服务器的 linux 代理中运行 shell 脚本

mercurial - 是否可以在 TortoiseHg 2.0 中区分一系列变更集?

svn - 跨不同程序开发的库的 Subversion 存储库布局

android-studio - 构建 :gradle:2. 1.0-alpha3 在哪里?

git - 自动 merge 2 个 git 分支的脚本?

Git 忘记了我从中获取/推送到的远程存储库

git - Subversion 中遗漏版本的可能性(研究环境)

Mercurial 获胜安装 : no ini files