5

尝试将子存储库推送到 bitbucket 时遇到此错误:

D:\Work\agile.crm.framework>hg push
warning: bitbucket.org certificate with fingerprint 81:2b:08:90:dc:d3:71:ee:e0:7
c:b4:75:ce:9b:6c:48:94:56:a1:fe not verified (check hostfingerprints or web.cace
rts config setting)
http authorization required
realm: Bitbucket.org HTTP
user: the_drow
password:
warning: bitbucket.org certificate with fingerprint 81:2b:08:90:dc:d3:71:ee:e0:7
c:b4:75:ce:9b:6c:48:94:56:a1:fe not verified (check hostfingerprints or web.cace
rts config setting)
pushing to https://the_drow@bitbucket.org/the_drow/agile.crm.framework
pushing subrepo Logging to https://the_drow@bitbucket.org/the_drow/agile.crm.fra
mework/Logging
warning: bitbucket.org certificate with fingerprint 81:2b:08:90:dc:d3:71:ee:e0:7
c:b4:75:ce:9b:6c:48:94:56:a1:fe not verified (check hostfingerprints or web.cace
rts config setting)
abort: HTTP Error 404: NOT FOUND

我遇到了描述如何解决问题的链接,但我不明白该怎么做。
我应该将我的 Logging 子存储库放入D:\Work\吗?
我究竟应该如何处理 mercurial 子路径?这将使我能够在本地克隆吗?

编辑:根据要求,这是我的 .hgsub 文件的内容

Logging = Logging
4

2 回答 2

13

正如您发布的链接中所述,“您必须将子存储库作为主存储库的兄弟姐妹。”

所以在 BitBucket 上,你需要以下结构:

https://bitbucket.org/the_drow/agile.crm.framework
https://bitbucket.org/the_drow/Logging

那么你的.hgsub内部agile.crm.framework需要包含以下内容:

Logging = ../Logging

于 2011-05-11T17:21:57.497 回答
9

我要提出一个老问题,因为我认为我有更好的解决方案。我理解为什么@the_drow 与原始接受的答案存在问题,因为Logging = ../Logging您的本地计算机必须将 Logging 子存储库作为包含/主存储库的对等方。从组织的角度来看,这种方式违背了 subrepos 的目的。但是,如果您使用subpaths 功能,您可以让 Mercurial 在推送时为您重写 URI:

external/my_subrepo = external/my_subrepo

[subpaths]
([https://|ssh://hg@])bitbucket\.org/moswald/my_project/external/my_subrepo = \1bitbucket.org/moswald/my_subrepo

my_subrepo现在我的子存储库的本地副本my_project按预期存储在里面,但是当我推送到 Bitbucket 时,它被重新路由到真实的东西。事实上,由于 Mercurial 了解 Git 和 SVN,因此您几乎可以使用该重写功能来指向任何地方。我有多个 Bitbucket 存储库,这些存储库包含其他使用 Github 的作者的子存储库。

于 2013-07-28T14:31:39.327 回答