最初我的subrepo是用.hgsub
中的绝对URL定义的,现在导致一些麻烦。它使得“友好的独裁者”工作流程变得不可能,因为我想使用一个中间服务器,用户从中间服务器克隆其工作副本。然后我将更改提取到中间服务器,然后将它们推送到主存储库(中间服务器也是持续集成主机,因此我不会直接将内容提取到主服务器)。绝对路径会阻止这种情况,因为克隆的repo会被直接推送到主服务器。
现在问题是当我尝试推送hg
文件中的更改时,我的.hgsub
服务器会发出404错误。以下是我所做的更改的示例
# original subrepo definition
common = http://hgserver/disp/common
# and after the change
common = common
这不起作用,它会发出以下错误
$ hg push
pushing to http://hgserver/disp
pushing subrepo common
abort: HTTP Error 404: Not Found
是否可以通过这种方式更改subrepo配置,还是必须重新创建整个存储库?
答案 0 :(得分:3)
是的,它应该是可更改的(并且你是正确的,亲戚可以提供更好的工作流程),但是,相对url路径被视为相对于hg root
的repo .hgsub
。 1}}生活 - 而不是你正好推动的地方(来自.hg/hgrc
deafult
部分的paths
on server http://hgserver/disp/main
http://hgserver/disp/common # the "common" repo
http://hgserver/disp/main # the main repo
http://hgserver/disp/main/.hgsub # contains "common=../common"
条目。
这是一个非常正常的subrepo布局:
"../sibling"
然后在克隆之后一切正常,同样的hgsub也可以在服务器上正常工作。
有很多堆栈溢出问题,人们可以通过最佳布局进行相对subrepo设置,虽然我没有尝试从一个切换到另一个我认为如果你做的“旁边”风格的子回复{{1}}我在上面显示它会正常工作。
答案 1 :(得分:1)
请注意,在以下情况下存在(编辑)问题:
见http://mercurial.808500.n3.nabble.com/subrepos-with-ssh-urls-with-absolute-paths-td1462834.html。从本质上讲,它强制在.hgsub文件中使用绝对路径 - 这会打破引用的“友好的独裁者”/集成服务器工作流程。
一个解决方案很多,但是现在我们必须使用绝对路径并在[subpaths]
部分中进行每用户重新映射。 : - (
注意:现在已修复: https://www.mercurial-scm.org/repo/hg-stable/rev/71ea5b2b9517这是Hg版本1.8.3(及更高版本)