* [PATCH 0/2] subtree: support GPG commit signing
@ 2023-04-10 17:01 Allen Reese via GitGitGadget
2023-04-10 17:01 ` [PATCH 1/2] " Jacques Vidrine via GitGitGadget
2023-04-10 17:01 ` [PATCH 2/2] contrib/subtree: fix gpg_sign_arg not being passed to git merge Allen Reese via GitGitGadget
0 siblings, 2 replies; 4+ messages in thread
From: Allen Reese via GitGitGadget @ 2023-04-10 17:01 UTC (permalink / raw)
To: git; +Cc: Allen Reese
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.
cc: Avery apenwarr@gmail.com
Allen Reese (1):
contrib/subtree: fix gpg_sign_arg not being passed to git merge.
Jacques Vidrine (1):
subtree: support GPG commit signing
contrib/subtree/git-subtree.sh | 36 ++++++++++++++++++++++++------
contrib/subtree/git-subtree.txt | 9 ++++++++
contrib/subtree/t/t7900-subtree.sh | 2 +-
3 files changed, 39 insertions(+), 8 deletions(-)
base-commit: 0607f793cbe0af16aee6d2480056d891835884bd
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1490%2Fareese%2Fgit-subtree-support-gpg-signing-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1490/areese/git-subtree-support-gpg-signing-v1
Pull-Request: https://github.com/git/git/pull/1490
--
gitgitgadget
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] subtree: support GPG commit signing
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
2023-04-10 17:59 ` 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
1 sibling, 1 reply; 4+ messages in thread
From: Jacques Vidrine via GitGitGadget @ 2023-04-10 17:01 UTC (permalink / raw)
To: git; +Cc: Allen Reese, Jacques Vidrine
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] contrib/subtree: fix gpg_sign_arg not being passed to git merge.
2023-04-10 17:01 [PATCH 0/2] subtree: support GPG commit signing Allen Reese via GitGitGadget
2023-04-10 17:01 ` [PATCH 1/2] " Jacques Vidrine via GitGitGadget
@ 2023-04-10 17:01 ` Allen Reese via GitGitGadget
1 sibling, 0 replies; 4+ messages in thread
From: Allen Reese via GitGitGadget @ 2023-04-10 17:01 UTC (permalink / raw)
To: git; +Cc: Allen Reese, Allen Reese
From: Allen Reese <allen_reese@apple.com>
Replace immitate -> imitate.
cc: Avery apenwarr@gmail.com
Signed-off-by: Allen Reese <allen_reese@apple.com>
---
contrib/subtree/git-subtree.sh | 14 +++++++++++---
contrib/subtree/t/t7900-subtree.sh | 2 +-
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 553b4391deb..18dc7f8a4c2 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -243,8 +243,16 @@ main () {
test -n "$allow_addmerge" || die_incompatible_opt "$opt" "$arg_command"
arg_addmerge_squash=
;;
- -S*|--gpg-sign=*|--no-gpg-sign)
+ -S|--gpg-sign|--no-gpg-sign)
arg_gpgsign="${opt}"
+ case $1 in
+ -*)
+ ;;
+ *)
+ arg_gpgsign=${opt}${1}
+ shift
+ ;;
+ esac
;;
--)
break
@@ -1053,10 +1061,10 @@ cmd_merge () {
if test -n "$arg_addmerge_message"
then
- git merge --no-ff -Xsubtree="$arg_prefix" \
+ git merge --no-ff $arg_gpgsign -Xsubtree="$arg_prefix" \
--message="$arg_addmerge_message" "$rev"
else
- git merge --no-ff -Xsubtree="$arg_prefix" $rev
+ git merge --no-ff $arg_gpgsign -Xsubtree="$arg_prefix" $rev
fi
}
diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh
index 341c169eca7..fa5bd9b7af6 100755
--- a/contrib/subtree/t/t7900-subtree.sh
+++ b/contrib/subtree/t/t7900-subtree.sh
@@ -47,7 +47,7 @@ last_commit_subject () {
# pre-2.32.0 versions of 'git subtree' would write the hash of the tag
# (sub1 below), instead of the commit (sub1^{commit}) in the
# "git-subtree-split" trailer.
-# We immitate this behaviour below using a replace ref.
+# We imitate this behaviour below using a replace ref.
# This function creates 3 repositories:
# - $1
# - $1-sub (added as subtree "sub" in $1)
--
gitgitgadget
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] subtree: support GPG commit signing
2023-04-10 17:01 ` [PATCH 1/2] " Jacques Vidrine via GitGitGadget
@ 2023-04-10 17:59 ` Allen Reese
0 siblings, 0 replies; 4+ messages in thread
From: Allen Reese @ 2023-04-10 17:59 UTC (permalink / raw)
To: git; +Cc: Jacques Vidrine, apenwarr, Jacques Vidrine via GitGitGadget
Adding Avery, as I don’t seem to have managed to cc Avery as part of the gitgadet pr.
> On Apr 10, 2023, at 10:01 AM, Jacques Vidrine via GitGitGadget <gitgitgadget@gmail.com> wrote:
>
> 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
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-04-10 19:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-10 17:01 [PATCH 0/2] subtree: support GPG commit signing Allen Reese via GitGitGadget
2023-04-10 17:01 ` [PATCH 1/2] " Jacques Vidrine via GitGitGadget
2023-04-10 17:59 ` 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
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).