When having log.showSignature enabled by default (as is good practice with signed commits), it still shows the signature when git-subtree passes custom format specifiers to git-log. This causes an error when trying to push a subtree when signed commits are involved.
Adding this command line flag fixes the above bug. The command line flag was added to all invocations of git-log so that it would behave as expected by the original developers. The flag could be more judiciously applied, but that requires a deeper understanding of the code. It may be more desirable to disable --show-signature when any custom format specifier is given, but that change has far more wide reaching consequences, as well as a change to the documentation. Signed-off-by: Kieran Colford <kie...@kcolford.com> --- contrib/subtree/git-subtree.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh index dec085a..d9e89d1 100755 --- a/contrib/subtree/git-subtree.sh +++ b/contrib/subtree/git-subtree.sh @@ -296,7 +296,7 @@ find_latest_squash () { sq= main= sub= - git log --grep="^git-subtree-dir: $dir/*\$" \ + git log --no-show-signature --grep="^git-subtree-dir: $dir/*\$" \ --pretty=format:'START %H%n%s%n%n%b%nEND%n' HEAD | while read a b junk do @@ -340,7 +340,7 @@ find_existing_splits () { revs="$2" main= sub= - git log --grep="^git-subtree-dir: $dir/*\$" \ + git log --no-show-signature --grep="^git-subtree-dir: $dir/*\$" \ --pretty=format:'START %H%n%s%n%n%b%nEND%n' $revs | while read a b junk do @@ -382,7 +382,7 @@ copy_commit () { # We're going to set some environment vars here, so # do it in a subshell to get rid of them safely later debug copy_commit "{$1}" "{$2}" "{$3}" - git log -1 --pretty=format:'%an%n%ae%n%aD%n%cn%n%ce%n%cD%n%B' "$1" | + git log --no-show-signature -1 --pretty=format:'%an%n%ae%n%aD%n%cn%n%ce%n%cD%n%B' "$1" | ( read GIT_AUTHOR_NAME read GIT_AUTHOR_EMAIL @@ -462,8 +462,8 @@ squash_msg () { oldsub_short=$(git rev-parse --short "$oldsub") echo "Squashed '$dir/' changes from $oldsub_short..$newsub_short" echo - git log --pretty=tformat:'%h %s' "$oldsub..$newsub" - git log --pretty=tformat:'REVERT: %h %s' "$newsub..$oldsub" + git log --no-show-signature --pretty=tformat:'%h %s' "$oldsub..$newsub" + git log --no-show-signature --pretty=tformat:'REVERT: %h %s' "$newsub..$oldsub" else echo "Squashed '$dir/' content from commit $newsub_short" fi @@ -475,7 +475,7 @@ squash_msg () { toptree_for_commit () { commit="$1" - git log -1 --pretty=format:'%T' "$commit" -- || exit $? + git log --no-show-signature -1 --pretty=format:'%T' "$commit" -- || exit $? } subtree_for_commit () { -- 2.10.2