使用配置文件在ssh上进行Mercurial

时间:2011-08-05 20:52:26

标签: mercurial ssh

说我有以下ssh .config 文件:

Host host_nickname
    User xxx
    HostName yyy.zz.vvv
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h:%p

如果您不熟悉 ControlMaster ControlPath ,请参阅ssh_config manual中的说明:

ControlMaster:
         Enables the sharing of multiple sessions over a single network
         connection.  When set to ``yes'', ssh(1) will listen for connec-
         tions on a control socket specified using the ControlPath argu-
         ment.  Additional sessions can connect to this socket using the
         same ControlPath with ControlMaster set to ``no'' (the default).
         These sessions will try to reuse the master instance's network
         connection rather than initiating new ones, but will fall back to
         connecting normally if the control socket does not exist, or is
         not listening.

在Mercurial中,如果要从存储库中推送或拉出,只需键入以下内容:

hg push ssh://user@example.com/hg/

现在,我的问题是:

我想请Mercurial针对与我的ssh配置条目 host_nickname 对应的服务器上/path/to/repository的存储库推送(或拉取)。我该怎么做?

1 个答案:

答案 0 :(得分:3)

如果你看hg help urls,你会找到

ssh://[user@]host[:port]/[path][#revision]

因此,假设/path/to/repository在远程计算机上的登录目录中起作用,则键入

hg [push|pull] ssh://host_nickname/path/to/repository

这是有效的,因为hg没有进行名称解析; ssh是,您已指定host_nickname与真实HostName之间的对应关系。此外,ControlMaster不会影响这一点,因为它只允许通过单个ssh连接进行多路复用。请注意,如果hg不在您的远程PATH中,则需要通过--remotecmd /path/to/hg指定。