Mercurial:Subrepo错误 - “中止:提交新的subrepo [路径]排除”

时间:2013-05-28 20:54:09

标签: mercurial subrepos

我正在尝试在我的Mercurial项目仓库中为项目的依赖项设置子库。但是当我尝试提交.hgsub文件时,我不断收到此错误:

abort: commit with new subrepo lib/dependency-dir excluded

详细信息:

在我项目的Mercurial存储库目录(顶层)中,我有一个子目录lib/,它将包含我的依赖项。

恰好所有我的依赖项都存在于 github ,我已经分叉了每个库来创建,例如,https://github.com/mygithubaccount/forked-dependency

我创建了一个.hgsub文件并将其添加到存储库(也在顶层)。它包含以下之类的条目(我已尝试按如下方式单独隔离每个条目;它似乎没有任何区别)

lib/dependency-dir = [git]https://github.com/mygithubaccount/forked-dependency.git

然后我从项目存储库的工作目录开始执行以下操作:

$ cd lib
$ git clone https://github.com/mygithubaccount/forked-dependency.git dependency-dir
$ cd ..
$ hg commit .hgsub
abort: commit with new subrepo lib/dependency-dir excluded

任何想法我做错了什么?

8 个答案:

答案 0 :(得分:15)

我完成这项工作的唯一方法是在不指定.hgsub文件的情况下提交

hg commit -m“message”

答案 1 :(得分:3)

我刚刚通过添加文件来解决问题,然后提交:

$ hg add .hgsub
...
$ hg commit .hgsub

答案 2 :(得分:3)

我必须通过在commit命令中显式选择它们来同时提交.hgsub和新的子存储库。我避免了hg提交,因为我有其他文件包含正在进行的工作。

答案 3 :(得分:2)

我也有这个问题。我不确定它是否符合您的情况,但我试图将子存储库添加到新的存储库中。一旦我添加了其他文件并提交了它们,我就可以使用子目录添加.hgsub文件并提交它而不会出现此错误。

答案 4 :(得分:1)

对我来说,问题是git不在我的系统路径上。添加它允许我提交我的git子存储库(注意我必须重新启动TortoiseHg工作台才能获得更新的系统路径)。

答案 5 :(得分:1)

当我遇到同样的问题时,我发现了你的问题。我使用了TortoiseHG,它给了我同样的错误。这里的解决方案对我来说毫无用处,但我找到了答案。

就我而言,问题出现在HG版本中: 我发现我的TortoiseHG使用的是hg ver。 2.5。 当我使用hg ver 3.9 .hgsub正确提交时。

P.S。 我明白我的答案对你没有帮助,但我希望它能帮助像我这样的其他人。

答案 6 :(得分:0)

当我遇到这个问题时,问题是我在subrepo目录的路径中有两个斜杠。

答案 7 :(得分:0)

如果subrepo的文件夹名称与.hgsub文件中的路径之间存在大小写差异,则还会触发此错误消息。

我通过从具有相同文件夹结构的另一个repo复制.hgsub来体验这一点,但是新的repo使用了文件夹名称的标题大小写,而原始repo中的文件夹都是小写。

更改.hgsub或文件夹名称本身就解决了这个问题。