magit over tramp:重用 ssh 连接

And*_*eas 5 emacs tramp magit

magit 似乎为每个命令打开一个新的 ssh 连接。这变得非常烦人,尤其是在暂存更多块时,这需要花费大量时间来为每个块建立连接。

(在 shell 中,我通过 ./ssh/config 启用了持久的 ssh 连接)

我不确定这是魔术师还是流浪汉。

但我的问题是:

如何让 magit 重用 ssh 连接?

编辑:

客户是

  • 流浪汉 2.3.5.26.2
  • GNU Emacs 26.1.91
  • debian(测试)
  • 这是流浪汉配置
    (add-to-list 'tramp-remote-path 'tramp-own-remote-path)
    (setq tramp-default-method "ssh")
    (setq tramp-inline-compress-start-size 1000000)
Run Code Online (Sandbox Code Playgroud)
  • 这是我的 .ssh/config 的相关部分
  ## generally re-use existing connections
  Host *
      ControlMaster auto
      ControlPath ~/.ssh/sockets/%r@%h-%p
      ControlPersist 600

  Host myhost1
       HostName 111.11.11.1
       User myuser
       ForwardX11 yes
       ForwardX11Timeout 596h
       IdentityFile ~/.ssh/id_rsa
       IdentitiesOnly yes
       ForwardAgent yes
       SendEnv LC_*
       ServerAliveInterval 300
Run Code Online (Sandbox Code Playgroud)

服务器是RHEL 7.6(迈波)

ph0*_*nix 6

默认情况下,Tramp 不使用 SSH 配置文件中定义的 ControlMaster 选项(请参阅 Tramp 常见问题解答):

启动 ssh 会话时,TRAMP 会覆盖 ControlPath 设置。Tramp 这样做是为了防止在 Emacs 会话之外打开的主会话不再打开时出现停顿。

常见问题解答还展示了如何为 TRAMP 配置 ControlMaster 选项:

(customize-set-variable
 'tramp-ssh-controlmaster-options
 (concat
   "-o ControlPath=/tmp/ssh-ControlPath-%%r@%%h:%%p "
   "-o ControlMaster=auto -o ControlPersist=yes"))
Run Code Online (Sandbox Code Playgroud)

或者,如果您想告诉 Tramp 使用~/.ssh/config文件中的自定义设置,您需要更改tramp-use-ssh-controlmaster-options变量:

(customize-set-variable 'tramp-use-ssh-controlmaster-options nil)
Run Code Online (Sandbox Code Playgroud)