使用带有bitbucket的子存储库

时间:2011-05-11 16:27:32

标签: mercurial bitbucket mercurial-subrepos

尝试将子存储库推送到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

我遇到了这个link,它描述了如何解决问题,但我不明白该怎么做 我应该将我的Logging子存储库放在D:\Work\吗? 我应该怎么做mercurial子路径?这会让我在本地克隆吗?

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

Logging = Logging

2 个答案:

答案 0 :(得分:13)

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

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

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

然后.hgsub内的agile.crm.framework需要包含以下内容:

Logging = ../Logging

答案 1 :(得分:9)

我想提出一个老问题,因为我认为我有更好的解决方案。我理解为什么@the_drow与原始接受的答案有问题,因为Logging = ../Logging您的本地计算机必须将Logging subrepo作为包含/ master repo的对等体。这种从组织的角度来看失败的目的。但是,如果您使用subpaths feature,则可以让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进行子服务。