使用filemap将Mercurial转换为单独的子文件夹会创建空的存储库

时间:2010-06-28 18:43:59

标签: mercurial repository filemap

我有一个从svn存储库转换的大型Hg存储库(2 + GB)。它有很多网站,我们希望将它们分成单独的Hg回购。存储库位于Windows 2008 Server上,我们正在使用TortoiseHg附带的hg。

我们一直在尝试将convert方法与filemap一起使用,以便从转换后的存储库中创建一个新的repo。

问题是命令在源仓库中的所有变更集中运行,但新创建的仓库为空。

这就是命令行的样子:

hg convert -s hg --filemap "hgsplitstaticsites-site1.txt" staticsites-hg "C:\projects\marcelsprojects\hgversions\site1-hg"

filemap如下所示:

include staticsites-hg/site1
rename staticsites-hg/site1 .

非常感谢任何帮助。

我们还尝试在svn存储库中的子文件夹上运行hg convert,但实际上会抛出异常并退出。


我们放弃了这个,只是将子文件夹分成单独的Hg repos,并丢失了所有的版本历史记录。

6 个答案:

答案 0 :(得分:3)

我也遇到了空存储库的问题。我的问题是我在我的文件映射中使用了Windows风格的路径名(使用反斜杠而不是普通的斜杠),如下所示:

include src\file1.pas
include src\file2.pas
...

但它必须采用POSIX格式:

include src/file1.pas
include src/file2.pas
...

显然你也可能不会在路径前加./,因为它也会产生一个空的存储库。

你的文件地图看起来没问题,所以这可能不是你原因造成的,但也许这会帮助遇到这个问题的其他人通过谷歌找到这个页面。

答案 1 :(得分:2)

This answer当场:你实际上并没有创建一个空目录,而是一个隐藏.hg目录的目录。如果你运行

hg update

在目标目录中,您将获得目标目录及其所有内容。

答案 2 :(得分:1)

我的空存储库问题是由于文件映射中的路径名是错误的。

答案 3 :(得分:0)

hg convert的输出是什么?空存储库是什么意思?如果您在目标存储库中执行hg log,那么您是否有任何条目?

答案 4 :(得分:0)

我写了一个批处理脚本来帮助运行hg convert命令。 Can I clone part of a Mercurial repository?

答案 5 :(得分:0)

我有同样的问题,这是由你的包含行引起的。您需要指定相对路径,而不是存储库..

E.g

svnrepo > branches |
        | tags     |
        | trunk    > Project1
                   | Project2

您的文件地图应该如下所示

包括Project1