ls-tree: -l should not imply recursive listing

In 9c4d58ff2c (ls-tree: split up "fast path" callbacks, 2022-03-23), a
refactoring of the various read_tree_at() callbacks caused us to
unconditionally recurse into directories if `-l` (long format) was
passed on the command line, regardless of whether or not we also pass
the `-r` (recursive) flag.

Fix this by making show_tree_long() return the value of `recurse`,
rather than always returning 1. This value is interpreted by
read_tree_at() to be a signal on whether or not to recurse.

Signed-off-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Josh Steadmon 2022-04-04 15:42:24 -07:00 committed by Junio C Hamano
parent 9c4d58ff2c
commit 350296cc78

View file

@ -255,7 +255,7 @@ static int show_tree_long(const struct object_id *oid, struct strbuf *base,
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;
return recurse;
}
static int show_tree_name_only(const struct object_id *oid, struct strbuf *base,