* [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
* 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
* [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
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).