【问题标题】:Mercurial convert with filemap to separate subfolders creates empty repositoryMercurial 将文件映射转换为单独的子文件夹会创建空存储库
【发布时间】:2010-06-28 18:43:59
【问题描述】:

我有一个从 svn 存储库转换而来的大型 Hg 存储库 (2+GB)。它有许多网站,我们希望将它们分离到单独的 Hg 存储库中。存储库位于 Windows 2008 Server 上,我们使用的是 TortoiseHg 附带的 hg。

我们一直在尝试使用带有文件映射的 convert 方法从转换后的存储库创建一个新的存储库。

问题是该命令遍历了源 repo 中的所有变更集,但是新创建的 repo 是空的。

这是命令行的样子:

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

文件映射如下所示:

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

任何帮助将不胜感激。

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


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

【问题讨论】:

    标签: mercurial repository filemap


    【解决方案1】:

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

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

    但它必须是 POSIX 格式:

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

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

    您的文件映射看起来不错,因此这可能不是您的情况的原因,但也许这会帮助遇到此问题并通过 Google 找到此页面的其他人。

    【讨论】:

      【解决方案2】:

      This answer 是正确的:您实际上并没有创建一个空目录,而是一个带有隐藏.hg 目录的目录。如果你跑

      hg update
      

      在您的目标目录中,您将拥有您的目标目录,其中包含预期的所有内容。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我不记得这是否是问题所在,或者我是否尝试过修复,但感谢您的提示。
        【解决方案4】:

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

        【讨论】:

        • 我们不再需要使用它,但它看起来是一个不错的小解决方法。感谢您发布。
        【解决方案5】:

        hg convert 的输出是什么?空存储库是什么意思?如果你在目标存储库中做hg log,你有任何条目吗?

        【讨论】:

        • 空存储库意味着它创建了一个名为“site1-hg”的文件夹,其中包含一个 .hg 文件夹,因此它是一个有效的 Hg 存储库,但如果我打开存储库浏览器,则没有变更集,并且浏览器在底部显示“空存储库”。更新被禁用,因为没有要更新的内容。
        【解决方案6】:

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

        例如

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

        您的文件映射应如下所示

        包括项目1

        【讨论】:

        • 感谢您的更新。希望我们不再需要转换任何 svn 存储库,但如果我们这样做,该修复可能会非常有帮助。
        猜你喜欢
        • 2012-05-29
        • 2019-01-08
        • 2015-08-07
        • 2017-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多