The semantic is simpler: if worktree is found, use it or die. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- builtin-ls-files.c | 4 ++-- builtin-rev-parse.c | 7 +++++-- builtin-rm.c | 5 ++--- setup.c | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/builtin-ls-files.c b/builtin-ls-files.c index cf4c492..a53881d 100644 --- a/builtin-ls-files.c +++ b/builtin-ls-files.c @@ -566,8 +566,8 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix) break; } - if (require_work_tree && !is_inside_work_tree()) - prefix = setup_work_tree(prefix); + if (require_work_tree && !get_git_work_tree()) + die("This operation must be run in a work tree"); if (prefix_offset == -1) prefix_offset = prefix ? strlen(prefix) : 0; diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c index e82cac2..384e23f 100644 --- a/builtin-rev-parse.c +++ b/builtin-rev-parse.c @@ -359,15 +359,16 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix) return 0; } -int cmd_rev_parse(int argc, const char **argv, const char *prefix) +int cmd_rev_parse(int argc, const char **argv, const char *unused_prefix) { int i, as_is = 0, verify = 0; unsigned char sha1[20]; + const char *prefix = NULL; if (argc > 1 && !strcmp("--parseopt", argv[1])) return cmd_parseopt(argc - 1, argv + 1, prefix); - prefix = setup_git_directory(); + setup_git_directory_gently(NULL); git_config(git_default_config); for (i = 1; i < argc; i++) { const char *arg = argv[i]; @@ -487,6 +488,8 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix) printf("%s\n", work_tree); continue; } + else + pfx = prefix = setup_work_tree(prefix); while (pfx) { pfx = strchr(pfx, '/'); if (pfx) { diff --git a/builtin-rm.c b/builtin-rm.c index 2c15d66..dedef9f 100644 --- a/builtin-rm.c +++ b/builtin-rm.c @@ -155,10 +155,9 @@ int cmd_rm(int argc, const char **argv, const char *prefix) if (!argc) usage_with_options(builtin_rm_usage, builtin_rm_options); - if (!index_only) - prefix = setup_work_tree(prefix); - pathspec = get_pathspec(prefix, argv); + if (!pathspec) + die("No valid pathspec"); seen = NULL; for (i = 0; pathspec[i] ; i++) /* nothing */; diff --git a/setup.c b/setup.c index 78ae2f9..f0de42f 100644 --- a/setup.c +++ b/setup.c @@ -444,5 +444,5 @@ int check_repository_format(void) const char *setup_git_directory(void) { setup_git_directory_gently(NULL); - return is_inside_work_tree() ? setup_work_tree(NULL) : NULL; + return get_git_work_tree() ? setup_work_tree(NULL) : NULL; } -- 1.5.4.2.281.g28d0e - 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