为什么mercurial subrepos在eclipse和torotoiseHG中表现为无版本文件

时间:2010-05-22 05:49:53

标签: eclipse mercurial tortoisehg subrepos

我正在尝试使用mercurial的subrepo功能,使用mercurial eclipse插件\ tortoiseHG。

这是我采取的步骤:

  1. 创建了一个空目录/root
  2. 克隆了我想成为此文件夹中的子信息的所有回购(/root/sub1/root/sub2
  3. 在根目录.hgsub中创建并添加了/root/.hgsub文件,并将子回购的所有映射都放入其中
  4. 使用tortoiseHG,右键点击/root并选择create repository here
  5. 再次使用tortoise,选择/root内的所有文件并将它们添加到根目录
  6. 提交了根目录
  7. 将本地根目录推送到我在窑上设置的空仓库
  8. 然后,我使用import-> mercurial在eclipse中删除了根目录。

    现在我看到所有的subrepos看起来好像是无版本的(eclipse文件资源管理器中相应文件夹旁边没有“orange cylinder”图标)。

    此外,当我右键单击其中一个子目录时,我没有像通常那样获得“团队”菜单中的所有hg命令,使用根项目 - 没有“拉”,“推”等。 / p>

    此外,当我更改了subrepo中的文件,然后“提交”了根项目时,它告诉我没有找到任何更改。

    我在tortoiseHG中也看到了相同的行为 - 当我在/root下浏览文件时,直接属于根目录的文件上有一个小图标(V标志),标记它们是版本控制的,而subrepos'文件夹未标记为此类。

    是什么让我怀疑这是我的一些错误,就是这样  1.乌龟和日食都做同样的事情,因此不太可能成为任何一个中的错误  2.他们所做的看起来相当复杂,因此很可能不会发生错误 - 他们都会忽略.hgsub中的所有文件夹。如果相反的情况发生(所有子版本被视为主要仓库的常规文件夹而不是被视为无版本),我会认为这是由于不处理子版本而导致的错误。但很明显,这两个应用程序都承认.hgsub文件

    我做错了什么,还是个错误?

2 个答案:

答案 0 :(得分:2)

这是一个已知的错误:http://www.javaforge.com/issue/11871

答案 1 :(得分:1)

在第一步中,您是否在根目录中有实际嵌套的Mercurial回购? 将.hgsub与“subdir = subdir”指令放在一起不足以使subdir成为子仓库,如果它只是主仓库的子目录(没有自己的.hg )。

如文档中所述:

  

请注意,.hgsub中的行实际上必须存在嵌套存储库才能执行任何操作
  例如,如果不是创建本地嵌套存储库而是尝试链接到预先存在的远程存储库,则必须还要克隆该存储库:

$ echo nested = https://example.com/nested/repo/path > .hgsub
$ hg add .hgsub
$ hg clone https://example.com/nested/repo/path nested

如果有疑问,请始终尝试在命令行中重复执行操作(直到推送),以查看Hg CLI(命令行界面)会话可以显示的内容。
您可以尝试克隆当前的仓库,看看出了什么问题。

现在如果您确实已经嵌套了Hg repos,那么插件“MercurialEclipse”仍然可能不支持subRepos。
它在发行说明中根本没有提到subrepos 而TortoiseHg只在其latest 1.0 release中提及它们。

  

支持状态/提交工具中的子目录