From: Teng Long <dyroneteng@gmail.com>
To: dyroneteng@gmail.com
Cc: Johannes.Schindelin@gmx.de, avarab@gmail.com,
congdanhqx@gmail.com, git@vger.kernel.org, gitster@pobox.com,
martin.agren@gmail.com, peff@peff.net,
tenglong.tl@alibaba-inc.com
Subject: [PATCH v14 15/15] ls-tree: split up "fast path" callbacks
Date: Wed, 23 Mar 2022 17:13:15 +0800 [thread overview]
Message-ID: <55a96e933b0949bbf3f33153b8e370af6c6299bb.1648026472.git.dyroneteng@gmail.com> (raw)
In-Reply-To: <cover.1648026472.git.dyroneteng@gmail.com>
From: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Make the various if/else in the callbacks for the "fast path" a lot
easier to read by just using common functions for the parts that are
common, and have per-format callbacks for those parts that are
different.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Teng Long <dyroneteng@gmail.com>
---
builtin/ls-tree.c | 199 +++++++++++++++++++++++++++++-----------------
1 file changed, 125 insertions(+), 74 deletions(-)
diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c
index 6550f27dfe..44a91cf9d0 100644
--- a/builtin/ls-tree.c
+++ b/builtin/ls-tree.c
@@ -173,108 +173,157 @@ static int show_tree_fmt(const struct object_id *oid, struct strbuf *base,
return recurse;
}
-static int show_default(struct show_tree_data *data)
+static int show_tree_common(struct show_tree_data *data, int *recurse,
+ const struct object_id *oid, struct strbuf *base,
+ const char *pathname, unsigned mode)
{
- size_t baselen = data->base->len;
-
- if (cmdmode == MODE_LONG) {
- char size_text[24];
- if (data->type == OBJ_BLOB) {
- unsigned long size;
- if (oid_object_info(the_repository, data->oid, &size) == OBJ_BAD)
- xsnprintf(size_text, sizeof(size_text), "BAD");
- else
- xsnprintf(size_text, sizeof(size_text),
- "%" PRIuMAX, (uintmax_t)size);
- } else {
- xsnprintf(size_text, sizeof(size_text), "-");
- }
- printf("%06o %s %s %7s\t", data->mode, type_name(data->type),
- find_unique_abbrev(data->oid, abbrev), size_text);
- } else {
- printf("%06o %s %s\t", data->mode, type_name(data->type),
- find_unique_abbrev(data->oid, abbrev));
- }
- baselen = data->base->len;
- strbuf_addstr(data->base, data->pathname);
- write_name_quoted_relative(data->base->buf,
- chomp_prefix ? ls_tree_prefix : NULL, stdout,
- line_termination);
- strbuf_setlen(data->base, baselen);
- return 1;
-}
-
-static int show_tree(const struct object_id *oid, struct strbuf *base,
- const char *pathname, unsigned mode, void *context)
-{
- int recurse = 0;
- size_t baselen;
enum object_type type = object_type(mode);
- struct show_tree_data data = {
- .mode = mode,
- .type = type,
- .oid = oid,
- .pathname = pathname,
- .base = base,
- };
+ int ret = -1;
+
+ *recurse = 0;
+ data->mode = mode;
+ data->type = type;
+ data->oid = oid;
+ data->pathname = pathname;
+ data->base = base;
if (type == OBJ_BLOB) {
if (ls_options & LS_TREE_ONLY)
- return 0;
+ ret = 0;
} else if (type == OBJ_TREE &&
show_recursive(base->buf, base->len, pathname)) {
- recurse = READ_TREE_RECURSIVE;
+ *recurse = READ_TREE_RECURSIVE;
if (!(ls_options & LS_SHOW_TREES))
- return recurse;
+ ret = *recurse;
}
- if (cmdmode == MODE_OBJECT_ONLY) {
- printf("%s%c", find_unique_abbrev(oid, abbrev), line_termination);
- return recurse;
- }
+ return ret;
+}
- if (cmdmode == MODE_NAME_ONLY) {
- baselen = base->len;
- strbuf_addstr(base, pathname);
- write_name_quoted_relative(base->buf,
- chomp_prefix ? ls_tree_prefix : NULL,
- stdout, line_termination);
- strbuf_setlen(base, baselen);
- return recurse;
+static void show_tree_common_default_long(struct strbuf *base,
+ const char *pathname,
+ const size_t baselen)
+{
+ strbuf_addstr(base, pathname);
+ write_name_quoted_relative(base->buf,
+ chomp_prefix ? ls_tree_prefix : NULL, stdout,
+ line_termination);
+ strbuf_setlen(base, baselen);
+}
+
+static int show_tree_default(const struct object_id *oid, struct strbuf *base,
+ const char *pathname, unsigned mode,
+ void *context)
+{
+ int early;
+ int recurse;
+ struct show_tree_data data = { 0 };
+
+ early = show_tree_common(&data, &recurse, oid, base, pathname, mode);
+ if (early >= 0)
+ return early;
+
+ printf("%06o %s %s\t", data.mode, type_name(data.type),
+ find_unique_abbrev(data.oid, abbrev));
+ show_tree_common_default_long(base, pathname, data.base->len);
+ return recurse;
+}
+
+static int show_tree_long(const struct object_id *oid, struct strbuf *base,
+ const char *pathname, unsigned mode, void *context)
+{
+ int early;
+ int recurse;
+ struct show_tree_data data = { 0 };
+ char size_text[24];
+
+ early = show_tree_common(&data, &recurse, oid, base, pathname, mode);
+ if (early >= 0)
+ return early;
+
+ if (data.type == OBJ_BLOB) {
+ unsigned long size;
+ if (oid_object_info(the_repository, data.oid, &size) == OBJ_BAD)
+ xsnprintf(size_text, sizeof(size_text), "BAD");
+ else
+ xsnprintf(size_text, sizeof(size_text),
+ "%" PRIuMAX, (uintmax_t)size);
+ } else {
+ xsnprintf(size_text, sizeof(size_text), "-");
}
- if (cmdmode == MODE_LONG ||
- (!ls_options || (ls_options & LS_RECURSIVE)
- || (ls_options & LS_SHOW_TREES)
- || (ls_options & LS_TREE_ONLY)))
- show_default(&data);
+ printf("%06o %s %s %7s\t", data.mode, type_name(data.type),
+ find_unique_abbrev(data.oid, abbrev), size_text);
+ show_tree_common_default_long(base, pathname, data.base->len);
+ return 1;
+}
+static int show_tree_name_only(const struct object_id *oid, struct strbuf *base,
+ const char *pathname, unsigned mode, void *context)
+{
+ int early;
+ int recurse;
+ const size_t baselen = base->len;
+ struct show_tree_data data = { 0 };
+
+ early = show_tree_common(&data, &recurse, oid, base, pathname, mode);
+ if (early >= 0)
+ return early;
+
+ strbuf_addstr(base, pathname);
+ write_name_quoted_relative(base->buf,
+ chomp_prefix ? ls_tree_prefix : NULL,
+ stdout, line_termination);
+ strbuf_setlen(base, baselen);
+ return recurse;
+}
+
+static int show_tree_object(const struct object_id *oid, struct strbuf *base,
+ const char *pathname, unsigned mode, void *context)
+{
+ int early;
+ int recurse;
+ struct show_tree_data data = { 0 };
+
+ early = show_tree_common(&data, &recurse, oid, base, pathname, mode);
+ if (early >= 0)
+ return early;
+
+ printf("%s%c", find_unique_abbrev(oid, abbrev), line_termination);
return recurse;
}
struct ls_tree_cmdmode_to_fmt {
enum ls_tree_cmdmode mode;
const char *const fmt;
+ read_tree_fn_t fn;
};
static struct ls_tree_cmdmode_to_fmt ls_tree_cmdmode_format[] = {
{
.mode = MODE_DEFAULT,
.fmt = "%(objectmode) %(objecttype) %(objectname)%x09%(path)",
+ .fn = show_tree_default,
},
{
.mode = MODE_LONG,
.fmt = "%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)",
+ .fn = show_tree_long,
},
{
.mode = MODE_NAME_ONLY, /* And MODE_NAME_STATUS */
.fmt = "%(path)",
+ .fn = show_tree_name_only,
},
{
.mode = MODE_OBJECT_ONLY,
.fmt = "%(objectname)",
+ .fn = show_tree_object
+ },
+ {
+ /* fallback */
+ .fn = show_tree_default,
},
- { 0 },
};
int cmd_ls_tree(int argc, const char **argv, const char *prefix)
@@ -282,7 +331,7 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
struct object_id oid;
struct tree *tree;
int i, full_tree = 0;
- read_tree_fn_t fn = show_tree;
+ read_tree_fn_t fn = NULL;
const struct option ls_tree_options[] = {
OPT_BIT('d', NULL, &ls_options, N_("only show trees"),
LS_TREE_ONLY),
@@ -311,6 +360,7 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
OPT__ABBREV(&abbrev),
OPT_END()
};
+ struct ls_tree_cmdmode_to_fmt *m2f = ls_tree_cmdmode_format;
git_config(git_default_config, NULL);
ls_tree_prefix = prefix;
@@ -365,18 +415,19 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
* The generic show_tree_fmt() is slower than show_tree(), so
* take the fast path if possible.
*/
- if (format) {
- struct ls_tree_cmdmode_to_fmt *m2f;
-
- fn = show_tree_fmt;
- for (m2f = ls_tree_cmdmode_format; m2f->fmt; m2f++) {
- if (strcmp(format, m2f->fmt))
- continue;
-
+ while (m2f) {
+ if (!m2f->fmt) {
+ fn = format ? show_tree_fmt : show_tree_default;
+ } else if (format && !strcmp(format, m2f->fmt)) {
cmdmode = m2f->mode;
- fn = show_tree;
- break;
+ fn = m2f->fn;
+ } else if (!format && cmdmode == m2f->mode) {
+ fn = m2f->fn;
+ } else {
+ m2f++;
+ continue;
}
+ break;
}
return !!read_tree(the_repository, tree, &pathspec, fn, NULL);
--
2.34.1.404.g92931a4a2c.dirty
next prev parent reply other threads:[~2022-03-23 9:15 UTC|newest]
Thread overview: 236+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-15 11:51 [PATCH 0/3] support `--oid-only` in `ls-tree` Teng Long
2021-11-15 11:51 ` [PATCH 1/3] ls-tree.c: support `--oid-only` option for "git-ls-tree" Teng Long
2021-11-15 15:12 ` Ævar Arnfjörð Bjarmason
2021-11-18 9:28 ` Teng Long
2021-11-18 11:00 ` Ævar Arnfjörð Bjarmason
2021-11-15 19:16 ` Jeff King
2021-11-15 19:25 ` Jeff King
2021-11-18 11:23 ` Teng Long
2021-11-15 11:51 ` [PATCH 2/3] t3104: add related tests for `--oid-only` option Teng Long
2021-11-15 15:54 ` Đoàn Trần Công Danh
2021-11-18 8:45 ` Teng Long
2021-11-15 11:51 ` [PATCH 3/3] git-ls-tree.txt: description of the 'oid-only' option Teng Long
2021-11-15 15:13 ` [PATCH 0/3] support `--oid-only` in `ls-tree` Ævar Arnfjörð Bjarmason
2021-11-15 19:09 ` Jeff King
2021-11-15 21:50 ` Ævar Arnfjörð Bjarmason
2021-11-19 2:57 ` Teng Long
2021-11-15 19:23 ` Jeff King
2021-11-19 12:09 ` [PATCH v2 0/1] " Teng Long
2021-11-19 12:09 ` [PATCH v2 1/1] ls-tree.c: support `--oid-only` option for "git-ls-tree" Teng Long
2021-11-19 13:30 ` Ævar Arnfjörð Bjarmason
2021-11-19 17:32 ` Junio C Hamano
2021-11-22 7:45 ` Teng Long
2021-11-22 11:14 ` Ævar Arnfjörð Bjarmason
2021-11-22 8:07 ` [PATCH v3 0/1] ls-tree.c: support `--oid-only` option Teng Long
2021-11-22 8:07 ` [PATCH v3 1/1] ls-tree.c: support `--oid-only` option for "git-ls-tree" Teng Long
2021-11-22 18:11 ` Peter Baumann
2021-11-22 18:54 ` Junio C Hamano
2021-11-23 1:09 ` Ævar Arnfjörð Bjarmason
2021-11-23 1:26 ` Junio C Hamano
2021-11-23 2:28 ` Ævar Arnfjörð Bjarmason
2021-11-23 2:55 ` Junio C Hamano
2021-11-23 3:35 ` Junio C Hamano
2021-11-23 11:04 ` Ævar Arnfjörð Bjarmason
2021-11-23 0:14 ` Đoàn Trần Công Danh
2021-11-23 4:58 ` [PATCH v4 0/1] ls-tree.c: support `--oid-only` option Teng Long
2021-11-23 4:58 ` [PATCH v4 1/1] ls-tree.c: support `--oid-only` option for "git-ls-tree" Teng Long
2021-11-23 22:32 ` Junio C Hamano
2021-12-06 7:52 ` Teng Long
2021-12-08 2:08 ` [PATCH v5 0/1] support `--object-only` " Teng Long
2021-12-08 2:08 ` [PATCH v5 1/1] ls-tree.c: " Teng Long
2021-12-15 19:25 ` Junio C Hamano
2021-12-16 12:16 ` Teng Long
2021-12-16 21:26 ` Junio C Hamano
2021-12-16 21:29 ` Ævar Arnfjörð Bjarmason
2021-12-17 6:57 ` [PATCH v6 0/1] " Teng Long
2021-12-17 6:57 ` [PATCH v6 1/1] ls-tree.c: " Teng Long
2021-12-17 13:09 ` Ævar Arnfjörð Bjarmason
2021-12-17 13:30 ` [RFC PATCH 0/7] ls-tree --format Ævar Arnfjörð Bjarmason
2021-12-17 13:30 ` [RFC PATCH 1/7] ls-tree: remove commented-out code Ævar Arnfjörð Bjarmason
2021-12-17 13:30 ` [RFC PATCH 2/7] ls-tree: add missing braces to "else" arms Ævar Arnfjörð Bjarmason
2021-12-17 13:30 ` [RFC PATCH 3/7] ls-tree: use "enum object_type", not {blob,tree,commit}_type Ævar Arnfjörð Bjarmason
2021-12-17 13:30 ` [RFC PATCH 4/7] ls-tree: use "size_t", not "int" for "struct strbuf"'s "len" Ævar Arnfjörð Bjarmason
2021-12-17 13:30 ` [RFC PATCH 5/7] ls-tree: split up the "init" part of show_tree() Ævar Arnfjörð Bjarmason
2021-12-17 13:30 ` [RFC PATCH 6/7] ls-tree: add a --format=<fmt> option Ævar Arnfjörð Bjarmason
2021-12-17 13:30 ` [RFC PATCH 7/7] ls-tree.c: support `--object-only` option for "git-ls-tree" Ævar Arnfjörð Bjarmason
2022-01-01 13:50 ` [PATCH v8 0/8] ls-tree: "--object-only" and "--format" opts Teng Long
2022-01-01 13:50 ` [PATCH v8 1/8] ls-tree: remove commented-out code Teng Long
2022-01-01 13:50 ` [PATCH v8 2/8] ls-tree: add missing braces to "else" arms Teng Long
2022-01-01 13:50 ` [PATCH v8 3/8] ls-tree: use "enum object_type", not {blob,tree,commit}_type Teng Long
2022-01-01 13:50 ` [PATCH v8 4/8] ls-tree: use "size_t", not "int" for "struct strbuf"'s "len" Teng Long
2022-01-01 13:50 ` [PATCH v8 5/8] ls-tree: split up the "init" part of show_tree() Teng Long
2022-01-04 2:06 ` Junio C Hamano
2022-01-04 9:49 ` Teng Long
2022-01-01 13:50 ` [PATCH v8 6/8] ls-tree.c: support --object-only option for "git-ls-tree" Teng Long
2022-01-04 1:21 ` Junio C Hamano
2022-01-04 7:29 ` Teng Long
2022-01-01 13:50 ` [PATCH v8 7/8] ls-tree.c: introduce struct "shown_data" Teng Long
2022-01-03 23:21 ` Junio C Hamano
2022-01-04 2:02 ` Teng Long
2022-01-01 13:50 ` [PATCH v8 8/8] ls-tree.c: introduce "--format" option Teng Long
2022-01-04 14:38 ` Johannes Schindelin
2022-01-04 15:17 ` Johannes Schindelin
2022-01-05 9:40 ` Teng Long
2022-01-05 9:58 ` Teng Long
2022-01-05 13:09 ` Johannes Schindelin
2022-01-05 16:44 ` Teng Long
2022-01-06 4:31 ` [PATCH v9 0/9] " Teng Long
2022-01-06 4:31 ` [PATCH v9 1/9] ls-tree: remove commented-out code Teng Long
2022-01-06 4:31 ` [PATCH v9 2/9] ls-tree: add missing braces to "else" arms Teng Long
2022-01-06 4:31 ` [PATCH v9 3/9] ls-tree: use "enum object_type", not {blob,tree,commit}_type Teng Long
2022-01-06 4:31 ` [PATCH v9 4/9] ls-tree: use "size_t", not "int" for "struct strbuf"'s "len" Teng Long
2022-01-06 4:31 ` [PATCH v9 5/9] ls-tree: optimize naming and handling of "return" in show_tree() Teng Long
2022-01-06 20:44 ` Junio C Hamano
2022-01-11 9:14 ` Teng Long
2022-01-06 4:31 ` [PATCH v9 6/9] ls-tree.c: support --object-only option for "git-ls-tree" Teng Long
2022-01-06 4:31 ` [PATCH v9 7/9] ls-tree.c: introduce struct "show_tree_data" Teng Long
2022-01-06 4:31 ` [PATCH v9 8/9] ls-tree.c: introduce "--format" option Teng Long
2022-01-10 19:41 ` Martin Ågren
2022-01-11 9:34 ` Teng Long
2022-01-06 4:31 ` [PATCH v9 9/9] cocci: allow padding with `strbuf_addf()` Teng Long
2022-01-07 13:03 ` Johannes Schindelin
2022-01-10 8:22 ` Teng Long
2022-01-10 12:49 ` Johannes Schindelin
2022-01-10 14:40 ` Teng Long
2022-01-10 17:47 ` Junio C Hamano
2022-01-10 18:02 ` Ævar Arnfjörð Bjarmason
2022-01-10 18:34 ` Junio C Hamano
2022-01-10 18:00 ` Ævar Arnfjörð Bjarmason
2022-01-11 10:37 ` Teng Long
2022-01-11 16:42 ` Taylor Blau
2022-01-11 19:06 ` René Scharfe
2022-01-11 20:11 ` Taylor Blau
2022-01-13 3:34 ` Teng Long
2022-01-11 20:39 ` Ævar Arnfjörð Bjarmason
2022-01-13 3:35 ` Teng Long
2022-01-13 3:28 ` Teng Long
2022-01-13 3:42 ` [PATCH v10 0/9] ls-tree: "--object-only" and "--format" opts Teng Long
2022-01-13 3:42 ` [PATCH v10 1/9] ls-tree: remove commented-out code Teng Long
2022-01-13 3:42 ` [PATCH v10 2/9] ls-tree: add missing braces to "else" arms Teng Long
2022-01-13 3:42 ` [PATCH v10 3/9] ls-tree: use "enum object_type", not {blob,tree,commit}_type Teng Long
2022-01-13 3:42 ` [PATCH v10 4/9] ls-tree: use "size_t", not "int" for "struct strbuf"'s "len" Teng Long
2022-01-13 3:42 ` [PATCH v10 5/9] ls-tree: optimize naming and handling of "return" in show_tree() Teng Long
2022-01-13 6:49 ` Ævar Arnfjörð Bjarmason
2022-01-14 7:59 ` Teng Long
2022-01-14 12:00 ` Ævar Arnfjörð Bjarmason
2022-01-13 3:42 ` [PATCH v10 6/9] ls-tree.c: support --object-only option for "git-ls-tree" Teng Long
2022-01-13 6:59 ` Ævar Arnfjörð Bjarmason
2022-01-14 8:18 ` Teng Long
2022-01-14 11:47 ` Ævar Arnfjörð Bjarmason
2022-01-18 9:55 ` Teng Long
2022-02-04 12:58 ` Ævar Arnfjörð Bjarmason
2022-02-07 2:22 ` Teng Long
2022-01-13 3:42 ` [PATCH v10 7/9] ls-tree.c: introduce struct "show_tree_data" Teng Long
2022-01-13 7:03 ` Ævar Arnfjörð Bjarmason
2022-01-14 9:12 ` Teng Long
2022-01-13 3:42 ` [PATCH v10 8/9] cocci: allow padding with `strbuf_addf()` Teng Long
2022-01-13 3:42 ` [PATCH v10 9/9] ls-tree.c: introduce "--format" option Teng Long
2022-01-13 7:16 ` Ævar Arnfjörð Bjarmason
2022-01-18 12:59 ` Teng Long
2022-02-08 12:14 ` [PATCH v11 00/13] ls-tree: "--object-only" and "--format" opts Teng Long
2022-02-08 12:14 ` [PATCH v11 01/13] ls-tree: remove commented-out code Teng Long
2022-02-08 12:14 ` [PATCH v11 02/13] ls-tree: add missing braces to "else" arms Teng Long
2022-02-08 12:14 ` [PATCH v11 03/13] ls-tree: use "enum object_type", not {blob,tree,commit}_type Teng Long
2022-02-08 12:14 ` [PATCH v11 04/13] ls-tree: use "size_t", not "int" for "struct strbuf"'s "len" Teng Long
2022-02-08 12:14 ` [PATCH v11 05/13] ls-tree: rename "retval" to "recurse" in "show_tree()" Teng Long
2022-02-08 12:14 ` [PATCH v11 06/13] ls-tree: simplify nesting if/else logic " Teng Long
2022-02-19 6:06 ` Ævar Arnfjörð Bjarmason
2022-02-08 12:14 ` [PATCH v11 07/13] ls-tree: fix "--name-only" and "--long" combined use bug Teng Long
2022-02-19 6:04 ` Ævar Arnfjörð Bjarmason
2022-02-08 12:14 ` [PATCH v11 08/13] ls-tree: slightly refactor `show_tree()` Teng Long
2022-02-19 5:56 ` Ævar Arnfjörð Bjarmason
[not found] ` <CADMgQSRYKB1ybxZWxQQ3uVM71fmdbzHqcK-WUPNKm2HMxw2C2g@mail.gmail.com>
2022-02-28 16:18 ` Ævar Arnfjörð Bjarmason
2022-02-08 12:14 ` [PATCH v11 09/13] ls-tree: introduce struct "show_tree_data" Teng Long
2022-02-08 12:14 ` [PATCH v11 10/13] cocci: allow padding with `strbuf_addf()` Teng Long
2022-02-08 12:14 ` [PATCH v11 11/13] ls-tree.c: introduce "--format" option Teng Long
2022-02-19 5:44 ` Ævar Arnfjörð Bjarmason
2022-02-08 12:14 ` [PATCH v11 12/13] ls-tree: introduce function "fast_path()" Teng Long
2022-02-19 5:32 ` Ævar Arnfjörð Bjarmason
2022-02-08 12:14 ` [PATCH v11 13/13] ls-tree.c: support --object-only option for "git-ls-tree" Teng Long
2022-02-19 5:24 ` Ævar Arnfjörð Bjarmason
2022-03-04 10:42 ` [PATCH v12 00/12] ls-tree: "--object-only" and "--format" opts Teng Long
2022-03-04 10:42 ` [PATCH v12 01/12] ls-tree: remove commented-out code Teng Long
2022-03-04 10:42 ` [PATCH v12 02/12] ls-tree: add missing braces to "else" arms Teng Long
2022-03-04 10:42 ` [PATCH v12 03/12] ls-tree: use "enum object_type", not {blob,tree,commit}_type Teng Long
2022-03-04 10:42 ` [PATCH v12 04/12] ls-tree: use "size_t", not "int" for "struct strbuf"'s "len" Teng Long
2022-03-04 10:42 ` [PATCH v12 05/12] ls-tree: rename "retval" to "recurse" in "show_tree()" Teng Long
2022-03-04 10:42 ` [PATCH v12 06/12] ls-tree: simplify nesting if/else logic " Teng Long
2022-03-04 10:42 ` [PATCH v12 07/12] ls-tree: fix "--name-only" and "--long" combined use bug Teng Long
2022-03-04 10:42 ` [PATCH v12 08/12] ls-tree: slightly refactor `show_tree()` Teng Long
2022-03-04 10:42 ` [PATCH v12 09/12] ls-tree: introduce struct "show_tree_data" Teng Long
2022-03-04 10:42 ` [PATCH v12 10/12] cocci: allow padding with `strbuf_addf()` Teng Long
2022-03-04 10:42 ` [PATCH v12 11/12] ls-tree: introduce "--format" option Teng Long
2022-03-04 10:42 ` [PATCH v12 12/12] ls-tree: support --object-only option for "git-ls-tree" Teng Long
2022-03-10 13:56 ` [RFC/REVIEW 0/7] fixups/suggestions/musings for tl/ls-tree-oid-only Ævar Arnfjörð Bjarmason
2022-03-10 13:56 ` [RFC/REVIEW 1/7] ls-tree tests: add tests for --name-status Ævar Arnfjörð Bjarmason
2022-03-10 13:56 ` [RFC/REVIEW 2/7] ls-tree tests: exhaustively test fast & slow path for --format Ævar Arnfjörð Bjarmason
2022-03-10 13:56 ` [RFC/REVIEW 3/7] ls-tree: remove dead labels Ævar Arnfjörð Bjarmason
2022-03-10 13:57 ` [RFC/REVIEW 4/7] ls-tree: remove unused "MODE_UNSPECIFIED" Ævar Arnfjörð Bjarmason
2022-03-10 13:57 ` [RFC/REVIEW 5/7] ls-tree: detect and error on --name-only --name-status Ævar Arnfjörð Bjarmason
2022-03-10 13:57 ` [RFC/REVIEW 6/7] ls-tree: remove FIELD_*, just use MODE_* Ævar Arnfjörð Bjarmason
2022-03-10 13:57 ` [RFC/REVIEW 7/7] ls-tree: split up "fast path" callbacks Ævar Arnfjörð Bjarmason
2022-03-17 9:51 ` [RFC/REVIEW 0/7] fixups/suggestions/musings for tl/ls-tree-oid-only Teng Long
2022-03-17 10:04 ` Ævar Arnfjörð Bjarmason
2022-03-21 7:33 ` [PATCH v13 00/16] ls-tree: "--object-only" and "--format" opts Teng Long
2022-03-21 7:33 ` [PATCH v13 01/16] ls-tree: remove commented-out code Teng Long
2022-03-21 7:33 ` [PATCH v13 02/16] ls-tree: add missing braces to "else" arms Teng Long
2022-03-21 7:33 ` [PATCH v13 03/16] ls-tree: use "enum object_type", not {blob,tree,commit}_type Teng Long
2022-03-21 7:33 ` [PATCH v13 04/16] ls-tree: use "size_t", not "int" for "struct strbuf"'s "len" Teng Long
2022-03-21 7:33 ` [PATCH v13 05/16] ls-tree: rename "retval" to "recurse" in "show_tree()" Teng Long
2022-03-21 7:33 ` [PATCH v13 06/16] ls-tree: simplify nesting if/else logic " Teng Long
2022-03-21 7:33 ` [PATCH v13 07/16] ls-tree: fix "--name-only" and "--long" combined use bug Teng Long
2022-03-21 7:33 ` [PATCH v13 08/16] ls-tree: slightly refactor `show_tree()` Teng Long
2022-03-21 7:33 ` [PATCH v13 09/16] ls-tree: introduce struct "show_tree_data" Teng Long
2022-03-21 7:33 ` [PATCH v13 10/16] cocci: allow padding with `strbuf_addf()` Teng Long
2022-03-21 7:33 ` [PATCH v13 11/16] ls-tree: introduce "--format" option Teng Long
2022-03-21 9:22 ` Ævar Arnfjörð Bjarmason
2022-03-21 7:33 ` [PATCH v13 12/16] ls-tree: support --object-only option for "git-ls-tree" Teng Long
2022-03-21 7:33 ` [PATCH v13 13/16] ls-tree tests: add tests for --name-status Teng Long
2022-03-21 9:21 ` Ævar Arnfjörð Bjarmason
2022-03-21 7:33 ` [PATCH v13 14/16] ls-tree: detect and error on --name-only --name-status Teng Long
2022-03-21 7:33 ` [PATCH v13 15/16] ls-tree: remove FIELD_*, just use MODE_* Teng Long
2022-03-21 9:15 ` Ævar Arnfjörð Bjarmason
2022-03-21 7:33 ` [PATCH v13 16/16] ls-tree: split up "fast path" callbacks Teng Long
2022-03-21 9:20 ` Ævar Arnfjörð Bjarmason
2022-03-23 9:58 ` Teng Long
2022-03-21 19:07 ` [PATCH v13 00/16] ls-tree: "--object-only" and "--format" opts Junio C Hamano
2022-03-23 9:13 ` [PATCH v14 00/15] " Teng Long
2022-03-23 9:13 ` [PATCH v14 01/15] ls-tree tests: add tests for --name-status Teng Long
2022-03-23 9:13 ` [PATCH v14 02/15] ls-tree: remove commented-out code Teng Long
2022-03-23 9:13 ` [PATCH v14 03/15] ls-tree: add missing braces to "else" arms Teng Long
2022-03-23 9:13 ` [PATCH v14 04/15] ls-tree: use "enum object_type", not {blob,tree,commit}_type Teng Long
2022-03-23 9:13 ` [PATCH v14 05/15] ls-tree: use "size_t", not "int" for "struct strbuf"'s "len" Teng Long
2022-03-23 9:13 ` [PATCH v14 06/15] ls-tree: rename "retval" to "recurse" in "show_tree()" Teng Long
2022-03-23 9:13 ` [PATCH v14 07/15] ls-tree: simplify nesting if/else logic " Teng Long
2022-03-23 9:13 ` [PATCH v14 08/15] ls-tree: fix "--name-only" and "--long" combined use bug Teng Long
2022-03-23 9:13 ` [PATCH v14 09/15] ls-tree: slightly refactor `show_tree()` Teng Long
2022-03-23 9:13 ` [PATCH v14 10/15] ls-tree: introduce struct "show_tree_data" Teng Long
2022-03-23 9:13 ` [PATCH v14 11/15] cocci: allow padding with `strbuf_addf()` Teng Long
2022-03-23 9:13 ` [PATCH v14 12/15] ls-tree: introduce "--format" option Teng Long
2022-03-23 9:13 ` [PATCH v14 13/15] ls-tree: support --object-only option for "git-ls-tree" Teng Long
2022-03-23 9:13 ` [PATCH v14 14/15] ls-tree: detect and error on --name-only --name-status Teng Long
2022-03-23 9:13 ` Teng Long [this message]
2022-04-04 20:06 ` [PATCH v14 15/15] ls-tree: split up "fast path" callbacks Josh Steadmon
2022-04-04 22:42 ` [RFC PATCH] ls-tree: `-l` should not imply recursive listing Josh Steadmon
2022-04-04 23:45 ` [PATCH v2] ls-tree: fix --long implying -r regression in 9c4d58ff2c3 Ævar Arnfjörð Bjarmason
2022-04-06 17:56 ` Junio C Hamano
2022-04-06 20:36 ` Ævar Arnfjörð Bjarmason
2022-04-06 21:51 ` Junio C Hamano
2022-04-07 7:14 ` Ævar Arnfjörð Bjarmason
2022-04-07 18:40 ` Junio C Hamano
2022-05-31 17:21 ` [PATCH] ls-tree: test for the " Ævar Arnfjörð Bjarmason
2022-06-02 15:18 ` Johannes Schindelin
2022-06-02 17:48 ` Junio C Hamano
2022-06-03 9:54 ` js/ci-github-workflow-markup output regression (was: [PATCH] ls-tree: test for the regression in 9c4d58ff2c3) Ævar Arnfjörð Bjarmason
2022-06-03 19:27 ` js/ci-github-workflow-markup output regression Junio C Hamano
2022-06-03 23:13 ` Ævar Arnfjörð Bjarmason
2022-06-07 18:25 ` Junio C Hamano
2022-06-07 21:40 ` Ævar Arnfjörð Bjarmason
2022-06-08 8:04 ` Johannes Schindelin
2022-06-09 19:43 ` Ævar Arnfjörð Bjarmason
2022-06-03 10:23 ` [PATCH v2] ls-tree: test for the regression in 9c4d58ff2c3 Ævar Arnfjörð Bjarmason
2022-06-08 21:55 ` Johannes Schindelin
2022-04-07 9:29 ` [PATCH v2] ls-tree: fix --long implying -r " Teng Long
2022-04-06 15:41 ` [RFC PATCH] ls-tree: `-l` should not imply recursive listing Junio C Hamano
2022-03-23 19:54 ` [PATCH v14 00/15] ls-tree: "--object-only" and "--format" opts Junio C Hamano
2022-03-24 3:00 ` Teng Long
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55a96e933b0949bbf3f33153b8e370af6c6299bb.1648026472.git.dyroneteng@gmail.com \
--to=dyroneteng@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=avarab@gmail.com \
--cc=congdanhqx@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=martin.agren@gmail.com \
--cc=peff@peff.net \
--cc=tenglong.tl@alibaba-inc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).