{"thread":{"id":"20414","subject":"[PATCH v2 3/4] sequencer: add \"--reset-hard\" option to \"git sequencer--helper\"","startedAt":"2009-08-05T20:52:59Z","lastAt":"2009-08-05T20:52:59Z","messageCount":1,"participants":["Christian Couder"],"isPatch":true,"patchVersion":2,"patchTotal":4},"messages":[{"id":"119704","messageId":"20090805205301.3673.9806.chriscool@tuxfamily.org","threadId":"20414","inReplyTo":null,"subject":"[PATCH v2 3/4] sequencer: add \"--reset-hard\" option to \"git sequencer--helper\"","fromName":"Christian Couder","fromEmail":"chriscool@tuxfamily.org","sentAt":"2009-08-05T20:52:59Z","receivedAt":"2009-08-05T20:52:59Z","isPatch":true,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"This new option uses the \"reset_almost_hard()\" function to perform\na reset.\n\nSigned-off-by: Christian Couder <chriscool@tuxfamily.org>\n---\n builtin-sequencer--helper.c |   65 ++++++++++++++++++++++++++++++++++++------\n 1 files changed, 55 insertions(+), 10 deletions(-)\n\ndiff --git a/builtin-sequencer--helper.c b/builtin-sequencer--helper.c\nindex a15139c..be030bc 100644\n--- a/builtin-sequencer--helper.c\n+++ b/builtin-sequencer--helper.c\n@@ -18,6 +18,7 @@ static unsigned char head_sha1[20];\n \n static const char * const git_sequencer_helper_usage[] = {\n \t\"git sequencer--helper --make-patch <commit>\",\n+\t\"git sequencer--helper --reset-hard <commit> <reflog-msg> <verbosity>\",\n \tNULL\n };\n \n@@ -185,27 +186,71 @@ static int set_verbosity(int verbose)\n \treturn 0;\n }\n \n+/* v should be \"\" or \"t\" or \"\\d\" */\n+static int parse_verbosity(const char *v)\n+{\n+\t/* \"\" means verbosity = 1 */\n+\tif (!v[0])\n+\t\treturn set_verbosity(1);\n+\n+\tif (v[1])\n+\t\treturn 1;\n+\n+\tif (v[0] == 't')\n+\t\treturn set_verbosity(2);\n+\n+\tif (!isdigit(v[0]))\n+\t\treturn 1;\n+\n+\treturn set_verbosity(v[0] - '0');\n+}\n+\n int cmd_sequencer__helper(int argc, const char **argv, const char *prefix)\n {\n-\tchar *commit = NULL;\n-\tstruct commit *c;\n+\tchar *patch_commit = NULL;\n+\tchar *reset_commit = NULL;\n \tstruct option options[] = {\n-\t\tOPT_STRING(0, \"make-patch\", &commit, \"commit\",\n+\t\tOPT_STRING(0, \"make-patch\", &patch_commit, \"commit\",\n \t\t\t   \"create a patch from commit\"),\n+\t\tOPT_STRING(0, \"reset-hard\", &reset_commit, \"commit\",\n+\t\t\t   \"reset to commit\"),\n \t\tOPT_END()\n \t};\n \n \targc = parse_options(argc, argv, prefix, options,\n \t\t\t     git_sequencer_helper_usage, 0);\n \n-\tif (!commit)\n-\t\tusage_with_options(git_sequencer_helper_usage, options);\n+\tif (patch_commit) {\n+\t\tstruct commit *c = get_commit(patch_commit);\n+\t\tif (!c)\n+\t\t\treturn 1;\n \n-\tc = get_commit(commit);\n-\tif (!c)\n-\t\treturn 1;\n+\t\tmake_patch(c);\n \n-\tmake_patch(c);\n+\t\treturn 0;\n+\t}\n \n-\treturn 0;\n+\tif (reset_commit) {\n+\t\tunsigned char sha1[20];\n+\n+\t\tif (argc != 2)\n+\t\t\tusage_with_options(git_sequencer_helper_usage,\n+\t\t\t\t\t   options);\n+\n+\t\tif (get_sha1(reset_commit, sha1)) {\n+\t\t\terror(\"Could not find '%s'\", reset_commit);\n+\t\t\treturn 1;\n+\t\t}\n+\n+\t\treflog = (char *)argv[0];\n+\n+\t\tif (parse_verbosity(argv[1])) {\n+\t\t\terror(\"bad verbosity '%s'\", argv[1]);\n+\t\t\treturn 1;\n+\t\t}\n+\n+\t\treturn reset_almost_hard(sha1);\n+\t}\n+\n+\tusage_with_options(git_sequencer_helper_usage, options);\n }\n-- \n1.6.4.133.g8a5c8\n"}]}