Re: [PATCH 1/2] subtree: support GPG commit signing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx> wrote:
> 
> From: Jacques Vidrine <t@xxxxxxxxxxx>
> 
> 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@xxxxxxxxx>
> Signed-off-by: Jacques Vidrine <t@xxxxxxxxxxx>
> ---
> 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
> 





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux