9

我知道不可能 使用HTTP(S) 远程创建 Mercurial 存储库,例如:

$ hg init https://host.org/repos/project

或者

$ hg clone /path/to/local/project https://host.org/repos/project

但是,这是什么原因呢?安全问题?不需要吗?仅仅因为还没有人实施它?

这个问题的基本原理:在我的公司,我们通过 HTTPS 共享大部分资源,即访问权限仅由 Apache 管理,普通用户无法通过服务器上的 SSH 登录。只要只需要提供存储库(为此我们对此感到满意hgwebdir.cgi),这就是完美的。但是,我们也希望允许远程创建 repos,而不需要在服务器上维护额外的/修补的脚本和客户端上的额外工具。

需要明确的是:这个问题并不是要解决我们的特定问题,而是因为 Mercurial 本身不支持此功能。


更新

这是我正在考虑的情况的更技术性描述。假设在athgwebdir.cgi中提供存储库集合(启用推送)。每个允许访问此 URL 的用户(如 Apache 中配置的那样)都可以拉取和推送变更集,这实际上意味着(并因此)在下面编辑和创建文件。现在,让在下面创建新存储库的障碍是什么?/path/to/reposhttps://.../reposhgwebdir.cgihg/path/to/reposhgwebdir.cgi/path/to/repos

4

3 回答 3

5

我认为原因是增加对创建存储库的支持会带来相当多的包袱:

  • 如果您可以创建存储库,您希望能够删除它们。虽然这看起来很简单,但与 Mercurial 正常工作的安全方式相去甚远——标准 Mercurial 中没有破坏性命令。

  • 人们还想编辑.hg/hgrc文件来设置描述和联系信息——标准的 Mercurial 从不更改配置文件,所以这又是一个新事物。

  • 人们还希望管理用户对新存储库的访问——这意味着编辑.htaccess文件或其他网络服务器的等价物。

... 等等。实现这个“小”功能将打开许多额外的功能请求,我们只有少数 Mercurial 开发人员同时也是锯齿状的 Web 开发人员。

However, there is now an excellent open source solution: Kallithea gives you a "mini-Bitbucket" that you can deploy on your own server. It will do all of the above. I would install that on my server if I needed something more powerful than plain hgweb.cgi. It supports both Mercurial and Git.

于 2011-02-18T13:38:42.927 回答
0

据我所知,没有一个 SCM 替代方案允许本地创建远程存储库。SVN、CVS、Git 等。

这通常是托管服务提供商的工作:SourceForge、Google Code、BitBucket。他们都在其身份验证基础架构之上实现了存储库创建。

例如,Debian 的 Mercurial 托管仅限于 Debian 开发人员,要创建新的存储库,您需要通过 SSH 登录到服务器并在本地主文件夹中创建存储库,就像Apache 的public_html目录一样。

于 2011-02-08T13:39:31.340 回答
0

各种答案(包括您自己的)给出了一些很好的理由说明为什么该功能不存在(主要是关注点分离),但如果您真的想添加它,您可以只用一两行 shell.xml 来添加它。这是我很久以前给出的一个非常不安全的示例,展示了如何在高信任环境中添加该功能:Mercurial over HTTP 中的远程存储库创建

于 2011-02-08T16:54:55.327 回答