{"thread":{"id":"1548","subject":"[PATCH] Add --symbolic flag to git-rev-parse.","startedAt":"2005-08-17T05:33:03Z","lastAt":"2005-08-17T05:33:03Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"7419","messageId":"7v8xz13z74.fsf@assigned-by-dhcp.cox.net","threadId":"1548","inReplyTo":null,"subject":"[PATCH] Add --symbolic flag to git-rev-parse.","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-08-17T05:33:03Z","receivedAt":"2005-08-17T05:33:03Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"This is most useful with --all, --revs-only, --no-flags and --verify.\n\nSigned-off-by: Junio C Hamano <junkio@cox.net>\n---\n\n    With this, \"git-rev-parse --symbolic master pu\" would output\n    \"master pu\".  Why would this be useful?  The next one uses it.\n\n rev-parse.c |   30 ++++++++++++++++++------------\n 1 files changed, 18 insertions(+), 12 deletions(-)\n\nc7e32319f6c9338f186b62fe05919f0bc5ae7405\ndiff --git a/rev-parse.c b/rev-parse.c\n--- a/rev-parse.c\n+++ b/rev-parse.c\n@@ -16,6 +16,7 @@ static int output_revs = 0;\n static int flags_only = 0;\n static int no_flags = 0;\n static int output_sq = 0;\n+static int symbolic = 0;\n \n #define NORMAL 0\n #define REVERSED 1\n@@ -69,17 +70,18 @@ static void show(const char *arg)\n \t\tputs(arg);\n }\n \n-static void show_rev(int type, const unsigned char *sha1)\n+static void show_rev(int type, const unsigned char *sha1, const char *name)\n {\n \tif (no_revs)\n \t\treturn;\n \toutput_revs++;\n \n-\t/* Hexadecimal string plus possibly a carret;\n-\t * this does not have to be quoted even under output_sq.\n-\t */\n-\tprintf(\"%s%s%c\", type == show_type ? \"\" : \"^\", sha1_to_hex(sha1),\n-\t       output_sq ? ' ' : '\\n');\n+\tif (type != show_type)\n+\t\tputchar('^');\n+\tif (symbolic && name)\n+\t\tshow(name);\n+\telse\n+\t\tshow(sha1_to_hex(sha1));\n }\n \n static void show_rev_arg(char *rev)\n@@ -117,7 +119,7 @@ static void show_default(void)\n \n \t\tdef = NULL;\n \t\tif (!get_sha1(s, sha1)) {\n-\t\t\tshow_rev(NORMAL, sha1);\n+\t\t\tshow_rev(NORMAL, sha1, s);\n \t\t\treturn;\n \t\t}\n \t\tshow_arg(s);\n@@ -126,7 +128,7 @@ static void show_default(void)\n \n static int show_reference(const char *refname, const unsigned char *sha1)\n {\n-\tshow_rev(NORMAL, sha1);\n+\tshow_rev(NORMAL, sha1, refname);\n \treturn 0;\n }\n \n@@ -186,6 +188,10 @@ int main(int argc, char **argv)\n \t\t\t\tshow_type ^= REVERSED;\n \t\t\t\tcontinue;\n \t\t\t}\n+\t\t\tif (!strcmp(arg, \"--symbolic\")) {\n+\t\t\t\tsymbolic = 1;\n+\t\t\t\tcontinue;\n+\t\t\t}\n \t\t\tif (!strcmp(arg, \"--all\")) {\n \t\t\t\tfor_each_ref(show_reference);\n \t\t\t\tcontinue;\n@@ -209,8 +215,8 @@ int main(int argc, char **argv)\n \t\t\t\t\tif (no_revs)\n \t\t\t\t\t\tcontinue;\n \t\t\t\t\tdef = NULL;\n-\t\t\t\t\tshow_rev(NORMAL, end);\n-\t\t\t\t\tshow_rev(REVERSED, sha1);\n+\t\t\t\t\tshow_rev(NORMAL, end, n);\n+\t\t\t\t\tshow_rev(REVERSED, sha1, arg);\n \t\t\t\t\tcontinue;\n \t\t\t\t}\n \t\t\t}\n@@ -220,14 +226,14 @@ int main(int argc, char **argv)\n \t\t\tif (no_revs)\n \t\t\t\tcontinue;\n \t\t\tdef = NULL;\n-\t\t\tshow_rev(NORMAL, sha1);\n+\t\t\tshow_rev(NORMAL, sha1, arg);\n \t\t\tcontinue;\n \t\t}\n \t\tif (*arg == '^' && !get_sha1(arg+1, sha1)) {\n \t\t\tif (no_revs)\n \t\t\t\tcontinue;\n \t\t\tdef = NULL;\n-\t\t\tshow_rev(REVERSED, sha1);\n+\t\t\tshow_rev(REVERSED, sha1, arg+1);\n \t\t\tcontinue;\n \t\t}\n \t\tshow_default();\n"}]}