2144


tig の status view に untracked なファイルが全く表示されなくなり、原因がわからず困っています。

なお、`git status` では untracked なファイルも表示されていて、`git add` することができます（つまり .gitignore
の問題ではないと考えています）。 `git add` してみると untracked だったファイルが `status view` の `changes
to be committed` 欄に表示されるようになりますが、`u`を押すと `untracked files` の欄に移動せず消えてしまいます。

何が原因でしょうか。あるいは、このような振る舞いに変更されたのでしょうか。

tig の version は 2.0.3 で、.tigrc は以下の通りです。表示を制御するような設定は記述していません。

[code]

    # Bind
    bind generic g move-first-line
    bind generic G move-last-line
    bind generic <Ctrl-f> move-page-down
    bind generic <Ctrl-b> move-page-up
    bind status C !git commit -v
    
[/code]

よろしくお願いします。


CC BY-SA 3.0
2014-12-19T11:07:12.710
2137
2014-12-19T13:33:52.670
2014-12-19T12:05:18.400
30
969
question
git
tig に untracked なファイルが表示されない


同じような問題が issue として上がっていますね。

[tig status does not show untracked files outside of current directory · Issue
#230](https://github.com/jonas/tig/issues/230)

私の環境(tig 1.2.1, git 1.9.1)でもカレントディレクトリよりも上位ディレクトリにある untrack
ファイルは表示されません。根本的な解決ではありませんが、常にリポジトリのトップディレクトリで tig を実行すれば良いのではないでしょうか。

追加:

tig のソースコードを少しみてみましたが、`tig.c` に以下の様なコードがあり、

[code]

    static const char *status_list_other_argv[] = {
        "git", "ls-files", "-z", "--others", "--exclude-standard", opt_prefix, NULL, NULL,
    };
    
[/code]

`git ls-files --others ...` で untracked ファイルを抽出しています。カレントディレクトリよりも上位のディレクトリにある
untracked ファイルが表示されないのはこれが原因の様です。git の他のサブコマンドで置き換えられると良いのですが、untracked
ファイルだけを表示するというものが思い浮かびません(`git ls-tree --full-tree --name-only HEAD` や `git
status -s` などの出力結果を加工すれば良いのでしょうが…)。

シェルの関数として、

[code]

    tig() { (cd $(git rev-parse --show-toplevel) && command tig "$@") }
    
[/code]

などと定義しておけば良いのかもしれません。


CC BY-SA 3.0
2014-12-19T12:00:51.450
2144
2014-12-19T13:33:52.670
2014-12-19T13:33:52.670
2137
answer