{"thread":{"id":"4068","subject":"[PATCH] Teach fmt-patch about --keep-subject","startedAt":"2006-05-05T02:31:29Z","lastAt":"2006-05-05T02:31:29Z","messageCount":1,"participants":["Johannes Schindelin"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"19542","messageId":"Pine.LNX.4.63.0605050431020.26082@wbgn013.biozentrum.uni-wuerzburg.de","threadId":"4068","inReplyTo":null,"subject":"[PATCH] Teach fmt-patch about --keep-subject","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2006-05-05T02:31:29Z","receivedAt":"2006-05-05T02:31:29Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nSigned-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>\n\n---\n\n builtin-log.c |   16 ++++++++++++----\n log-tree.c    |    5 ++++-\n 2 files changed, 16 insertions(+), 5 deletions(-)\n\ndiff --git a/builtin-log.c b/builtin-log.c\nindex 43c7ecd..0027998 100644\n--- a/builtin-log.c\n+++ b/builtin-log.c\n@@ -78,7 +78,7 @@ static int istitlechar(char c)\n static FILE *realstdout = NULL;\n static char *output_directory = NULL;\n \n-static void reopen_stdout(struct commit *commit, int nr)\n+static void reopen_stdout(struct commit *commit, int nr, int keep_subject)\n {\n \tchar filename[1024];\n \tchar *sol;\n@@ -100,7 +100,7 @@ static void reopen_stdout(struct commit \n \n \t\tsol += 2;\n \t\t/* strip [PATCH] or [PATCH blabla] */\n-\t\tif (!strncmp(sol, \"[PATCH\", 6)) {\n+\t\tif (!keep_subject && !strncmp(sol, \"[PATCH\", 6)) {\n \t\t\tchar *eos = strchr(sol + 6, ']');\n \t\t\tif (eos) {\n \t\t\t\twhile (isspace(*eos))\n@@ -138,6 +138,7 @@ int cmd_format_patch(int argc, const cha\n \tint nr = 0, total, i, j;\n \tint use_stdout = 0;\n \tint numbered = 0;\n+\tint keep_subject = 0;\n \n \tinit_revisions(&rev);\n \trev.commit_format = CMIT_FMT_EMAIL;\n@@ -160,7 +161,11 @@ int cmd_format_patch(int argc, const cha\n \t\telse if (!strcmp(argv[i], \"-n\") ||\n \t\t\t\t!strcmp(argv[i], \"--numbered\"))\n \t\t\tnumbered = 1;\n-\t\telse if (!strcmp(argv[i], \"-o\")) {\n+\t\telse if (!strcmp(argv[i], \"-k\") ||\n+\t\t\t\t!strcmp(argv[i], \"--keep-subject\")) {\n+\t\t\tkeep_subject = 1;\n+\t\t\trev.total = -1;\n+\t\t} else if (!strcmp(argv[i], \"-o\")) {\n \t\t\tif (argc < 3)\n \t\t\t\tdie (\"Which directory?\");\n \t\t\tif (mkdir(argv[i + 1], 0777) < 0 && errno != EEXIST)\n@@ -173,6 +178,9 @@ int cmd_format_patch(int argc, const cha\n \t}\n \targc = j;\n \n+\tif (numbered && keep_subject < 0)\n+\t\tdie (\"-n and -k are mutually exclusive.\");\n+\n \targc = setup_revisions(argc, argv, &rev, \"HEAD\");\n \tif (argc > 1)\n \t\tdie (\"unrecognized argument: %s\", argv[1]);\n@@ -197,7 +205,7 @@ int cmd_format_patch(int argc, const cha\n \t\tcommit = list[nr];\n \t\trev.nr = total - nr;\n \t\tif (!use_stdout)\n-\t\t\treopen_stdout(commit, rev.nr);\n+\t\t\treopen_stdout(commit, rev.nr, keep_subject);\n \t\tshown = log_tree_commit(&rev, commit);\n \t\tfree(commit->buffer);\n \t\tcommit->buffer = NULL;\ndiff --git a/log-tree.c b/log-tree.c\nindex cec7068..526d578 100644\n--- a/log-tree.c\n+++ b/log-tree.c\n@@ -58,8 +58,11 @@ void show_log(struct rev_info *opt, stru\n \t\t\t\t\t\"Subject: [PATCH %d/%d] \",\n \t\t\t\t\topt->nr, opt->total);\n \t\t\tsubject = buffer;\n-\t\t} else\n+\t\t} else if (opt->total == 0)\n \t\t\tsubject = \"Subject: [PATCH] \";\n+\t\telse\n+\t\t\tsubject = \"Subject: \";\n+\n \t\tprintf(\"From %s  Thu Apr 7 15:13:13 2005\\n\",\n \t\t       sha1_to_hex(commit->object.sha1));\n \t} else {\n-- \n1.3.1.g5f039\n"}]}