我有一个相对较大的Mercurial存储库,决定将其拆分为多个较小的存储库。是否有一种方法可以拆分存储库并使每个部分保留其修订历史记录?
我有一个相对较大的Mercurial存储库,决定将其拆分为多个较小的存储库。是否有一种方法可以拆分存储库并使每个部分保留其修订历史记录?
最佳方法是使用 convert 扩展。你将会使用 Mercurial 和源和目标类型,然后使用像这样的 --filemap
条目:
exclude path/you/do/not/want
rename path/you/do/want .
只有在您想把保留的部分移到目录层次结构“更高”的位置时,才需要重命名。
new-repo.filemap
的文件映射,例如:include vendor/FooBackend
rename vendor/FooBackend .
rewrite-old-repo.filemap
:exclude vendor/FooBackend
hg convert /path/to/current/repo /path/to/new/repo --filemap new-repo.filemap
新的代码库已经完成。该目录为空,但是执行hg update
命令将会使其内容更新到最新状态。
创建修改后的代码库:
hg convert /path/to/current/repo /path/to/rewritten/repo --filemap rewrite-old-repo.filemap
只需克隆它并从每个副本中删除不需要的内容即可。
exclude ...
这一行替换为include path/you/do/want
,这样只有所指定的路径才会被包含在转换后的仓库中。 - Kevinconvert
扩展程序,并一开始就想知道为什么目标路径似乎是空的。后来我意识到默认情况下在新的存储库中没有工作副本。如果你需要它,你应该在目标目录中运行hg up
。也许这会帮助别人。 - vadipp