不久前,我已将 SVN 存储库转换为 Mercurial 存储库。它似乎已正确转换,并且我已经对该项目进行了许多更改。一段时间后(在挖掘历史记录时)我意识到转换没有正确完成 - 即旧提交没有按时间排序,所以我从 SVN 存储库中获得了所有修订,但顺序不正确(并且在我在转换后进行了提交)。
我想解决这个问题。我能想到的解决这个问题的唯一方法是将存储库分成两部分
- 包含从旧 SVN 存储库转换而来的修订版本(我们称之为
A1
) - 还有一个仅包含新提交(我们称之为
B1
)
我想再次转换我的 SVN 存储库(这次是正确的),然后重新应用自第一次转换存储库以来我所做的所有更改(B1
部分)。
总而言之,我需要做的(或者,我认为我需要做的)是:
将现有存储库一分为二 - 一个是通过从 SVN 存储库 (
A1
) 转换创建的,另一部分包含正确的提交(由我在存储库转换后创建 -B1
)。将 SVN 存储库转换为 Mercurial(或 Git,如果由于某种原因所有其他步骤在 Mercurial 中无法执行)。因此,转换后我将得到
A2
。将
B1
中的更改应用到第 2 点 -A2
的新转换的存储库
我想我知道如何进行转换(第 2 点)以获得正确排序的提交 (A2
)。我只需要 1.(将现有存储库拆分为 A1
和 B1
)和 3(将提交从 B1
应用于 A2
)。
这在 Mercurial 中可行吗?如果在 Mercurial 中不可行 - 是否可以使用 Git 来实现(据我所知,可以轻松地将 SVN 和 Mercurial 存储库转换为 Git 存储库)。
最佳答案
我猜新的变更集是相当线性的。如果是,您可以使用 MQ 轻松完成此操作。您只需将所有新变更集转换为 MQ 变更集 (qimport
),然后将这些变更集应用到新转换的存储库之上。
关于git - 拆分现有存储库并将最新提交应用到另一个存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12225767/