Skip to content

Commit

Permalink
Merge branch 'sb/format-patch-signature'
Browse files Browse the repository at this point in the history
* sb/format-patch-signature:
  completion: Add --signature and format.signature
  format-patch: Add a signature option (--signature)
  • Loading branch information
Junio C Hamano committed Jun 22, 2010
2 parents 223a923 + d8e1e5d commit 6bead0c
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 4 deletions.
6 changes: 6 additions & 0 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -889,6 +889,12 @@ format.subjectprefix::
The default for format-patch is to output files with the '[PATCH]'
subject prefix. Use this variable to change that prefix.

format.signature::
The default for format-patch is to output a signature containing
the git version number. Use this variable to change that default.
Set this variable to the empty string ("") to suppress
signature generation.

format.suffix::
The default for format-patch is to output files with the suffix
`.patch`. Use this variable to change that suffix (make sure to
Expand Down
7 changes: 7 additions & 0 deletions Documentation/git-format-patch.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ SYNOPSIS
[--no-thread | --thread[=<style>]]
[(--attach|--inline)[=<boundary>] | --no-attach]
[-s | --signoff]
[--signature=<signature> | --no-signature]
[-n | --numbered | -N | --no-numbered]
[--start-number <n>] [--numbered-files]
[--in-reply-to=Message-Id] [--suffix=.<sfx>]
Expand Down Expand Up @@ -180,6 +181,12 @@ will want to ensure that threading is disabled for `git send-email`.
containing the shortlog and the overall diffstat. You can
fill in a description in the file before sending it out.

--[no]-signature=<signature>::
Add a signature to each message produced. Per RFC 3676 the signature
is separated from the body by a line with '-- ' on it. If the
signature option is omitted the signature defaults to the git version
number.

--suffix=.<sfx>::
Instead of using `.patch` as the suffix for generated
filenames, use specified suffix. A common alternative is
Expand Down
18 changes: 15 additions & 3 deletions builtin/log.c
Original file line number Diff line number Diff line change
Expand Up @@ -549,8 +549,9 @@ static void add_header(const char *value)

#define THREAD_SHALLOW 1
#define THREAD_DEEP 2
static int thread = 0;
static int do_signoff = 0;
static int thread;
static int do_signoff;
static const char *signature = git_version_string;

static int git_format_config(const char *var, const char *value, void *cb)
{
Expand Down Expand Up @@ -609,6 +610,8 @@ static int git_format_config(const char *var, const char *value, void *cb)
do_signoff = git_config_bool(var, value);
return 0;
}
if (!strcmp(var, "format.signature"))
return git_config_string(&signature, var, value);

return git_log_config(var, value, cb);
}
Expand Down Expand Up @@ -703,6 +706,12 @@ static void gen_message_id(struct rev_info *info, char *base)
info->message_id = strbuf_detach(&buf, NULL);
}

static void print_signature(void)
{
if (signature && *signature)
printf("-- \n%s\n\n", signature);
}

static void make_cover_letter(struct rev_info *rev, int use_stdout,
int numbered, int numbered_files,
struct commit *origin,
Expand Down Expand Up @@ -796,6 +805,7 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout,
diff_flush(&opts);

printf("\n");
print_signature();
}

static const char *clean_message_id(const char *msg_id)
Expand Down Expand Up @@ -1035,6 +1045,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
{ OPTION_CALLBACK, 0, "thread", &thread, "style",
"enable message threading, styles: shallow, deep",
PARSE_OPT_OPTARG, thread_callback },
OPT_STRING(0, "signature", &signature, "signature",
"add a signature"),
OPT_END()
};

Expand Down Expand Up @@ -1313,7 +1325,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
mime_boundary_leader,
rev.mime_boundary);
else
printf("-- \n%s\n\n", git_version_string);
print_signature();
}
if (!use_stdout)
fclose(stdout);
Expand Down
3 changes: 2 additions & 1 deletion contrib/completion/git-completion.bash
Original file line number Diff line number Diff line change
Expand Up @@ -1052,7 +1052,7 @@ _git_format_patch ()
--numbered --start-number
--numbered-files
--keep-subject
--signoff
--signoff --signature --no-signature
--in-reply-to= --cc=
--full-index --binary
--not --all
Expand Down Expand Up @@ -1726,6 +1726,7 @@ _git_config ()
format.headers
format.numbered
format.pretty
format.signature
format.signoff
format.subjectprefix
format.suffix
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ A U Thor (2):
create mode 100644 file1
delete mode 100644 file2

--
g-i-t--v-e-r-s-i-o-n

From 1bde4ae5f36c8d9abe3a0fce0c6aab3c4a12fe44 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Mon, 26 Jun 2006 00:01:00 +0000
Expand Down
52 changes: 52 additions & 0 deletions t/t4014-format-patch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -613,4 +613,56 @@ test_expect_success 'format-patch --ignore-if-in-upstream HEAD' '
git format-patch --ignore-if-in-upstream HEAD
'

test_expect_success 'format-patch --signature' '
git format-patch --stdout --signature="my sig" -1 >output &&
grep "my sig" output
'

test_expect_success 'format-patch with format.signature config' '
git config format.signature "config sig" &&
git format-patch --stdout -1 >output &&
grep "config sig" output
'

test_expect_success 'format-patch --signature overrides format.signature' '
git config format.signature "config sig" &&
git format-patch --stdout --signature="overrides" -1 >output &&
! grep "config sig" output &&
grep "overrides" output
'

test_expect_success 'format-patch --no-signature ignores format.signature' '
git config format.signature "config sig" &&
git format-patch --stdout --signature="my sig" --no-signature \
-1 >output &&
! grep "config sig" output &&
! grep "my sig" output &&
! grep "^-- \$" output
'

test_expect_success 'format-patch --signature --cover-letter' '
git config --unset-all format.signature &&
git format-patch --stdout --signature="my sig" --cover-letter \
-1 >output &&
grep "my sig" output &&
test 2 = $(grep "my sig" output | wc -l)
'

test_expect_success 'format.signature="" supresses signatures' '
git config format.signature "" &&
git format-patch --stdout -1 >output &&
! grep "^-- \$" output
'

test_expect_success 'format-patch --no-signature supresses signatures' '
git config --unset-all format.signature &&
git format-patch --stdout --no-signature -1 >output &&
! grep "^-- \$" output
'

test_expect_success 'format-patch --signature="" supresses signatures' '
git format-patch --signature="" -1 >output &&
! grep "^-- \$" output
'

test_done

0 comments on commit 6bead0c

Please sign in to comment.