我有一个看起来像这样的 Mercurial 存储库:
SWClients/
SWCommon
SWB
SWNS
...其中 SWCommon 是其他两个项目通用的库。现在,我想将 SWCommon 转换为 SWClients 的子存储库,因此我按照此处和此处的说明进行操作。但是,与第一个链接中的示例相反,我希望我的子存储库与开头的文件夹具有相同的名称。详细地说,这就是我所做的:
创建文件map.txt如下
include SWCommon
rename SWCommon .
创建一个文件 .hgsub 如下
SWCommon = SWCommon
然后运行
$ hg --config extensions.hgext.convert= convert --filemap map.txt . SWCommon-temp
...lots of stuff happens...
然后
$ cd SWCommon-temp
$ hg update
101 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd ..
$ mv SWCommon SWCommon-old
$ mv SWCommon-temp SWCommon
$ hg status
abort: path 'SWCommon/SWCommon.xcodeproj/xcuserdata/malte.xcuserdatad/xcschemes/SWCommon.xcscheme' is inside nested repo 'SWCommon'
...确实是这样,但为什么这是中止的理由?另一个奇怪的事情是,如果我不执行上面的最后一个“mv”并且我执行了一个“hg status”,那么我最终会在 SWCommon 中得到很多“丢失”的文件,正如你所期望的那样。链接中的示例从来没有做到这一点,并且基本上停止在上面的 hg 更新上?你如何让它在实践中发挥作用?