git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 9/9] pull: add the --gpg-sign option.

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 27, 2014, 23:31 UTC
Message-ID
<xmqqlhy1m27b.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1390524666-51274-10-git-send-email-sandals@crustytoothpaste.net>
"brian m. carlson" <sandals@crustytoothpaste.net> writes:
Show 23 quoted lines
> git merge already allows us to sign commits, and git rebase has recently
> learned how to do so as well.  Teach git pull to parse the -S/--gpg-sign
> option and pass this along to merge or rebase, as appropriate.
>
> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
> ---
>  git-pull.sh | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/git-pull.sh b/git-pull.sh
> index 0a5aa2c..4164dac 100755
> --- a/git-pull.sh
> +++ b/git-pull.sh
> @@ -138,6 +138,15 @@ do
>  	--no-verify-signatures)
>  		verify_signatures=--no-verify-signatures
>  		;;
> +	--gpg-sign|-S)
> +		gpg_sign_args=-S
> +		;;
> +	--gpg-sign=*)
> +		gpg_sign_args="-S${1#--gpg-sign=}"
> +		;;
Here, $1 is taken from the end-user without any extra quoting...
Show 11 quoted lines
> +	-S*)
> +		gpg_sign_args="-S${1#-S}"
> +		;;
>  	--d|--dr|--dry|--dry-|--dry-r|--dry-ru|--dry-run)
>  		dry_run=--dry-run
>  		;;
> @@ -305,11 +314,13 @@ merge_name=$(git fmt-merge-msg $log_arg <"$GIT_DIR/FETCH_HEAD") || exit
>  case "$rebase" in
>  true)
>  	eval="git-rebase $diffstat $strategy_args $merge_args $rebase_args $verbosity"
> +	eval="$eval $gpg_sign_args"

... but here it is used as if it is properly quoted so that later "eval $eval" will take it as a single argument.

	git pull --gpg-sign='foo bar'

will probably ask the command to use 'foo' as the signer key id, with 'bar' as an extra, unknown token on the command line of the underlying 'git merge', I suspect. A "git rev-parse --sq-quote" in the earlier hunk may be all it takes to fix it.

Thanks.
Show 10 quoted lines
>  	eval="$eval --onto $merge_head ${oldremoteref:-$merge_head}"
>  	;;
>  *)
>  	eval="git-merge $diffstat $no_commit $verify_signatures $edit $squash $no_ff $ff_only"
> -	eval="$eval  $log_arg $strategy_args $merge_args $verbosity $progress"
> +	eval="$eval $log_arg $strategy_args $merge_args $verbosity $progress"
> +	eval="$eval $gpg_sign_args"
>  	eval="$eval \"\$merge_name\" HEAD $merge_head"
>  	;;
>  esac
Previous: brian m. carlsonNext: brian m. carlson
Message 18 of 22 in “add --gpg-sign to rebase and pull”
  1. 0/9 add --gpg-sign to rebase and pullbrian m. carlson, Jan 24, 2014
  2. 1/9 cherry-pick, revert: add the --gpg-sign optionbrian m. carlson, Jan 24, 2014
  3. Junio C HamanoJan 24, 2014
  4. brian m. carlsonJan 24, 2014
  5. Junio C HamanoJan 24, 2014
  6. 2/9 git-sh-setup.sh: add variable to use the stuck-long modebrian m. carlson, Jan 24, 2014
  7. Junio C HamanoJan 27, 2014
  8. 3/9 am: parse options in stuck-long modebrian m. carlson, Jan 24, 2014
  9. 4/9 am: add the --gpg-sign optionbrian m. carlson, Jan 24, 2014
  10. Junio C HamanoJan 27, 2014
  11. 5/9 rebase: remove useless arguments checkbrian m. carlson, Jan 24, 2014
  12. 6/9 rebase: don't try to match -M optionbrian m. carlson, Jan 24, 2014
  13. 7/9 rebase: parse options in stuck-long modebrian m. carlson, Jan 24, 2014
  14. 8/9 rebase: add the --gpg-sign optionbrian m. carlson, Jan 24, 2014
  15. Junio C HamanoJan 27, 2014
  16. brian m. carlsonJan 27, 2014
  17. 9/9 pull: add the --gpg-sign option.brian m. carlson, Jan 24, 2014
  18. Junio C HamanoJan 27, 2014
  19. brian m. carlsonFeb 1, 2014
  20. Junio C HamanoFeb 3, 2014
  21. Nicolas VigierJan 24, 2014
  22. Junio C HamanoJan 24, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.