1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-19 18:46:09 +02:00

Merge branch 'jc/commit-tree-ignore-commit-gpgsign'

"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake.  Rework "git rebase" that
relied on this mistake so that it reads commit.gpgsign and pass (or
not pass) the -S option to "git commit-tree" to keep the end-user
expectation the same, while teaching "git commit-tree" to ignore
the configuration variable.  This will stop requiring the users to
sign commit objects used internally as an implementation detail of
"git stash".

* jc/commit-tree-ignore-commit-gpgsign:
  commit-tree: do not pay attention to commit.gpgsign
This commit is contained in:
Junio C Hamano 2016-05-13 13:18:27 -07:00
commit 50b26f5612
4 changed files with 16 additions and 10 deletions

View File

@ -61,8 +61,8 @@ OPTIONS
stuck to the option without a space.
--no-gpg-sign::
Countermand `commit.gpgSign` configuration variable that is
set to force each and every commit to be signed.
Do not GPG-sign commit, to countermand a `--gpg-sign` option
given earlier on the command line.
Commit Information

View File

@ -33,10 +33,6 @@ static int commit_tree_config(const char *var, const char *value, void *cb)
int status = git_gpg_config(var, value, NULL);
if (status)
return status;
if (!strcmp(var, "commit.gpgsign")) {
sign_commit = git_config_bool(var, value) ? "" : NULL;
return 0;
}
return git_default_config(var, value, cb);
}

View File

@ -87,7 +87,10 @@ preserve_merges=
autosquash=
keep_empty=
test "$(git config --bool rebase.autosquash)" = "true" && autosquash=t
gpg_sign_opt=
case "$(git config --bool commit.gpgsign)" in
true) gpg_sign_opt=-S ;;
*) gpg_sign_opt= ;;
esac
read_basic_state () {
test -f "$state_dir/head-name" &&

View File

@ -45,12 +45,18 @@ test_expect_success GPG 'create signed commits' '
git tag seventh-signed &&
echo 8 >file && test_tick && git commit -a -m eighth -SB7227189 &&
git tag eighth-signed-alt
git tag eighth-signed-alt &&
# commit.gpgsign is still on but this must not be signed
git tag ninth-unsigned $(echo 9 | git commit-tree HEAD^{tree}) &&
# explicit -S of course must sign.
git tag tenth-signed $(echo 9 | git commit-tree -S HEAD^{tree})
'
test_expect_success GPG 'verify and show signatures' '
(
for commit in initial second merge fourth-signed fifth-signed sixth-signed seventh-signed
for commit in initial second merge fourth-signed \
fifth-signed sixth-signed seventh-signed tenth-signed
do
git verify-commit $commit &&
git show --pretty=short --show-signature $commit >actual &&
@ -60,7 +66,8 @@ test_expect_success GPG 'verify and show signatures' '
done
) &&
(
for commit in merge^2 fourth-unsigned sixth-unsigned seventh-unsigned
for commit in merge^2 fourth-unsigned sixth-unsigned \
seventh-unsigned ninth-unsigned
do
test_must_fail git verify-commit $commit &&
git show --pretty=short --show-signature $commit >actual &&