cohama / agit.vim

A powerful Git log viewer
234 stars 25 forks source link

Support --separate-git-dir #46

Closed portown closed 9 years ago

portown commented 9 years ago

git clone時に--separate-git-dir=...オプションを使用して作業ツリーを分離したリポジトリをagit.vimで見た際、 未コミット差分が "fatal: This operation must be run in a work tree" とエラーになってしまっていたので、 修正してみました。

基本的に「core.worktreeが設定されていたら作業ツリーとして優先的に採用する」という処理を追加しただけですが、 毎回git configを呼ぶのも如何なものかと思い、dictに持たせるよう変更しました。

cohama commented 9 years ago

ありがとうございます。 この問題なんですが、vim-fugitive と一緒に使った時にのみ再現するような気がします。一度お手元で agit.vim のみをインストールした状態で試していただけますか? その場合、別の対応を考えたほうがよいかもしれません。

portown commented 9 years ago

仰る通り、vim-fugitiveなしで試したところ、再現しませんでした。 大変失礼しました……

vim-fugitiveの何が悪いのか、あいにく原因は掴めませんでしたが、 ひとまずこの修正は早計のようですので、closeしたいと考えています。

もしよろしければ、vim-fugitiveとの協調動作について継続調査したいのですが、 その場合、別途Issueを立てた方がよいでしょうか? (最初からIssueにすべきだったかもですが……)

cohama commented 9 years ago

そうですね。別 Issue でおねがいします。 僕の方でも調査して対応を考えてみます。

原因には一応心当たりがあって、agit.vim では .git ディレクトリのパスを探索する際に、vim-fugitive によって b:git_dir という変数がすでに存在する場合は探索をキャンセルしてその変数の中身を直接使う実装になっていて、そこのパスが間違っているからだと思われます。

portown commented 9 years ago

遅くなりましたが、別途Issueを立てたので、こちらはcloseします。( #48 )