hg之ssh成功实践
前段时间,windowsXP下,作为客户端的hg之ssh配置,根据网上流传的配置和官方的说明,一知半解,算是勉强实现了push功能,但是没搞清楚怎么通过sshclone。近日研究maven,搞定之后回头看hg,原来它们的配置思想尽然一致!都是三级配置,程序级、用户级、应用级,后一级覆盖前面相同配置。对于maven是安装程序下的conf/settings.xml、用户目录下的.m2/settings.xml和应用的pom.xml,而对于hg来说,就是安装程序下的Mercurial.ini、用户目录下的Mercurial.ini(或者.hgrc也可用,不推荐,linux下是.hgrc)和应用下的hgrc。一般安装后,不更改安装程序下的配置,而是在用户目录下创建Mercurial.ini,样例内容如下:
[paths] app1 = ssh://192.168.6.46//var/hg/app1 app2 = ssh://192.168.6.46//var/hg/app2 [ui] username = fancy <[email protected]> ssh = D:\tools\putty\PLINK.EXE -ssh -C -l fancy -pw mypass
[paths]部分,定义了2个path别名,用于ssh的clone参数,其用法可以参看
hg help urls
[ui]部分,定义了username,用于hg提交等的识别,而ssh就是hgssh协议时的配置,前面为使用的plink的地址,后面部分为相关参数,含义为:使用ssh协议,启用压缩,用户名,密码。具体用法可以用命令行在plink.exe所在目录运行plink查看。
特别注意,在使用hgssh之前,要用putty使用ssh协议先行连接服务器,接受服务器的key并且保存,否则hgssh会默认拒绝,从而命令失败。
打开命令行,运行命令
hg clone app1
从服务器cloneapp1的库。完成后,会在.hg目录下生成一个hgrc文件,就是前文提到的应用级配置,里面会有如下配置:
[paths] default = ssh://192.168.6.46//var/hg/app1
此处的default配置,将作为以后该库默认的其它操作的配置(参看前文hghelpurls的说明),除非另外配置,如配置
default-ssh=ssh://192.168.6.46//var/hg/app1,在一般情况下没有必要。
服务器端用的是linux,配置简单,注意用户权限就可以了。