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@xxxxxxxxx> --- Documentation/git-ls.txt | 6 ++++++ builtin/ls-files.c | 27 +++++++++++++++++---------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/Documentation/git-ls.txt b/Documentation/git-ls.txt index 0480c42..126d9db 100644 --- a/Documentation/git-ls.txt +++ b/Documentation/git-ls.txt @@ -47,6 +47,12 @@ OPTIONS --unmerged:: Show unmerged files in the output (forces --stage) +-t:: +--tag:: + Show a tag to indicate file type, helpful when multiple file + selections are used. 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 014de05..392d273 100644 --- a/builtin/ls-files.c +++ b/builtin/ls-files.c @@ -515,16 +515,6 @@ static int ls_files(const char **argv, const char *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) @@ -578,6 +568,20 @@ static int ls_files(const char **argv, const char *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) { @@ -727,6 +731,8 @@ int cmd_ls(int argc, const char **argv, const char *cmd_prefix) N_("show unmerged files in the output")), 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__COLOR(&use_color, N_("show color")), OPT_COLUMN(0, "column", &colopts, N_("show files in columns")), OPT_SET_INT('1', NULL, &colopts, @@ -756,6 +762,7 @@ int cmd_ls(int argc, const char **argv, const char *cmd_prefix) setup_standard_excludes(&dir); use_color = -1; max_depth = 0; + show_tag = -1; argc = parse_options(argc, argv, prefix, builtin_ls_options, ls_usage, 0); -- 1.9.1.345.ga1a145c -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html