Skip to content
  • Junio C Hamano's avatar
    commit-tree: do not pay attention to commit.gpgsign · 66948561
    Junio C Hamano authored
    ba3c69a9
    
     (commit: teach --gpg-sign option, 2011-10-05) introduced a
    "signed commit" by teaching the --[no]-gpg-sign option and the
    commit.gpgsign configuration variable to various commands that
    create commits.
    
    Teaching these to "git commit" and "git merge", both of which are
    end-user facing Porcelain commands, was perfectly fine.  Allowing
    the plumbing "git commit-tree" to suddenly change the behaviour to
    surprise the scripts by paying attention to commit.gpgsign was not.
    
    Among the in-tree scripts, filter-branch, quiltimport, rebase and
    stash are the commands that run "commit-tree".  If any of these
    wants to allow users to always sign every single commit, they should
    offer their own configuration (e.g. "filterBranch.gpgsign") with an
    option to disable signing (e.g. "git filter-branch --no-gpgsign").
    
    Ignoring commit.gpgsign option _obviously_ breaks the backward
    compatibility, but it is easy to follow the standard pattern in
    scripts to honor whatever configuration variable they choose to
    follow.  E.g.
    
    	case $(git config --bool commit.gpgsign) in
    	true) sign=-S ;;
    	*) sign= ;;
    	esac &&
    	git commit-tree $sign ...whatever other args...
    
    Do so to make sure that "git rebase" keeps paying attention to the
    configuration variable, which unfortunately is a documented mistake.
    
    Helped-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    66948561