如何正确添加子存储库

时间:2012-08-17 23:59:57

标签: version-control mercurial subrepos

我有一个名为main的存储库,下面有许多子存储库。在最初创建main超级存储库时,我已经使用了现有的存储库并将它们复制到main文件夹中,然后添加了.hgsub文件以指示子库的名称。

现在,这个main文件夹位于我们公司的文件服务器上,由hgService提供服务,我们需要为其添加新的存储库。如何在广阔的绿色世界中无缝地完成这项工作?

如果我将main克隆到我的本地计算机,然后hg init newrepo,并将其复制到克隆的main中,并将正确的条目添加到.hgsub我可以提交,但是我不能推。它给我一个http error 404 path not found的错误。好的,公平,所以我将条目添加到hgService的{​​{1}}文件,然后重新启动。现在我得到一个不同的错误,比如web.conf嗯嗯!我正在尝试添加它!

所以我最终崩溃了,不得不将RAdmin发送到服务器,手动创建一个newrepo,将其添加到由subrepository 'newrepo' doesn't exist提供的main repo并提交更改。这对我来说似乎非常肮脏,让事情变得更加困难的是,服务器工作目录的状态大约过了6个月,我不得不解决无数问题,将其更新到最新版本。

必须有一个更好的方法来做到这一点..我不能让用户RAdmining到co。 VCS服务器每次需要新的存储库?正确?

1 个答案:

答案 0 :(得分:4)

不幸的是,没有 - 添加新的子存储库涉及在服务器上创建它,您不能hg push新的存储库到服务器上。因此,如果在服务器上创建存储库需要登录到服务器,那么添加子存储库也需要相同的。

Mercurial附带的hgweb脚本(我将you're referring to by hgService)没有内置机制让用户创建新的存储库。假设新的存储库是通过其他方式创建的,hgweb将通过HTTP提供只读视图,并允许用户使用Mercurial推送/拉入存储库。

Mercurial还有其他网络前端。我最熟悉Kallithea。它允许您直接从浏览器创建/删除存储库,因此您无需再登录服务器。与使用普通hgweb相比,这是管理存储库的更好方法。