我有一个名为main
的存储库,在它下面有许多子存储库。最初创建main
超级存储库时,我已将现有的存储库复制到main
文件夹中,然后添加了.hgsub
文件以指示子存储库的名称。
现在,这个main
文件夹位于我们公司的文件服务器上,由 hgService
提供服务,我们需要向其添加新的存储库。在广阔的绿色世界中,这如何无缝完成?
如果我将main
克隆到我的本地机器,则hg init newrepo
,并将其复制到克隆的main
中,并将正确的条目添加到我可以提交但无法推送.hgsub
。它给了我一个错误,就像http error 404 path not found
.好的,很公平,所以我将条目添加到hgService
的web.conf
文件中,然后重新启动。现在我收到一个不同的错误,例如subrepository 'newrepo' doesn't exist
好吧!我正在尝试添加它!
所以我最终崩溃了,不得不 RAdmin 到服务器,手动创建一个 newrepo,将其添加到 hgService
提供的main
存储库中并提交更改。这对我来说似乎非常肮脏,让事情变得更加困难的是服务器工作目录的状态已经过时了大约 6 个月,我必须解决无数问题才能将其更新到最新版本。
必须有更好的方法来做到这一点.. 我不能让用户每次需要新存储库时都进入 co. VCS 服务器?对吧?
没有 — 添加新的子存储库涉及在服务器上创建它,您无法将新存储库hg push
到服务器上。因此,如果在服务器上创建存储库需要登录到服务器,那么添加子存储库将需要相同的内容。
Mercurial 附带的hgweb
脚本(我将通过 hgService 引用)没有允许用户创建新存储库的内置机制。假设新存储库是通过其他方式创建的,然后hgweb
将通过HTTP提供只读视图,并允许用户使用Mercurial推送/拉取存储库。
Mercurial还有其他Web前端。我最熟悉的是卡利地亚。它使您可以直接从浏览器创建/删除存储库,因此您不再需要登录到服务器。这是一种比使用普通hgweb
更好的管理存储库的方法。