我有一个名为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服务器每次需要新的存储库?正确?
答案 0 :(得分:4)
不幸的是,没有 - 添加新的子存储库涉及在服务器上创建它,您不能hg push
新的存储库到服务器上。因此,如果在服务器上创建存储库需要登录到服务器,那么添加子存储库也需要相同的。
Mercurial附带的hgweb
脚本(我将you're referring to by hgService)没有内置机制让用户创建新的存储库。假设新的存储库是通过其他方式创建的,hgweb
将通过HTTP提供只读视图,并允许用户使用Mercurial推送/拉入存储库。
Mercurial还有其他网络前端。我最熟悉Kallithea。它允许您直接从浏览器创建/删除存储库,因此您无需再登录服务器。与使用普通hgweb
相比,这是管理存储库的更好方法。