以下是我为构建repo和subrepos所采取的步骤。
一切都托管在Bitbucket上。
这是目录结构: mainrepo --subrepo1(主要项目) --subrepo2(类库)
我花了无数个小时试图让这个工作,我一定是错过了一些明显的东西。
导致此错误的原因是什么?我错过了什么? 随着项目的增长,我需要能够添加额外的子目录。
答案 0 :(得分:13)
我制作示例的步骤如下:
MainRepo
SubRepo
MainRepo
SubRepo
克隆为MainRepo
.hgsub
SubRepo = ../SubRepo
文件
.hgsub
文件添加到MainRepo
,提交并按SubRepo2
SubRepo2
克隆为MainRepo
.hgsub
并添加SubRepo2 = ../SubRepo2
MainRepo
从那时起,我可以编辑两个子存储库中的任何一个,并在工作台中查看MainRepo
时看到它们已经更改。然后,我可以将更改提交到子存储库,在MainRepo
中提交子存储库状态,并通过MainRepo
你说它是由TortoiseHg在你的另一个问题(subrepo = subrepo
)中设置的方式将不适用于BitBucket,因为它们的结构如何。我认为你只能在顶层拥有这样的存储库:
bitbucket.org/SteveKaye/MainRepo
bitbucket.org/SteveKaye/SubRepo
而让subrepo = subrepo
行尝试设置这样的结构:
bitbucket.org/SteveKaye/MainRepo
bitbucket.org/SteveKaye/MainRepo/SubRepo
当你推送它时,看起来它正试图将SubRepo
推入MainRepo
,这将解释你得到的无关的存储库错误消息。
.hgsub
语法是这样的,equals的左边定义了工作副本中存储库所在的文件夹,而equals的右边定义了从哪里获取它。当equals的权限是相对路径时,它定义子存储库在中央服务器上相对于主存储库的位置。因此,在上面的示例中,您将一个文件夹上移到bitbucket.org/SteveKaye
,SubRepo
包含在该文件夹中。
文档说:
Mercurial存储库的源路径可以是相对路径或绝对路径或URL。通常建议使用简单的相对路径,其中源路径与工作目录路径相同:这将确保始终可以“就地”找到子存储库。
如果子存储库不能“就地”托管,则可以使用其他相对路径,例如由于中央存储库或托管服务的限制。使用这种非平凡的相对路径的结果是无法克隆克隆。
这看起来与使用BitBucket时的情况有关,我希望你的克隆不能像上一句中所说的那样克隆。