By ensuring no access to repo is done in "git foo -h" case, the commands have better chance of really printing out help usage. Access to repo is not necessary and may terminate program if it finds something wrong. Signed-off-by: Nguyán ThÃi Ngác Duy <pclouds@xxxxxxxxx> --- builtin/branch.c | 3 +++ builtin/checkout-index.c | 3 +++ builtin/commit.c | 6 ++++++ builtin/gc.c | 3 +++ builtin/ls-files.c | 3 +++ builtin/merge.c | 3 +++ builtin/update-index.c | 3 +++ builtin/upload-archive.c | 7 ++++--- t/t3905-help.sh | 16 ++++++++-------- 9 files changed, 36 insertions(+), 11 deletions(-) diff --git a/builtin/branch.c b/builtin/branch.c index 87976f0..9f152ed 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -667,6 +667,9 @@ int cmd_branch(int argc, const char **argv, const char *prefix) OPT_END(), }; + if (startup_info->help) + usage_with_options(builtin_branch_usage, options); + git_config(git_branch_config, NULL); if (branch_use_color == -1) diff --git a/builtin/checkout-index.c b/builtin/checkout-index.c index a7a5ee1..7f25cd7 100644 --- a/builtin/checkout-index.c +++ b/builtin/checkout-index.c @@ -241,6 +241,9 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix) OPT_END() }; + if (startup_info->help) + usage_with_options(builtin_checkout_index_usage, builtin_checkout_index_options); + git_config(git_default_config, NULL); state.base_dir = ""; prefix_length = prefix ? strlen(prefix) : 0; diff --git a/builtin/commit.c b/builtin/commit.c index 66fdd22..8b086f2 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -1070,6 +1070,9 @@ int cmd_status(int argc, const char **argv, const char *prefix) OPT_END(), }; + if (startup_info->help) + usage_with_options(builtin_status_usage, builtin_status_options); + if (null_termination && status_format == STATUS_FORMAT_LONG) status_format = STATUS_FORMAT_PORCELAIN; @@ -1255,6 +1258,9 @@ int cmd_commit(int argc, const char **argv, const char *prefix) int allow_fast_forward = 1; struct wt_status s; + if (startup_info->help) + usage_with_options(builtin_commit_usage, builtin_commit_options); + wt_status_prepare(&s); git_config(git_commit_config, &s); in_merge = file_exists(git_path("MERGE_HEAD")); diff --git a/builtin/gc.c b/builtin/gc.c index c304638..5a9d0da 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -189,6 +189,9 @@ int cmd_gc(int argc, const char **argv, const char *prefix) OPT_END() }; + if (startup_info->help) + usage_with_options(builtin_gc_usage, builtin_gc_options); + git_config(gc_config, NULL); if (pack_refs < 0) diff --git a/builtin/ls-files.c b/builtin/ls-files.c index bb4f612..814da51 100644 --- a/builtin/ls-files.c +++ b/builtin/ls-files.c @@ -530,6 +530,9 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix) OPT_END() }; + if (startup_info->help) + usage_with_options(ls_files_usage, builtin_ls_files_options); + memset(&dir, 0, sizeof(dir)); prefix = cmd_prefix; if (prefix) diff --git a/builtin/merge.c b/builtin/merge.c index 2dba3b9..0169694 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -917,6 +917,9 @@ int cmd_merge(int argc, const char **argv, const char *prefix) const char *best_strategy = NULL, *wt_strategy = NULL; struct commit_list **remotes = &remoteheads; + if (startup_info->help) + usage_with_options(builtin_merge_usage, builtin_merge_options); + if (read_cache_unmerged()) { die_resolve_conflict("merge"); } diff --git a/builtin/update-index.c b/builtin/update-index.c index 3ab214d..46a53f5 100644 --- a/builtin/update-index.c +++ b/builtin/update-index.c @@ -589,6 +589,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix) int lock_error = 0; struct lock_file *lock_file; + if (startup_info->help) + usage(update_index_usage); + git_config(git_default_config, NULL); /* We can't free this memory, it becomes part of a linked list parsed atexit() */ diff --git a/builtin/upload-archive.c b/builtin/upload-archive.c index 73f788e..d4f4741 100644 --- a/builtin/upload-archive.c +++ b/builtin/upload-archive.c @@ -26,9 +26,6 @@ static int run_upload_archive(int argc, const char **argv, const char *prefix) int sent_argc; int len; - if (argc != 2) - usage(upload_archive_usage); - if (strlen(argv[1]) + 1 > sizeof(buf)) die("insanely long repository name"); @@ -98,6 +95,10 @@ int cmd_upload_archive(int argc, const char **argv, const char *prefix) { pid_t writer; int fd1[2], fd2[2]; + + if (startup_info->help || argc != 2) + usage(upload_archive_usage); + /* * Set up sideband subprocess. * diff --git a/t/t3905-help.sh b/t/t3905-help.sh index 0dcbedf..6cab6b9 100755 --- a/t/t3905-help.sh +++ b/t/t3905-help.sh @@ -12,13 +12,13 @@ test_help() { " } -test_help failure branch -test_help failure checkout-index -test_help failure commit -test_help failure gc -test_help failure ls-files -test_help failure merge -test_help failure update-index -test_help failure upload-archive +test_help success branch +test_help success checkout-index +test_help success commit +test_help success gc +test_help success ls-files +test_help success merge +test_help success update-index +test_help success upload-archive test_done -- 1.7.0.2.445.gcbdb3 -- 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