Re: [PATCH v3 2/2] Ensure git ls-tree exits with a non-zero exit code if read_tree_recursive fails.
From: Jon Seymour <hidden>
Date: 2016-06-15 22:51:38
Subsystem:
the rest · Maintainer:
Linus Torvalds
Fair point. Everyone ok with this revision? If so, I will re-roll v4. Jens: I added the variable back because the return statement with a ternary operator needed a line break. Let me know if there is a better way to format it. jon.
diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c
index d96e9c4..990e1a3 100644
--- a/builtin/ls-tree.c
+++ b/builtin/ls-tree.c@@ -120,7 +120,7 @@ int cmd_ls_tree(int argc, const char **argv, constchar *prefix)
{
unsigned char sha1[20];
struct tree *tree;
- int i, full_tree = 0;
+ int i, full_tree = 0, ret;
const struct option ls_tree_options[] = {
OPT_BIT('d', NULL, &ls_options, "only show trees",
LS_TREE_ONLY),@@ -173,6 +173,7 @@ int cmd_ls_tree(int argc, const char **argv, constchar *prefix)
tree = parse_tree_indirect(sha1);
if (!tree)
die("not a tree object");
- return read_tree_recursive(tree, "", 0, 0, &pathspec, show_tree, NULL);
+ ret = read_tree_recursive(tree, "", 0, 0, &pathspec, show_tree, NULL);
+ return ret ? 1 : 0;
}
On Mon, Jul 25, 2011 at 11:31 AM, Nguyen Thai Ngoc Duy
[off-list ref] wrote:On Sun, Jul 24, 2011 at 9:59 PM, Jon Seymour [off-list ref] wrote:quoted
@@ -173,7 +173,6 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)tree = parse_tree_indirect(sha1); if (!tree) die("not a tree object"); - read_tree_recursive(tree, "", 0, 0, &pathspec, show_tree, NULL); + return read_tree_recursive(tree, "", 0, 0, &pathspec, show_tree, NULL); - return 0;Nit picking. Most programs return positive value (usually 1) for error cases here. read_tree_recursive may return -1 (which turns out to be 255). Also removing the last blank line in this function would be nice. -- Duy