Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么mercurial Subrepo在eclipse和torotoiseHG中表现为未版本文件_Eclipse_Mercurial_Tortoisehg_Subrepos - Fatal编程技术网

为什么mercurial Subrepo在eclipse和torotoiseHG中表现为未版本文件

为什么mercurial Subrepo在eclipse和torotoiseHG中表现为未版本文件,eclipse,mercurial,tortoisehg,subrepos,Eclipse,Mercurial,Tortoisehg,Subrepos,我正在尝试使用mercurial的subrepo特性,使用mercurial eclipse插件\tortoiseHG 以下是我采取的步骤: 创建了一个空目录/root 已克隆此文件夹中我希望成为子repo的所有repo(/root/sub1,/root/sub2) 在根repo/root/.hgsub中创建并添加.hgsub文件,并将子repo的所有映射放在其中 使用tortoiseHG,右键单击/root,然后选择在此处创建存储库 再次使用tortoise,选择/root中的所有文件,并将它

我正在尝试使用mercurial的subrepo特性,使用mercurial eclipse插件\tortoiseHG

以下是我采取的步骤:

  • 创建了一个空目录
    /root
  • 已克隆此文件夹中我希望成为子repo的所有repo(
    /root/sub1
    /root/sub2
  • 在根repo
    /root/.hgsub
    中创建并添加
    .hgsub
    文件,并将子repo的所有映射放在其中
  • 使用tortoiseHG,右键单击
    /root
    ,然后选择
    在此处创建存储库
  • 再次使用tortoise,选择
    /root
    中的所有文件,并将它们添加到根repo
  • 提交根回购协议
  • 将本地根repo推到我在上设置的空repo中
  • 然后,我在eclipse中使用import->mercurial提取根repo

    现在,我看到所有的子repo都显示为未版本(在eclipse文件资源管理器中,它们对应的文件夹旁边没有“橙色圆柱体”图标)

    此外,当我右键单击其中一个子repo时,我不会像通常一样获得“team”菜单中的所有hg命令,根项目没有“pull”、“push”等

    另外,当我在subrepo中更改文件,然后“提交”根项目时,它告诉我没有发现任何更改

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


    是什么让我怀疑这是我的错误 1.乌龟和月食都做同样的事情,所以它们都不太可能是虫子 2.他们所做的看起来相当复杂,因此不太可能由bug发生-他们都忽略了.hgsub中的所有文件夹。如果发生了相反的情况(所有子回购都被视为主回购的常规文件夹,而不是被视为未版本),我会认为这是由于不处理子回购而导致的错误。但很明显,这两款应用都承认.hgsub文件


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

    在您的第一步中,您是否在根repo中实际嵌套了Mercurial repo?
    如果
    .hgsub
    只是主repo的子目录(本身没有任何
    .hg
    ),那么将
    .hgsub
    与“
    subdir=subdir
    ”指令放在一起并不足以使
    subdir
    成为子repo

    如文件所述:

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

    如果有疑问,请始终尝试在命令行中重复您所做的操作(直到推送),以查看Hg CLI(命令行界面)会话可以向您展示什么。
    您可以在当前回购协议的克隆上进行实验,看看哪里出了问题

    现在,如果您确实有嵌套的Hg repos,那么仍然有可能插件“”还不支持子repos。
    它在发行说明中根本没有提到次级回购。
    而乌龟只在它的名字里提到它们

    在状态/提交工具中支持子回购


    这是一个已知的错误:

    感谢您的编辑和精确性。我已经完成了我的回答,但最可靠的调试方法是通过CLI(shell中的hg命令)进行调试。让我怀疑这是我自己的错误,是1。乌龟和月食都做同样的事情,所以它不太可能是任何一个2的错误。他们所做的看起来相当复杂,因此不太可能由bug发生-他们都忽略了.hgsub中的所有文件夹。如果发生了相反的情况(所有子回购都被视为主回购的常规文件夹,而不是被视为未版本),我会认为这是由于不处理子回购而导致的错误。但很明显,这两款应用都承认.hgsub文件是一个很好的陷阱+1为什么乌龟似乎也有同样的问题?
    $ echo nested = https://example.com/nested/repo/path > .hgsub
    $ hg add .hgsub
    $ hg clone https://example.com/nested/repo/path nested