通过ssh访问远程的mercurial repository

October 28, 2008 at 5:40 pm (hg)

使用Mercurial来管理我的代码已经一年多了,但仅仅限于本地的clone。由于Mercurial在国内的用户不是太多,所以我也只是用他来管理自己的项目。最近受几次朋友的误删文件事件的影响,觉得有必要将重要项目的代码放在一个以上的仓库中,以保证灾难发生事造成不必要的损失。

通常的Mercurial服务器是通过HTTP服务创建的。这种方法适合比较大的项目或者提供项目host的网站部署,而且要安装和配置apache服务器。所幸的是,Mercurial支持通过ssh通道进行加密的管道式交互(–stdio选项)。下面介绍一下面向用户的使用方法,底层的运作这里先不介绍。

首先在远程服务器安装Mercurial。Mercurial的保名是mercurial,大家可以使用合适的命令直接从自己的软件仓库里安装。安装好后使用以下命令确认:

[gnap@osiris ~]$ ssh user@servername hg version
Mercurial Distributed SCM (version 1.0)

Copyright (C) 2005-2008 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

当你看到版本和版权输出信息时,说明Mercurial已经正确安装。不熟悉Mercurial的可以记住它的命令是汞的元素符号Hg。

接下来就可以测试通过SSH访问远程的代码目录了。通过ssh://user:pass@host:port/dir这样的URL,你可以进行clone, push和pull这样的远程操作。理论上应该是双向均可的,但是我只测试过从远程向本地克隆,然后在向远程push。注意路径应该使用绝对路径,否则Mercurial会找不到它管理的项目目录。

$hg clone ssh://user:pass@host:port//abspath/repo repo

现在你可以在本地的project目录中任意的修改项目代码,提交,然后push到远程的仓库中去。

Permalink 1 Comment

Follow

Get every new post delivered to your Inbox.