{"thread":{"id":"14733","subject":"[PATCH] merge-base: die with an error message if not passed a commit ref","startedAt":"2008-07-29T05:42:53Z","lastAt":"2008-07-29T05:45:00Z","messageCount":2,"participants":["Christian Couder","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"85412","messageId":"20080729074253.b4617027.chriscool@tuxfamily.org","threadId":"14733","inReplyTo":null,"subject":"[PATCH] merge-base: die with an error message if not passed a commit ref","fromName":"Christian Couder","fromEmail":"chriscool@tuxfamily.org","sentAt":"2008-07-29T05:42:53Z","receivedAt":"2008-07-29T05:42:53Z","isPatch":true,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"Before this patch \"git merge-base\" just exited with error code 1\nand without an error message in case it was passed a ref to an\nobject that is not a commit (for example a tree).\n\nThis patch makes it \"die\" in this case with an error message.\n\nWhile at it, this patch also refactors the code to get the\ncommit reference from an argument into a new\n\"get_commit_reference\" function.\n\nSigned-off-by: Christian Couder <chriscool@tuxfamily.org>\n---\n builtin-merge-base.c |   26 +++++++++++++++++---------\n 1 files changed, 17 insertions(+), 9 deletions(-)\n\ndiff --git a/builtin-merge-base.c b/builtin-merge-base.c\nindex 1cb2925..3382b13 100644\n--- a/builtin-merge-base.c\n+++ b/builtin-merge-base.c\n@@ -22,10 +22,23 @@ static int show_merge_base(struct commit *rev1, struct commit *rev2, int show_al\n static const char merge_base_usage[] =\n \"git merge-base [--all] <commit-id> <commit-id>\";\n \n+static struct commit *get_commit_reference(const char *arg)\n+{\n+\tunsigned char revkey[20];\n+\tstruct commit *r;\n+\n+\tif (get_sha1(arg, revkey))\n+\t\tdie(\"Not a valid object name %s\", arg);\n+\tr = lookup_commit_reference(revkey);\n+\tif (!r)\n+\t\tdie(\"Not a valid commit name %s\", arg);\n+\n+\treturn r;\n+}\n+\n int cmd_merge_base(int argc, const char **argv, const char *prefix)\n {\n \tstruct commit *rev1, *rev2;\n-\tunsigned char rev1key[20], rev2key[20];\n \tint show_all = 0;\n \n \tgit_config(git_default_config, NULL);\n@@ -40,13 +53,8 @@ int cmd_merge_base(int argc, const char **argv, const char *prefix)\n \t}\n \tif (argc != 3)\n \t\tusage(merge_base_usage);\n-\tif (get_sha1(argv[1], rev1key))\n-\t\tdie(\"Not a valid object name %s\", argv[1]);\n-\tif (get_sha1(argv[2], rev2key))\n-\t\tdie(\"Not a valid object name %s\", argv[2]);\n-\trev1 = lookup_commit_reference(rev1key);\n-\trev2 = lookup_commit_reference(rev2key);\n-\tif (!rev1 || !rev2)\n-\t\treturn 1;\n+\trev1 = get_commit_reference(argv[1]);\n+\trev2 = get_commit_reference(argv[2]);\n+\n \treturn show_merge_base(rev1, rev2, show_all);\n }\n-- \n1.6.0.rc0.42.g186458.dirty\n"},{"id":"85414","messageId":"7vzlo1kzvn.fsf@gitster.siamese.dyndns.org","threadId":"14733","inReplyTo":"20080729074253.b4617027.chriscool@tuxfamily.org","subject":"Re: [PATCH] merge-base: die with an error message if not passed a commit ref","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-07-29T05:45:00Z","receivedAt":"2008-07-29T05:45:00Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Thanks; queued for 1.6.0.\n"}]}