diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2015-02-08 16:01:32 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-02-09 14:27:29 -0800 |
commit | c195d1ece5e0b65ccf2573880e81c2cc907df3a3 (patch) | |
tree | e91c8a398bd9215c1de9c896f99b231006e55405 | |
parent | 72f01abb8d025826971d994654a7b7a3c12e4b37 (diff) | |
download | git-c195d1ece5e0b65ccf2573880e81c2cc907df3a3.tar.gz |
list-files: add -t back
Tag "H" (cached) is not shown though because it's usually the majority
and becomes noise. Not showing it makes the other tags stand out. -t
is on by default if more than one file category is selected.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | Documentation/git-list-files.txt | 6 | ||||
-rw-r--r-- | builtin/ls-files.c | 27 |
2 files changed, 23 insertions, 10 deletions
diff --git a/Documentation/git-list-files.txt b/Documentation/git-list-files.txt index 1c0c87757d..9d4c127683 100644 --- a/Documentation/git-list-files.txt +++ b/Documentation/git-list-files.txt @@ -46,6 +46,12 @@ OPTIONS --unmerged:: Show unmerged files +-t:: +--[no-]tag:: + Show a tag to indicate file type. Automatically turned on with + multiple file selections. See linkgit::git-ls-files[1] option + `-t` for more information. + -R:: --recursive:: Equivalent of `--max-depth=-1` (infinite recursion). diff --git a/builtin/ls-files.c b/builtin/ls-files.c index 62aa64f689..0e7cbb9bb6 100644 --- a/builtin/ls-files.c +++ b/builtin/ls-files.c @@ -596,6 +596,8 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix) N_("show untracked files")), OPT_SET_INT('R', "recursive", &max_depth, N_("shortcut for --max-depth=-1"), -1), + OPT_BOOL('t', "tag", &show_tag, + N_("identify the file status with tags")), OPT_BIT('i', "ignored", &dir.flags, N_("show ignored files"), DIR_SHOW_IGNORED), @@ -636,6 +638,7 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix) setup_standard_excludes(&dir); use_color = -1; max_depth = 0; + show_tag = -1; git_config(git_ls_config, NULL); } else git_config(git_default_config, NULL); @@ -648,16 +651,6 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix) for (i = 0; i < exclude_list.nr; i++) { add_exclude(exclude_list.items[i].string, "", 0, el, --exclude_args); } - if (show_tag || show_valid_bit) { - tag_cached = "H "; - tag_unmerged = "M "; - tag_removed = "R "; - tag_modified = "C "; - tag_other = "? "; - tag_killed = "K "; - tag_skip_worktree = "S "; - tag_resolve_undo = "U "; - } if (show_modified || show_others || show_deleted || (dir.flags & DIR_SHOW_IGNORED) || show_killed) require_work_tree = 1; if (show_unmerged && !porcelain) @@ -711,6 +704,20 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix) show_killed || show_modified || show_resolve_undo)) show_cached = 1; + if (show_tag == -1) + show_tag = (show_cached + show_deleted + show_others + + show_unmerged + show_killed + show_modified) > 1; + if (show_tag || show_valid_bit) { + tag_cached = porcelain ? " " : "H "; + tag_unmerged = "M "; + tag_removed = "R "; + tag_modified = "C "; + tag_other = "? "; + tag_killed = "K "; + tag_skip_worktree = "S "; + tag_resolve_undo = "U "; + } + if (max_prefix) prune_cache(max_prefix); if (with_tree) { |