summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2015-02-08 16:01:32 +0700
committerJunio C Hamano <gitster@pobox.com>2015-02-09 14:27:29 -0800
commitc195d1ece5e0b65ccf2573880e81c2cc907df3a3 (patch)
treee91c8a398bd9215c1de9c896f99b231006e55405
parent72f01abb8d025826971d994654a7b7a3c12e4b37 (diff)
downloadgit-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.txt6
-rw-r--r--builtin/ls-files.c27
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) {