[PATCH] format-patch: Add configuration and off switch for --numbered

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

 



format.numbered is a tri-state variable.  Boolean values enable or
disable numbering by default and "auto" enables number when outputting
more than one patch.

--no-numbered (short: -N) will disable numbering.

Signed-off-by: Brian Gernhardt <benji@xxxxxxxxxxxxxxxxxx>
---

 Pick your own numbering adventure.  Should make everyone happy, but
 will probably do the exact opposite.  So it goes.

 Documentation/config.txt           |    6 ++++++
 Documentation/git-format-patch.txt |   12 ++++++++----
 builtin-log.c                      |   19 ++++++++++++++++++-
 3 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index edf50cd..c2f9f14 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -432,6 +432,12 @@ fetch.unpackLimit::
 	pack from a push can make the push operation complete faster,
 	especially on slow filesystems.
 
+format.numbered::
+	A boolean which can enable sequence numbers in patch subjects.
+	Seting this option to "auto" will enable it only if there is
+	more than one patch.  See --numbered option in
+	gitlink:git-format-patch[1].
+
 format.headers::
 	Additional email headers to include in a patch to be submitted
 	by mail.  See gitlink:git-format-patch[1].
diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index f0617ef..92c0ab6 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -9,7 +9,7 @@ git-format-patch - Prepare patches for e-mail submission
 SYNOPSIS
 --------
 [verse]
-'git-format-patch' [-n | -k] [-o <dir> | --stdout] [--thread]
+'git-format-patch' [-n | -N | -k] [-o <dir> | --stdout] [--thread]
                    [--attach[=<boundary>] | --inline[=<boundary>]]
                    [-s | --signoff] [<common diff options>]
                    [--start-number <n>] [--numbered-files]
@@ -77,6 +77,9 @@ include::diff-options.txt[]
 -n|--numbered::
 	Name output in '[PATCH n/m]' format.
 
+-N|--no-numbered::
+	Name output in '[PATCH]' format.
+
 --start-number <n>::
 	Start numbering the patches at <n> instead of 1.
 
@@ -142,15 +145,16 @@ not add any suffix.
 
 CONFIGURATION
 -------------
-You can specify extra mail header lines to be added to each
-message in the repository configuration.  You can also specify
-new defaults for the subject prefix and file suffix.
+You can specify extra mail header lines to be added to each message
+in the repository configuration, new defaults for the subject prefix
+and file suffix, and number patches when outputting more than one.
 
 ------------
 [format]
         headers = "Organization: git-foo\n"
         subjectprefix = CHANGE
         suffix = .txt
+        numbered = auto
 ------------
 
 
diff --git a/builtin-log.c b/builtin-log.c
index e8b982d..22afa1a 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -273,6 +273,8 @@ static int istitlechar(char c)
 static char *extra_headers = NULL;
 static int extra_headers_size = 0;
 static const char *fmt_patch_suffix = ".patch";
+static int numbered = 0;
+static int auto_number = 0;
 
 static int git_format_config(const char *var, const char *value)
 {
@@ -297,6 +299,15 @@ static int git_format_config(const char *var, const char *value)
 	if (!strcmp(var, "diff.color") || !strcmp(var, "color.diff")) {
 		return 0;
 	}
+	if (!strcmp(var, "format.numbered")) {
+		if (!strcasecmp(value, "auto")) {
+			auto_number = 1;
+			return 0;
+		}
+
+		numbered = git_config_bool(var, value);
+		return 0;
+	}
 
 	return git_log_config(var, value);
 }
@@ -466,7 +477,6 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 	struct rev_info rev;
 	int nr = 0, total, i, j;
 	int use_stdout = 0;
-	int numbered = 0;
 	int start_number = -1;
 	int keep_subject = 0;
 	int numbered_files = 0;		/* _just_ numbers */
@@ -503,6 +513,11 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 		else if (!strcmp(argv[i], "-n") ||
 				!strcmp(argv[i], "--numbered"))
 			numbered = 1;
+		else if (!strcmp(argv[i], "-N") ||
+				!strcmp(argv[i], "--no-numbered")) {
+			numbered = 0;
+			auto_number = 0;
+		}
 		else if (!prefixcmp(argv[i], "--start-number="))
 			start_number = strtol(argv[i] + 15, NULL, 10);
 		else if (!strcmp(argv[i], "--numbered-files"))
@@ -642,6 +657,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 		list[nr - 1] = commit;
 	}
 	total = nr;
+	if (!keep_subject && auto_number && total > 1)
+		numbered = 1;
 	if (numbered)
 		rev.total = total + start_number - 1;
 	rev.add_signoff = add_signoff;
-- 
1.5.3.5.529.ge3d6d-dirty

-
To unsubscribe from this list: 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]

  Powered by Linux