Closed zchee closed 9 years ago
すみません、原因がそうではなかったようです。以後のcommitでもdeleteになってしまいます。 Mergedのせいなのか他なのか、調査してみます。
最後の commit が 447fb27 な commitia.vim で確認してみましたが,報告いただいたような症状は起きませんでした. 試したシーケンスは以下です.
再現条件分かりましたら報告いただけると助かります.
本件、autochdir とは関係ないでしょうか? ジブンの環境では、set autochdir 指定している場合、 STATUS Window と DIFF Window に正しく対象が表示されません
@electricnude
情報ありがとうございます.確かに :set autochdir
すると壊れることが手元で再現出来ましたので,とりあえず別 issue として処理します.
@electricnude
3bdbaa1 で少なくとも僕の環境では直りました.
@zchee
最新に更新しても再現するかどうか試してもらえると助かります.
早々にご対応いただきましてありがとうございます。 3bdbaa1、 364c9d1 双方にて確認しました。
DIFF Window は直りました! ありがとうございます。 STATUS Window は残念ながら変わらない状態です。
@electricnude
ご確認ありがとうございます.
今回の変更ではウィンドウを開く間は一時的に set noautochdir
する処理を入れたので,status window の件については autochdir
関係ない可能性もあります.お手数ですが,.vimrc
で :set noautochdir
した状態でも再現するかどうか見てもらえませんでしょうか?
set autochdir 、set noautochdir 、未指定 を .vimrc に記した場合各々の挙動は以下のようになりました:
STATUS Window | DIFF Window | |
---|---|---|
set autochdir |
x | o |
set noautochdir |
o | o |
OMIT | o | o |
ご参考になれば幸いです
@electricnude
確認ありがとうございます.助かります. 原因が分かったので bef9b57 で修正しました.
原因は 'autochdir' がコミットバッファを開いた時に自動でカレントディレクトリを .git
下に持っていくからでした.一応 :help autochdir
にも書いてありますが,Vim プラグインを使う際はあまりこのオプションは使わないほうが良いかもしれません.とりあえず .git
以下では git status
で何故かすべてのファイルが deleted になるみたいですので,.git
外に一時的に cd
するワークアラウンドを入れました.
@electricnude
--work-tree
を教えてもらったので, f773219 で根本解決が出来た気がします.
ご対応いただきましてありがとうございます。 確認致しました:
bef9b57 | f773219 | ||
---|---|---|---|
set autochdir |
o | o(*) | |
set noautochdir |
o | o | |
OMIT | o | o |
仰られるとおり、set autochdir 指定はイロイロ問題が発生するようですね。 にもかかわらず、ご対応いただきましてありがとうございました。 おかげさまで見やすくなりました。ありがとうございます。
以下、余談となります... 上表 (*)に関して、補足いたします:
ご対応いただきました現状で充分なのですが、 f773219 の場合(恐らく .git 相当の位置からの Status 確認になるようで)、 例えば、a,b,c ファイル構成がこんな場合:
.
|-- .git/
|-- a
|-- b
`-- c
でファイル変更状況がこんな場合:
$ git status -s
M b
M c
git commit 時の STATUS Window は以下のように( ../
がついた表示 )となります:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: ../b
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: ../c
#
<_committia_status__ - ⮀ ...tatus__ ⮁⮃ unix ⮃ utf-8 ⮃ gitcommit ⮂ 7% ⮂ 1:1
一連のご対応で、set autochdir 指定している環境でも充分、
確認しやすくなっていますし、
ご対応以前のママでも、STATUS Window
と DIFF Window
の表示が正しくないだけで、
gitインデクスやワークツリーが破壊されることは無いので、
ここまで考慮するのは イキスギ かもしれません。
が、ご連絡しちゃいまッス!! ヤボでスイマセン!
返信気づくの遅れてしまいました…
あれから再現できなくなってしまって困っていたのですが、set autochdir
が原因だったのですね。
確かに別件でsetしたりしていて今は外したので、理解できました。
autochdir
が問題多いというのも知りませんでしたので勉強になります
ご丁寧に対応していただき、ありがとうございます。
@electricnude
ご連絡ありがとうございます.
cwd が移動してしまう以上,../b
のようにパスがずれてしまうのは仕方ない(仕様)と思います.
@zchee
ご確認ありがとうございます.了解です!
最終のcommitが"Merge pull request..."の際に上からcommitしますと、mergeコミットにはファイル情報がない?ためか、diffバッファの表示がgit管理化の全てのファイルが削除されていることになるようです。
committia.vimのコードを確認していないので、こちらの設定などの問題でしたら申し訳ないです。