3

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

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

如果我克隆main到我的本地机器,然后hg init newrepo,并将其复制到克隆main并添加正确的条目,.hgsub我可以提交,但我不能推送。它给了我一个错误http error 404 path not found。好的,很公平,所以我将条目添加到hgServiceweb.conf文件中,然后重新启动。现在我得到一个不同的错误,比如subrepository 'newrepo' doesn't existWell duh!我正在尝试添加它!

所以我终于崩溃了,不得不 RAdmin 到服务器,手动创建一个新的 repo,将它添加到main正在服务的 repohgService并提交更改。这对我来说似乎非常肮脏,让事情变得更加困难的是服务器工作目录的状态已经过时了大约 6 个月,我必须解决无数问题才能将其更新到最新版本。

必须有更好的方法来做到这一点.. 我不能让用户 RAdmining 进入公司。VCS 服务器每次都需要一个新的存储库吗?对?

4

1 回答 1

4

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

hgwebMercurial 附带的脚本(我会用 hgService 来指代它)没有让用户创建新存储库的内置机制。假设新的存储库是通过其他方式创建的,hgweb然后将通过 HTTP 提供只读视图,并允许用户使用 Mercurial 推送/拉到存储库。

Mercurial 还有其他 Web 前端。我对Kallithea最为熟悉。它允许您直接从浏览器创建/删除存储库,因此您不再需要登录到服务器。这是一种比使用 plain 更好的管理存储库的方法hgweb

于 2012-08-19T11:00:15.363 回答