vim-fugitiveを入れた状態でseparate-git-dirなリポジトリの未コミット差分が見えない
git clone時に--separate-git-dir=...オプションを使用して作業ツリーを分離したリポジトリをagit.vimで見た際、 未コミット差分が "fatal: This operation must be run in a work tree" とエラーになります。
agit.vimの他にvim-fugitiveが入っていると現象が発生し、 agit.vim単独では発生しません。
リポジトリパスの取得方法にfugitive.vimの有無で差異があるようです。
以下のような状況を仮定します。 リポジトリ:/foo/repos.git/ 作業ツリー:/bar/work/
このとき、リポジトリの場所が以下のように判定されます。 fugitive.vimなし:/bar/work/.git/ (誤ったリポジトリパス) fugitive.vimあり:/foo/repos.git/ (正しいリポジトリパス)
未コミット差分を見る際、「作業ツリー=リポジトリの親ディレクトリ」としているので、 作業ツリーの場所が以下のようになります。 fugitive.vimなし:/bar/work/ (正しい作業ツリールートパス) fugitive.vimあり:/foo/ (誤った作業ツリールートパス)
fugitive.vimありの場合、最終的に取得できる作業ツリーの場所が誤っているため、 未コミット差分が見えなくなっているようです。
リポジトリの場所、作業ツリーの場所、 それぞれの取得方法の修正が必要かと思います。
報告ありがとうございます&対応遅くなりすみません。 ひとまず教えていただいた情報を元に修正を試みます。
ちなみにですが、Git のバージョンを教えていただいても良いでしょうか?
Mac OS XのHomeBrewで入れたGit 2.4.5です。