2010-05-05 88 views
0

我被Mercurial吸引为DVCS平台,但想要一个类似于svnserve的易用服务器。有HgServe,但似乎是只读的。如果我希望能够在另一台机器上托管服务器,看起来我需要设置Apache等。是真的吗?对于安全性不成问题的本地网络,是否有更简单的方法?Mercurial有没有像svnserve的东西?

+2

Nick对你有以下正确答案:使用ssh进行最简单的设置。但是,我应该指出'hg serve'不是只读的。您可以通过更改'push_ssl'和'allow_push'的设置来启用推送,但不添加第三方认证层(例如Apache,NGINX),您就可以向全世界开放。 – 2010-05-05 10:27:41

回答

3

这里的问题是,它很容易,mercurial documentation无法适当地覆盖它。如果克隆使用ssh:

hg clone ssh://[email protected]//path/to/repo /local/path 

它会做正确的事“服务器”系统(它会自动运行的另一端为操作的持续时间hg serve),以及随后的所有操作(推,拉等)将会自动运行在ssh上。 (如果你想让你的路径在文件系统根目录下启动,请确保你在主机名之后使用双斜线,否则它将在ssh放置的任何地方启动)。请注意,Hg“用户”与ssh用户是分开的,所以如果你希望每个人都使用同一个受限制的帐户作为ssh,他们可以通过在.hgrc中设置的用户来识别他们的变更集。

+2

让每个人共享一个ssh(系统)帐户并不意味着让他们共享一个密码或给他们shell访问权限。你可以在contrib中使用hg-ssh脚本来执行每个用户只能通过密钥进行mercurial ssh访问。 – 2010-05-05 10:43:27

+0

@ Ry4an:当然,你可以做任何你通常用SSH做的事情(衡量你可能配置的任何系统的安全含义)。当然,设置一个只能运行hg并拥有来自每个用户的authorized_keys的ssh帐户非常容易(不知道hg-ssh的功能,但向授权密钥添加密钥非常简单)。我怀疑hg是否没有漏洞,所以这一切取决于你对用户的信任程度。 – 2010-05-05 10:58:04

+0

hg-ssh执行远程命令行的hg-aware扫描,以确保它除了访问位于白名单中的单个回购单元之外不会执行任何操作。如果mercurial的受限ssh设置中有任何爆炸,有人会告诉bitbucket.org,因为他们使用共享的ssh帐户进行匿名ssh访问。 – 2010-05-06 13:30:58