2

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

这些是我采取的步骤:

  1. 创建了一个空目录/root
  2. 克隆了我想成为此文件夹(/root/sub1/root/sub2)中的子存储库的所有存储库
  3. .hgsub在根仓库中创建并添加文件,/root/.hgsub并将子仓库的所有映射放入其中
  4. 使用 tortoiseHG,右键单击/root并选择create repository here
  5. 再次使用乌龟,选择里面的所有文件/root并将它们添加到根仓库
  6. 提交根仓库
  7. 将本地根仓库推入我在窑上设置的空仓库

然后,我使用 import->mercurial 在 Eclipse 中提取了根 repo。

现在我看到所有的子存储库看起来好像它们是未版本化的(在 eclipse 文件资源管理器中相应的文件夹旁边没有“橙色圆柱体”图标)。

此外,当我右键单击其中一个子存储库时,我没有像往常一样在“团队”菜单中获得所有 hg 命令,使用根项目 - 没有“拉”、“推”等。

此外,当我对子存储库中的文件进行更改,然后“提交”根项目时,它告诉我没有找到任何更改。

我在 tortoiseHG 中也看到了相同的行为 - 当我在 下浏览文件时/root,直接属于根存储库的文件上有一个小图标(V 符号),标记它们是受版本控制的,而子存储库的文件夹没有标记像这样。

是什么让我怀疑这是我这边的一些错误,是 1. 乌龟和 eclipse 都做同样的事情,所以不太可能成为任何一个中的错误 2. 他们所做的看起来相当复杂,所以不太可能发生一个错误 - 他们都忽略了 .hgsub 中的所有文件夹。如果发生相反的情况(所有子存储库都被视为主存储库的常规文件夹,而不是被视为未版本化),我会认为这是由于不处理子存储库引起的错误。但显然这两个应用程序都承认 .hgsub 文件

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

4

2 回答 2

2

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

于 2010-05-22T21:39:57.957 回答
1

在您的第一步中,您是否在根存储库中有实际嵌套的 Mercurial 存储库?如果它只是主 repo 的子目录(没有任何自己的) ,则
放置一个.hgsubwith " subdir = subdir" 指令不足以创建一个 subrepo。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 存储库,那么插件“ MercurialEclipse ”仍然可能不支持 subRepos。
它的发行说明中根本没有提到子存储库。而 TortoiseHg 只在其最新的 1.0 版本
中提及它们。

在状态/提交工具中支持子存储库

于 2010-05-22T07:41:36.177 回答