我正在设置Mercurial存储库布局,并有一个包含所有存储库的目录。
/var/vcroot/link/[repository]
由于SSH是我知道远程访问Mercurial的唯一方式,因此我知道如何设置公钥validation,并设置适当的环境variables。 我想知道的是有什么方法来设置存储库的根,所以用户可以input
ssh://connection-name/repository-name
而不是必须这样做:
ssh://connection-name/var/vcroot/link/repository-name
我想要一些像svn的-r选项。
这取决于用户是以自己的身份login还是以专用的Mercurial用户身份login。 如果你创build了一个专用的Mercurial用户,并通过密钥进行身份validation,那么你可以将Mercurial用户的主目录设置为/var/vcroot/link ,并且connection-name之后的单斜杠将与此相关。
请注意,由于同样的原因(即它应该是ssh://connection-name//var/vcroot/link/repository-name ),你的第二个例子将不起作用。
如果你有用户以自己身份login,那么每个用户将不得不创build一个到$HOME的符号链接才能工作。 或者,您可以使/hg符号链接到/var/vcroot/link ,并使用ssh://connection-name//hg/repository-name ,这可能足够短而方便。
回答你的问题的这一部分:
由于SSH是我知道远程访问Mercurial的唯一方式
您也可以通过http / https远程访问mercurial。
我通过创build一个shell脚本/ usr / local / bin / hg来解决这个问题:
#!/bin/sh cd /var/vcroot/link /usr/bin/hg $*
如果远程运行'hg init ssh:// connection-name / repository-name',则会在/ var / vcroot / link / repository-name中创build存储库,并按预期克隆和推送工作。 我还没有testing其他东西。
我喜欢将主目录更改为/var/vcroot/link的想法,但如果他们使用不同的用户名login,则无法工作。
你可以build议你的用户,他们为你的服务器设置了一个特殊的scheme。 标准的scheme扩展可以让你做到这一点。 他们应该补充
[extensions] schemes = [schemes] server = ssh://connection-name//var/vcroot/link/
到一个configuration文件,然后他们可以做
$ hg clone server://repository-name
代替
$ hg clone ssh://connection-name//var/vcroot/link/repository-name
如果你可以控制他们的机器,那么你甚至可以在/etc/mercurial/hgrc文件中启用和configuration扩展,使其成为一个系统范围的设置。