From: "Jacques Vidrine via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Allen Reese <java.allen@apple.com>, Jacques Vidrine <t@fboundp.com>
Subject: [PATCH 1/2] subtree: support GPG commit signing
Date: Mon, 10 Apr 2023 17:01:46 +0000 [thread overview]
Message-ID: <ffbdcf9db686cdd786e21add6ca194c2dbdafa3b.1681146107.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1490.git.git.1681146107.gitgitgadget@gmail.com>
From: Jacques Vidrine <t@fboundp.com>
Add support for -S/--gpg-sign/--no-gpg-sign command line options
and commit.gpgsign configuration. These are passed to invocations
of `git commit-tree`.
Signed-off-by: Allen Reese <java.allen@apple.com>
Signed-off-by: Jacques Vidrine <t@fboundp.com>
---
contrib/subtree/git-subtree.sh | 24 +++++++++++++++++++-----
contrib/subtree/git-subtree.txt | 9 +++++++++
2 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 10c9c87839a..553b4391deb 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -46,6 +46,8 @@ rejoin merge the new branch back into HEAD
options for 'add' and 'merge' (also: 'pull', 'split --rejoin', and 'push --rejoin')
squash merge subtree changes as a single commit
m,message= use the given message as the commit message for the merge commit
+S,gpg-sign? GPG-sign commits, optionally specifying keyid.
+no-gpg-sign Disable GPG commit signing.
"
indent=0
@@ -165,6 +167,7 @@ main () {
arg_quiet=
arg_debug=
arg_prefix=
+ arg_gpgsign=
arg_split_branch=
arg_split_onto=
arg_split_ignore_joins=
@@ -240,6 +243,9 @@ main () {
test -n "$allow_addmerge" || die_incompatible_opt "$opt" "$arg_command"
arg_addmerge_squash=
;;
+ -S*|--gpg-sign=*|--no-gpg-sign)
+ arg_gpgsign="${opt}"
+ ;;
--)
break
;;
@@ -268,6 +274,12 @@ main () {
dir="$(dirname "$arg_prefix/.")"
+ if test -z "$arg_gpgsign" &&
+ git config --bool commit.gpgsign >/dev/null
+ then
+ arg_gpgsign="-S"
+ fi
+
debug "command: {$arg_command}"
debug "quiet: {$arg_quiet}"
debug "dir: {$dir}"
@@ -534,7 +546,7 @@ copy_commit () {
printf "%s" "$arg_split_annotate"
cat
) |
- git commit-tree "$2" $3 # reads the rest of stdin
+ git commit-tree $arg_gpgsign "$2" $3 # reads the rest of stdin
) || die "fatal: can't copy commit $1"
}
@@ -674,10 +686,10 @@ new_squash_commit () {
if test -n "$old"
then
squash_msg "$dir" "$oldsub" "$newsub" |
- git commit-tree "$tree" -p "$old" || exit $?
+ git commit-tree $arg_gpgsign "$tree" -p "$old" || exit $?
else
squash_msg "$dir" "" "$newsub" |
- git commit-tree "$tree" || exit $?
+ git commit-tree $arg_gpgsign "$tree" || exit $?
fi
}
@@ -900,11 +912,13 @@ cmd_add_commit () {
then
rev=$(new_squash_commit "" "" "$rev") || exit $?
commit=$(add_squashed_msg "$rev" "$dir" |
- git commit-tree "$tree" $headp -p "$rev") || exit $?
+ git commit-tree $arg_gpgsign "$tree" \
+ $headp -p "$rev") || exit $?
else
revp=$(peel_committish "$rev") || exit $?
commit=$(add_msg "$dir" $headrev "$rev" |
- git commit-tree "$tree" $headp -p "$revp") || exit $?
+ git commit-tree $arg_gpgsign "$tree" \
+ $headp -p "$revp") || exit $?
fi
git reset "$commit" || exit $?
diff --git a/contrib/subtree/git-subtree.txt b/contrib/subtree/git-subtree.txt
index 004abf415b8..fa54541b288 100644
--- a/contrib/subtree/git-subtree.txt
+++ b/contrib/subtree/git-subtree.txt
@@ -185,6 +185,15 @@ subproject.
--message=<message>::
Specify <message> as the commit message for the merge commit.
+-S[<keyid>]::
+--gpg-sign[=<keyid>]::
+--no-gpg-sign::
+ GPG-sign commits. The `keyid` argument is optional and
+ defaults to the committer identity; if specified, it must be
+ stuck to the option without a space. `--no-gpg-sign` is useful to
+ countermand both `commit.gpgSign` configuration variable, and
+ earlier `--gpg-sign`.
+
OPTIONS FOR 'split' (ALSO: 'push')
----------------------------------
These options for 'split' may also be given to 'push' (which wraps
--
gitgitgadget
next prev parent reply other threads:[~2023-04-10 17:01 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-10 17:01 [PATCH 0/2] subtree: support GPG commit signing Allen Reese via GitGitGadget
2023-04-10 17:01 ` Jacques Vidrine via GitGitGadget [this message]
2023-04-10 17:59 ` [PATCH 1/2] " Allen Reese
2023-04-10 17:01 ` [PATCH 2/2] contrib/subtree: fix gpg_sign_arg not being passed to git merge Allen Reese via GitGitGadget
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ffbdcf9db686cdd786e21add6ca194c2dbdafa3b.1681146107.git.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=java.allen@apple.com \
--cc=t@fboundp.com \
/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.
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).