The command is supposed to be git variant of UNIX ls. Currently it's just a stripped down version of ls-files with some porcelain touch: - auto refreshing index - setup standard excludes Signed-off-by: Nguyán ThÃi Ngác Duy <pclouds@xxxxxxxxx> --- .gitignore | 1 + Makefile | 2 +- builtin.h | 1 + builtin/ls-files.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ command-list.txt | 1 + git.c | 1 + 6 files changed, 57 insertions(+), 1 deletions(-) diff --git a/.gitignore b/.gitignore index a1a1202..c090d21 100644 --- a/.gitignore +++ b/.gitignore @@ -66,6 +66,7 @@ /git-instaweb /git-log /git-lost-found +/git-ls /git-ls-files /git-ls-remote /git-ls-tree diff --git a/Makefile b/Makefile index 0e459e4..5efbb1c 100644 --- a/Makefile +++ b/Makefile @@ -1958,7 +1958,7 @@ builtin/prune.o builtin/reflog.o reachable.o: reachable.h builtin/commit.o builtin/revert.o wt-status.o: wt-status.h builtin/tar-tree.o archive-tar.o: tar.h connect.o transport.o http-backend.o: url.h -branch.o column.o pager.o help.o tag.o: column.h +branch.o builtin/ls-files.o column.o pager.o help.o tag.o: column.h http-fetch.o http-walker.o remote-curl.o transport.o walker.o: walker.h http.o http-walker.o http-push.o http-fetch.o remote-curl.o: http.h url.h diff --git a/builtin.h b/builtin.h index 904e067..5aede6e 100644 --- a/builtin.h +++ b/builtin.h @@ -80,6 +80,7 @@ extern int cmd_index_pack(int argc, const char **argv, const char *prefix); extern int cmd_init_db(int argc, const char **argv, const char *prefix); extern int cmd_log(int argc, const char **argv, const char *prefix); extern int cmd_log_reflog(int argc, const char **argv, const char *prefix); +extern int cmd_ls(int argc, const char **argv, const char *prefix); extern int cmd_ls_files(int argc, const char **argv, const char *prefix); extern int cmd_ls_tree(int argc, const char **argv, const char *prefix); extern int cmd_ls_remote(int argc, const char **argv, const char *prefix); diff --git a/builtin/ls-files.c b/builtin/ls-files.c index fb2d5f4..cab7a10 100644 --- a/builtin/ls-files.c +++ b/builtin/ls-files.c @@ -619,3 +619,55 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix) return 0; } + +int cmd_ls(int argc, const char **argv, const char *cmd_prefix) +{ + struct dir_struct dir; + struct option builtin_ls_files_options[] = { + OPT_BOOLEAN('c', "cached", &show_cached, + "show cached files in the output (default)"), + OPT_BOOLEAN('d', "deleted", &show_deleted, + "show deleted files in the output"), + OPT_BOOLEAN('m', "modified", &show_modified, + "show modified files in the output"), + OPT_BOOLEAN('o', "others", &show_others, + "show other files in the output"), + OPT_BIT('i', "ignored", &dir.flags, + "show ignored files in the output", + DIR_SHOW_IGNORED), + OPT_BOOLEAN('k', "killed", &show_killed, + "show files on the filesystem that need to be removed"), + OPT_END() + }; + + if (argc == 2 && !strcmp(argv[1], "-h")) + usage_with_options(ls_files_usage, builtin_ls_files_options); + + memset(&dir, 0, sizeof(dir)); + prefix = cmd_prefix; + if (prefix) + prefix_len = strlen(prefix); + git_config(git_default_config, NULL); + + if (read_cache() < 0) + die("index file corrupt"); + + argc = parse_options(argc, argv, prefix, builtin_ls_files_options, + ls_files_usage, 0); + + if (dir.flags & DIR_SHOW_IGNORED || show_others) + setup_standard_excludes(&dir); + + pathspec = get_pathspec(prefix, argv); + + if (show_modified) + refresh_index(&the_index, REFRESH_QUIET, pathspec, NULL, NULL); + + /* With no flags, we default to showing the cached files */ + if (!(show_stage | show_deleted | show_others | show_unmerged | + show_killed | show_modified | show_resolve_undo)) + show_cached = 1; + + show_files(&dir); + return 0; +} diff --git a/command-list.txt b/command-list.txt index 95bf18c..15e6770 100644 --- a/command-list.txt +++ b/command-list.txt @@ -59,6 +59,7 @@ git-instaweb ancillaryinterrogators gitk mainporcelain git-log mainporcelain common git-lost-found ancillarymanipulators deprecated +git-ls mainporcelain git-ls-files plumbinginterrogators git-ls-remote plumbinginterrogators git-ls-tree plumbinginterrogators diff --git a/git.c b/git.c index 68334f6..f8e20d2 100644 --- a/git.c +++ b/git.c @@ -357,6 +357,7 @@ static void handle_internal_command(int argc, const char **argv) { "init", cmd_init_db }, { "init-db", cmd_init_db }, { "log", cmd_log, RUN_SETUP }, + { "ls", cmd_ls, RUN_SETUP | NEED_WORK_TREE }, { "ls-files", cmd_ls_files, RUN_SETUP }, { "ls-tree", cmd_ls_tree, RUN_SETUP }, { "ls-remote", cmd_ls_remote, RUN_SETUP_GENTLY }, -- 1.7.2.2 -- 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