From: Hans Jerry Illikainen <hji@dyntopia.com>
To: git@vger.kernel.org
Cc: Hans Jerry Illikainen <hji@dyntopia.com>
Subject: [PATCH 1/1] commit: make the sign-off trailer configurable
Date: Sun, 5 Jan 2020 17:41:27 +0000 [thread overview]
Message-ID: <20200105174127.9278-2-hji@dyntopia.com> (raw)
In-Reply-To: <20200105174127.9278-1-hji@dyntopia.com>
The commit builtin did not previously have a configuration option to
enable the 'Signed-off-by' trailer by default.
For some use-cases (namely, when the user doesn't always have the right
to contribute patches to a project) it makes sense to make it a
conscientious decision to add the signoff trailer. However, others'
might always have the right to ship patches -- in which case it makes
sense to have an option to add the trailer by default for projects that
require it.
This patch introduces a commit.signOff configuration option that
determine whether the trailer should be added for commits. It can be
overridden with the --(no-)signoff command-line option.
Signed-off-by: Hans Jerry Illikainen <hji@dyntopia.com>
---
Documentation/config/commit.txt | 8 ++++++++
Documentation/git-commit.txt | 4 ++++
builtin/commit.c | 4 ++++
t/t7502-commit-porcelain.sh | 36 +++++++++++++++++++++++++++++++++
4 files changed, 52 insertions(+)
diff --git a/Documentation/config/commit.txt b/Documentation/config/commit.txt
index 2c95573930..6ebfe384ac 100644
--- a/Documentation/config/commit.txt
+++ b/Documentation/config/commit.txt
@@ -15,6 +15,14 @@ commit.gpgSign::
convenient to use an agent to avoid typing your GPG passphrase
several times.
+commit.signOff::
+ A boolean to specify whether commits should enable the
+ `-s/--signoff` option by default. *Note:* Adding the
+ Signed-off-by: line to a commit message should be a conscious
+ act and means that you certify you have the rights to submit the
+ work under the same open source license. Please see the
+ 'SubmittingPatches' document for further discussion.
+
commit.status::
A boolean to enable/disable inclusion of status information in the
commit message template when using an editor to prepare the commit
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index ced5a9beab..61a362770d 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -165,12 +165,16 @@ The `-m` option is mutually exclusive with `-c`, `-C`, and `-F`.
-s::
--signoff::
+--no-signoff::
Add Signed-off-by line by the committer at the end of the commit
log message. The meaning of a signoff depends on the project,
but it typically certifies that committer has
the rights to submit this work under the same license and
agrees to a Developer Certificate of Origin
(see http://developercertificate.org/ for more information).
+ This option can be enabled by default with the `commit.signOff`
+ configuration option, in which case it can be disabled
+ temporarily with `--no-signoff`.
-n::
--no-verify::
diff --git a/builtin/commit.c b/builtin/commit.c
index c70ad01cc9..497e29c58c 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1474,6 +1474,10 @@ static int git_commit_config(const char *k, const char *v, void *cb)
sign_commit = git_config_bool(k, v) ? "" : NULL;
return 0;
}
+ if (!strcmp(k, "commit.signoff")) {
+ signoff = git_config_bool(k, v);
+ return 0;
+ }
if (!strcmp(k, "commit.verbose")) {
int is_bool;
config_commit_verbose = git_config_bool_or_int(k, v, &is_bool);
diff --git a/t/t7502-commit-porcelain.sh b/t/t7502-commit-porcelain.sh
index 14c92e4c25..7510325698 100755
--- a/t/t7502-commit-porcelain.sh
+++ b/t/t7502-commit-porcelain.sh
@@ -151,6 +151,42 @@ test_expect_success 'sign off' '
'
+test_expect_success 'commit.signOff=true' '
+ test_config commit.signOff true &&
+ echo 1 >>positive &&
+ git add positive &&
+ git commit -m "thank you" &&
+ git cat-file commit HEAD >commit.msg &&
+ sed -ne "s/Signed-off-by: //p" commit.msg >actual &&
+ git var GIT_COMMITTER_IDENT >ident &&
+ sed -e "s/>.*/>/" ident >expected &&
+ test_cmp expected actual
+'
+
+test_expect_success 'commit.signOff=true and --no-signoff' '
+ test_config commit.signOff true &&
+ echo 2 >>positive &&
+ git add positive &&
+ git commit --no-signoff -m "thank you" &&
+ git cat-file commit HEAD >commit.msg &&
+ sed -ne "s/Signed-off-by: //p" commit.msg >actual &&
+ git var GIT_COMMITTER_IDENT >ident &&
+ sed -e "s/>.*/>/" ident >expected &&
+ ! test_cmp expected actual
+'
+
+test_expect_success 'commit.signOff=false and --signoff' '
+ test_config commit.signOff false &&
+ echo 1 >>positive &&
+ git add positive &&
+ git commit --signoff -m "thank you" &&
+ git cat-file commit HEAD >commit.msg &&
+ sed -ne "s/Signed-off-by: //p" commit.msg >actual &&
+ git var GIT_COMMITTER_IDENT >ident &&
+ sed -e "s/>.*/>/" ident >expected &&
+ test_cmp expected actual
+'
+
test_expect_success 'multiple -m' '
>negative &&
--
2.25.0.rc1.298.g45d5f025e1
next prev parent reply other threads:[~2020-01-05 17:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-05 17:41 [PATCH 0/1] commit: make the sign-off trailer configurable Hans Jerry Illikainen
2020-01-05 17:41 ` Hans Jerry Illikainen [this message]
2020-01-06 13:38 ` [PATCH 1/1] " Derrick Stolee
2020-01-06 16:53 ` Junio C Hamano
2020-01-06 19:53 ` Derrick Stolee
2020-01-06 20:31 ` Junio C Hamano
2020-01-06 20:45 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200105174127.9278-2-hji@dyntopia.com \
--to=hji@dyntopia.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).