为什么Mercurial不通过HTTP支持远程存储库创建?

Obe*_*nne 9 mercurial hgweb

我知道这是不是 可以建立远程使用HTTP(S),例如水银库:

$ hg init https://host.org/repos/project
Run Code Online (Sandbox Code Playgroud)

要么

$ hg clone /path/to/local/project https://host.org/repos/project
Run Code Online (Sandbox Code Playgroud)

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

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

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


UPDATE

这是我正在考虑的情况的更多技术描述.假设hgwebdir.cgi服务于/path/to/reposat的一组存储库https://.../repos(启用推送).允许访问此URL的每个用户(在Apache中配置)可以提取和推送变更集,实际上这意味着hgwebdir.cgi(并因此hg)编辑并创建下面的文件/path/to/repos.现在,在hgwebdir.cgi下面创建新存储库的障碍是什么/path/to/repos

Mar*_*ler 5

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

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

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

  • 人们还希望管理用户对新存储库的访问权限 - 这意味着编辑.htaccess文件或其他Web服务器的等效文件.

... 等等.实现这个"小"功能将为许多额外的功能请求打开,我们只有一些Mercurial开发人员也是看不见的Web开发人员.

但是,现在有一个很好的开源解决方案:Kallithea为您提供了一个"迷你Bitbucket",您可以在自己的服务器上部署它.它将完成上述所有工作.如果我需要比普通更强大的东西,我会在我的服务器上安装它hgweb.cgi.它支持Mercurial和Git.