Even in narrow checkout mode, "git ls-files --cached" (and --stage) will show all entries in index. When those options are used together with --narrow-checkout, no-checkout entries will be skipped. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- Documentation/git-ls-files.txt | 6 ++++++ builtin-ls-files.c | 11 +++++++++++ 2 files changed, 17 insertions(+), 0 deletions(-) diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt index 9f85d60..f74b212 100644 --- a/Documentation/git-ls-files.txt +++ b/Documentation/git-ls-files.txt @@ -12,6 +12,7 @@ SYNOPSIS 'git ls-files' [-z] [-t] [-v] (--[cached|deleted|others|ignored|stage|unmerged|killed|modified])\* (-[c|d|o|i|s|u|k|m])\* + [--narrow-checkout] [-x <pattern>|--exclude=<pattern>] [-X <file>|--exclude-from=<file>] [--exclude-per-directory=<file>] @@ -72,6 +73,11 @@ OPTIONS to file/directory conflicts for checkout-index to succeed. +--narrow-checkout:: + When narrow checkout is being used, this option together with other + index-based selection options like --cached or --stage, only narrowed + portion will be printed out. + -z:: \0 line termination on output. diff --git a/builtin-ls-files.c b/builtin-ls-files.c index 068f424..456d41c 100644 --- a/builtin-ls-files.c +++ b/builtin-ls-files.c @@ -20,6 +20,7 @@ static int show_unmerged; static int show_modified; static int show_killed; static int show_valid_bit; +static int narrow_checkout; static int line_terminator = '\n'; static int prefix_len; @@ -245,6 +246,8 @@ static void show_files(struct dir_struct *dir, const char *prefix) continue; if (ce->ce_flags & CE_UPDATE) continue; + if (narrow_checkout && ce_no_checkout(ce)) + continue; show_ce_entry(ce_stage(ce) ? tag_unmerged : tag_cached, ce); } } @@ -424,6 +427,7 @@ int report_path_error(const char *ps_matched, const char **pathspec, int prefix_ static const char ls_files_usage[] = "git ls-files [-z] [-t] [-v] (--[cached|deleted|others|stage|unmerged|killed|modified])* " + "[ --narrow-checkout ] " "[ --ignored ] [--exclude=<pattern>] [--exclude-from=<file>] " "[ --exclude-per-directory=<filename> ] [--exclude-standard] " "[--full-name] [--abbrev] [--] [<file>]*"; @@ -465,6 +469,10 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix) show_cached = 1; continue; } + if (!strcmp(arg, "--narrow-checkout")) { + narrow_checkout = 1; + continue; + } if (!strcmp(arg, "-d") || !strcmp(arg, "--deleted")) { show_deleted = 1; continue; @@ -596,6 +604,9 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix) show_killed | show_modified)) show_cached = 1; + if (narrow_checkout && !show_cached && !show_stage) + die("ls-files: --narrow-checkout can only be used with either --cached or --stage"); + read_cache(); if (prefix) prune_cache(prefix); -- 1.6.0.96.g2fad1.dirty -- 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