git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] Add "ls", which is basically ls-files with user-friendly settings

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Jan 7, 2010, 17:07 UTC
Message-ID
<1262884076-12293-4-git-send-email-pclouds@gmail.com>
In-Reply-To
<1262884076-12293-1-git-send-email-pclouds@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 builtin-ls-files.c |   31 +++++++++++++++++++++++++++++++
 builtin.h          |    1 +
 git.c              |    1 +
 3 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/builtin-ls-files.c b/builtin-ls-files.c
index e16638e..f63b039 100644
--- a/builtin-ls-files.c
+++ b/builtin-ls-files.c
@@ -11,6 +11,7 @@
 #include "builtin.h"
 #include "tree.h"
 #include "parse-options.h"
+#include "run-command.h"
 
 static int abbrev;
 static int show_deleted;
@@ -31,6 +32,7 @@ static char *ps_matched;
 static const char *with_tree;
 static int exc_given;
 static int max_depth = 0;
+static int show_colums = 0;
 
 static const char *tag_cached = "";
 static const char *tag_unmerged = "";
@@ -461,6 +463,7 @@ static int option_parse_exclude_standard(const struct option *opt,
 
 int cmd_ls_files(int argc, const char **argv, const char *prefix)
 {
+	struct child_process cp;
 	int require_work_tree = 0, show_tag = 0;
 	struct dir_struct dir;
 	struct option builtin_ls_files_options[] = {
@@ -513,6 +516,7 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix)
 		OPT_STRING(0, "with-tree", &with_tree, "tree-ish",
 			"pretend that paths removed since <tree-ish> are still present"),
 		OPT_INTEGER(0, "max-depth", &max_depth, "max recursive depth"),
+		OPT_BOOLEAN(0, "columns", &show_colums, "show in columns"),
 		OPT__ABBREV(&abbrev),
 		OPT_END()
 	};
@@ -591,6 +595,20 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix)
 			die("ls-files --with-tree is incompatible with -s or -u");
 		overlay_tree_on_cache(with_tree, prefix);
 	}
+
+	if (show_colums) {
+		const char *argv[] = { "column", NULL };
+
+		memset(&cp, 0, sizeof(cp));
+		cp.in = -1;
+		cp.out = dup(1);
+		cp.argv = argv;
+		start_command(&cp);
+		close(1);
+		dup2(cp.in, 1);
+		close(cp.in);
+	}
+
 	show_files(&dir, prefix);
 
 	if (ps_matched) {
@@ -602,5 +620,18 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix)
 		return bad ? 1 : 0;
 	}
 
+	if (show_colums) {
+		fflush(stdout);
+		close(1);
+		finish_command(&cp);
+	}
+
 	return 0;
 }
+
+int cmd_ls(int argc, const char **argv, const char *prefix)
+{
+	max_depth = 1;
+	show_colums = 1;
+	return cmd_ls_files(argc, argv, prefix);
+}
diff --git a/builtin.h b/builtin.h
index c3f83c0..d8980e5 100644
--- a/builtin.h
+++ b/builtin.h
@@ -61,6 +61,7 @@ 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_files(int argc, const char **argv, const char *prefix);
+extern int cmd_ls(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);
 extern int cmd_mailinfo(int argc, const char **argv, const char *prefix);
diff --git a/git.c b/git.c
index 11544cd..4aff5ec 100644
--- a/git.c
+++ b/git.c
@@ -323,6 +323,7 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "init-db", cmd_init_db },
 		{ "log", cmd_log, RUN_SETUP | USE_PAGER },
 		{ "ls-files", cmd_ls_files, RUN_SETUP },
+		{ "ls", cmd_ls, RUN_SETUP },
 		{ "ls-tree", cmd_ls_tree, RUN_SETUP },
 		{ "ls-remote", cmd_ls_remote },
 		{ "mailinfo", cmd_mailinfo },
-- 
1.6.6.315.g1a406
Previous: Junio C HamanoNext: Junio C Hamano
Message 5 of 13 in “Bringing git-ls-files to porcelain level”
  1. 0/3 Bringing git-ls-files to porcelain levelNguyễn Thái Ngọc Duy, Jan 7, 2010
  2. 1/3 ls-files: support --max-depthNguyễn Thái Ngọc Duy, Jan 7, 2010
  3. 2/3 ls-files: support -o --max-depth (more of a hack as fill_directory should support this)Nguyễn Thái Ngọc Duy, Jan 7, 2010
  4. Junio C HamanoJan 7, 2010
  5. 3/3 Add "ls", which is basically ls-files with user-friendly settingsNguyễn Thái Ngọc Duy, Jan 7, 2010
  6. Junio C HamanoJan 7, 2010
  7. Nguyen Thai Ngoc DuyJan 7, 2010
  8. Nguyen Thai Ngoc DuyJan 8, 2010
  9. Matthieu MoyJan 7, 2010
  10. Matthieu MoyJan 7, 2010
  11. Nguyen Thai Ngoc DuyJan 7, 2010
  12. Kan-Ru ChenNov 1, 2010
  13. Nguyen Thai Ngoc DuyNov 1, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.