[PATCH] Teach fmt-patch about --keep-subject

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Johannes Schindelin <Johannes.Schindelin@xxxxxx>

---

 builtin-log.c |   16 ++++++++++++----
 log-tree.c    |    5 ++++-
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/builtin-log.c b/builtin-log.c
index 43c7ecd..0027998 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -78,7 +78,7 @@ static int istitlechar(char c)
 static FILE *realstdout = NULL;
 static char *output_directory = NULL;
 
-static void reopen_stdout(struct commit *commit, int nr)
+static void reopen_stdout(struct commit *commit, int nr, int keep_subject)
 {
 	char filename[1024];
 	char *sol;
@@ -100,7 +100,7 @@ static void reopen_stdout(struct commit 
 
 		sol += 2;
 		/* strip [PATCH] or [PATCH blabla] */
-		if (!strncmp(sol, "[PATCH", 6)) {
+		if (!keep_subject && !strncmp(sol, "[PATCH", 6)) {
 			char *eos = strchr(sol + 6, ']');
 			if (eos) {
 				while (isspace(*eos))
@@ -138,6 +138,7 @@ int cmd_format_patch(int argc, const cha
 	int nr = 0, total, i, j;
 	int use_stdout = 0;
 	int numbered = 0;
+	int keep_subject = 0;
 
 	init_revisions(&rev);
 	rev.commit_format = CMIT_FMT_EMAIL;
@@ -160,7 +161,11 @@ int cmd_format_patch(int argc, const cha
 		else if (!strcmp(argv[i], "-n") ||
 				!strcmp(argv[i], "--numbered"))
 			numbered = 1;
-		else if (!strcmp(argv[i], "-o")) {
+		else if (!strcmp(argv[i], "-k") ||
+				!strcmp(argv[i], "--keep-subject")) {
+			keep_subject = 1;
+			rev.total = -1;
+		} else if (!strcmp(argv[i], "-o")) {
 			if (argc < 3)
 				die ("Which directory?");
 			if (mkdir(argv[i + 1], 0777) < 0 && errno != EEXIST)
@@ -173,6 +178,9 @@ int cmd_format_patch(int argc, const cha
 	}
 	argc = j;
 
+	if (numbered && keep_subject < 0)
+		die ("-n and -k are mutually exclusive.");
+
 	argc = setup_revisions(argc, argv, &rev, "HEAD");
 	if (argc > 1)
 		die ("unrecognized argument: %s", argv[1]);
@@ -197,7 +205,7 @@ int cmd_format_patch(int argc, const cha
 		commit = list[nr];
 		rev.nr = total - nr;
 		if (!use_stdout)
-			reopen_stdout(commit, rev.nr);
+			reopen_stdout(commit, rev.nr, keep_subject);
 		shown = log_tree_commit(&rev, commit);
 		free(commit->buffer);
 		commit->buffer = NULL;
diff --git a/log-tree.c b/log-tree.c
index cec7068..526d578 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -58,8 +58,11 @@ void show_log(struct rev_info *opt, stru
 					"Subject: [PATCH %d/%d] ",
 					opt->nr, opt->total);
 			subject = buffer;
-		} else
+		} else if (opt->total == 0)
 			subject = "Subject: [PATCH] ";
+		else
+			subject = "Subject: ";
+
 		printf("From %s  Thu Apr 7 15:13:13 2005\n",
 		       sha1_to_hex(commit->object.sha1));
 	} else {
-- 
1.3.1.g5f039

-
: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]