我将一个颠覆存储库迁移到了 mercurial。svn 存储库包含几个项目,它们位于我本地系统的不同位置。我不知道我应该如何以这种方式工作。看起来,善变的人希望我总是想把整棵树都检查到一个地方。
是否可以只签出特定的子树?
如果没有,那么我需要以某种方式将我的单个 subversion 存储库的一部分导入到多个 mercurial 存储库中。我将如何去做(当然不会丢失颠覆的历史信息)。
Mercurial 不支持签出子树。ConvertExtension (包含在Mercurial 中)用于转换存储库,也可用于执行过滤,其中可以重新映射或修剪用户、文件和目录。具体参见--filemap
从源存储库中包含/排除特定分支的选项。
正如 Mark 所提到的,转换扩展可以完成其 wiki 页面上解释的工作,因此要将存储库“foo”的子目录“subfoo”转换为它自己的存储库,请执行以下操作:
echo include subfoo > filemap.txt
echo rename subfoo . >> filemap.txt
hg convert --filemap filemap.txt path/to/foo newsubfoo-repo
另一个可以帮助您进行各种存储库转换的工具是reposurgeon。
还有一个全新的narrowng扩展来做这件事,但目前还不清楚它是否准备好生产。