* [PATCH] format-patch: Add configuration and off switch for --numbered
@ 2007-11-04 3:38 Brian Gernhardt
2007-11-04 4:40 ` Junio C Hamano
0 siblings, 1 reply; 4+ messages in thread
From: Brian Gernhardt @ 2007-11-04 3:38 UTC (permalink / raw)
To: git
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@silverinsanity.com>
---
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] format-patch: Add configuration and off switch for --numbered
2007-11-04 3:38 [PATCH] format-patch: Add configuration and off switch for --numbered Brian Gernhardt
@ 2007-11-04 4:40 ` Junio C Hamano
2007-11-04 4:54 ` Brian Gernhardt
0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2007-11-04 4:40 UTC (permalink / raw)
To: Brian Gernhardt; +Cc: git
The change looks good. Tests needed.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] format-patch: Add configuration and off switch for --numbered
2007-11-04 4:40 ` Junio C Hamano
@ 2007-11-04 4:54 ` Brian Gernhardt
2007-11-04 5:50 ` [PATCH 2/1] format-patch: Test --[no-]numbered and format.numbered Brian Gernhardt
0 siblings, 1 reply; 4+ messages in thread
From: Brian Gernhardt @ 2007-11-04 4:54 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Nov 4, 2007, at 12:40 AM, Junio C Hamano wrote:
> The change looks good. Tests needed.
Thought so. Somebody's not happy. ;-)
I was going to modify the existing tests for --numbered, but
discovered that there were none. Having nothing to start with, I
didn't add.
That said, I'll try to hack something up.
~~ Brian
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/1] format-patch: Test --[no-]numbered and format.numbered
2007-11-04 4:54 ` Brian Gernhardt
@ 2007-11-04 5:50 ` Brian Gernhardt
0 siblings, 0 replies; 4+ messages in thread
From: Brian Gernhardt @ 2007-11-04 5:50 UTC (permalink / raw)
To: git
Just because there wasn't a test for --numbered isn't a good reason
not to test format.numbered. So now we test both.
Signed-off-by: Brian Gernhardt <benji@silverinsanity.com>
---
And here's that something I hacked up. Hmm... that doesn't sound
sanitary.
As a side note, send-email is hard to troubleshoot. Is there a way to
get it to give more than "your setup doesn't work"? And is the pile of
warnings (mostly "Use of uninitialized value") in Term::Readline just a
problem in my setup? I tried to use it instead of mutt and did not
have a happy experience.
t/t4021-format-patch-numbered.sh | 106 ++++++++++++++++++++++++++++++++++++++
1 files changed, 106 insertions(+), 0 deletions(-)
create mode 100755 t/t4021-format-patch-numbered.sh
diff --git a/t/t4021-format-patch-numbered.sh b/t/t4021-format-patch-numbered.sh
new file mode 100755
index 0000000..43d64bb
--- /dev/null
+++ b/t/t4021-format-patch-numbered.sh
@@ -0,0 +1,106 @@
+#!/bin/sh
+#
+# Copyright (c) 2006 Brian C Gernhardt
+#
+
+test_description='Format-patch numbering options'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+
+ echo A > file &&
+ git add file &&
+ git commit -m First &&
+
+ echo B >> file &&
+ git commit -a -m Second &&
+
+ echo C >> file &&
+ git commit -a -m Third
+
+'
+
+# Each of these gets used multiple times.
+
+test_num_no_numbered() {
+ cnt=$(grep "^Subject: \[PATCH\]" $1 | wc -l) &&
+ test $cnt = $2
+}
+
+test_single_no_numbered() {
+ test_num_no_numbered $1 1
+}
+
+test_no_numbered() {
+ test_num_no_numbered $1 2
+}
+
+test_single_numbered() {
+ grep "^Subject: \[PATCH 1/1\]" $1
+}
+
+test_numbered() {
+ grep "^Subject: \[PATCH 1/2\]" $1 &&
+ grep "^Subject: \[PATCH 2/2\]" $1
+}
+
+test_expect_success 'Default: no numbered' '
+
+ git format-patch --stdout HEAD~2 >patch0 &&
+ test_no_numbered patch0
+
+'
+
+test_expect_success 'Use --numbered' '
+
+ git format-patch --numbered --stdout HEAD~2 >patch1 &&
+ test_numbered patch1
+
+'
+
+test_expect_success 'format.numbered = true' '
+
+ git config format.numbered true &&
+ git format-patch --stdout HEAD~2 >patch2 &&
+ test_numbered patch2
+
+'
+
+test_expect_success 'format.numbered && single patch' '
+
+ git format-patch --stdout HEAD^ > patch3 &&
+ test_single_numbered patch3
+
+'
+
+test_expect_success 'format.numbered && --no-numbered' '
+
+ git format-patch --no-numbered --stdout HEAD~2 >patch4 &&
+ test_no_numbered patch4
+
+'
+
+test_expect_success 'format.numbered = auto' '
+
+ git config format.numbered auto
+ git format-patch --stdout HEAD~2 > patch5 &&
+ test_numbered patch5
+
+'
+
+test_expect_success 'format.numbered = auto && single patch' '
+
+ git format-patch --stdout HEAD^ > patch6 &&
+ test_single_no_numbered patch6
+
+'
+
+test_expect_success 'format.numbered = auto && --no-numbered' '
+
+ git format-patch --no-numbered --stdout HEAD~2 > patch7 &&
+ test_no_numbered patch7
+
+'
+
+test_done
--
1.5.3.5.530.gcd7a
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-11-04 5:50 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-04 3:38 [PATCH] format-patch: Add configuration and off switch for --numbered Brian Gernhardt
2007-11-04 4:40 ` Junio C Hamano
2007-11-04 4:54 ` Brian Gernhardt
2007-11-04 5:50 ` [PATCH 2/1] format-patch: Test --[no-]numbered and format.numbered Brian Gernhardt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).