summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Nguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-10-22 01:49:45 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2010-10-22 11:04:53 -0700
commitda53eec68873e76c68086e405f3f1329d47055b3 (patch)
tree750c54e71333132ec43e222f0bd202ee7b855b61
parentls-files -h: show usage even with corrupt index (diff)
downloadtgif-da53eec68873e76c68086e405f3f1329d47055b3.tar.xz
merge -h: show usage even with corrupt index
Part of a campaign to make sure "git <command> -h" works correctly when run from distractingly bad repositories. [jn: with rewritten log message and tests] Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/merge.c2
-rwxr-xr-xt/t7600-merge.sh11
2 files changed, 13 insertions, 0 deletions
diff --git a/builtin/merge.c b/builtin/merge.c
index 5f65c0c8a6..584c94f6fb 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -909,6 +909,8 @@ 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 (argc == 2 && !strcmp(argv[1], "-h"))
+ usage_with_options(builtin_merge_usage, builtin_merge_options);
if (read_cache_unmerged()) {
die_resolve_conflict("merge");
}
diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
index b4f40e4c3a..b147a1bd69 100755
--- a/t/t7600-merge.sh
+++ b/t/t7600-merge.sh
@@ -144,6 +144,17 @@ test_expect_success 'test option parsing' '
test_must_fail git merge
'
+test_expect_success 'merge -h with invalid index' '
+ mkdir broken &&
+ (
+ cd broken &&
+ git init &&
+ >.git/index &&
+ test_expect_code 129 git merge -h 2>usage
+ ) &&
+ grep "[Uu]sage: git merge" broken/usage
+'
+
test_expect_success 'reject non-strategy with a git-merge-foo name' '
test_must_fail git merge -s index c1
'