はじめに
試した環境は下記です。
- OS
macOS High Sierra(10.13.2) - GNU Emacs
25.3.1
EmacsのGitクライアントのmagitは
リモートサーバー上のファイルもローカルと同じように扱えるTRAMPモードでも
問題なくリポジトリを参照できるそうです。
ただ、なぜか私の環境だと失敗。。。
リモートサーバー上のGitリポジトリ内でM-x magit-status
をミニバッファで入力しても
下記のようにリポジトリを新規作成するかどうかについて聞かれてしまいます。
Create repository in /ssh:[サーバーホスト]:[リポジトリへのパス]? (y or n)
そこで、調べたところ下記の2つが考えられました。
- リモートサーバーのgitが見つけられない
これは可能性がありそうです。 - リモートサーバーのgitのバージョンがmagitに対応していない
下記のページのようにError (magit): Magit requires Git >= 1.9.4, you are using 1.8.3.
のようなエラーが出るはず。
しかし出ていませんでした。
https://emacs.stackexchange.com/questions/27461/magit-doesnt-recognise-git-repo-through-ssh-connection
まず、リモートのgitを見つけられるようにする
TRAMPではリモートのコマンドの検索パスはtramp-remote-pathで管理しているようです。
そのために、ここにリモートサーバー上のgitコマンドへのパスを追加。
(pushで先頭に追加することで別の古いバージョンを指さないように)
(push "/usr/bin" tramp-remote-path)
しかし、結果は変わらず、、、
そのため、tramp-remote-pathの問題では無さそうなので他に怪しい所が無いか調べると、magitのgitのコマンドパスを直接指定している箇所が有りました。
(setq magit-git-executable "/usr/local/bin/git")
これをコメントアウトして再実行すると、問題なくリモートのリポジトリをmagitで扱えるようになりました。
まとめ
結局自分でmagit-git-executable
を直接指定していたことが問題でした。
別途コマンドの検索パスは正しく通しているのでこの行は削除することにしました。
TRAMP + magit すごく便利です。