Skip to content

disable log.showSignature config for git commands by default #561

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

talhaHavadar
Copy link

gitlint doesnt work properly if the global configuration of the users enables log.showSignature config. See below as an example:

 git log
commit 4d9119760056492eabc201bfad5de2f9e660b85f (HEAD -> main,
upstream/main, upstream/HEAD)
gpg: Signature made Sat 02 Sep 2023 08:25:48 AM UTC
gpg:                using RSA key 4AEE18F83AFDEB23
gpg: Can't check signature: No public key
Author: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sat Sep 2 10:25:48 2023 +0200

    Bump python from 3.11.4-alpine to 3.11.5-alpine (#525)

    Bumps python from 3.11.4-alpine to 3.11.5-alpine.

    ---
    updated-dependencies:

 gitlint
An error occurred while executing 'git log gpg: Signature made Sat 02
Sep 2023 08:25:48 AM UTCgpg:                using RSA key
4AEE18F83AFDEB23gpg: Can't check signature: No public
key4d9119760056492eabc201bfad5de2f9e660b85f -1
--pretty=%aN%x00%aE%x00%ai%x00%P%n%B': b"fatal: invalid object name
'gpg'."

After disabling log.showSignature config for git runs made by gitlint, it works as expected.

 hatch run dev:gitlint
An error occurred while executing 'git log gpg: Signature made Sat 02
Sep 2023 08:25:48 AM UTCgpg:                using RSA key
4AEE18F83AFDEB23gpg: Can't check signature: No public
key4d9119760056492eabc201bfad5de2f9e660b85f -1
--pretty=%aN%x00%aE%x00%ai%x00%P%n%B': b"fatal: invalid object name
'gpg'."

^^ this is before fix in dev environment

 hatch run dev:gitlint
^^ this is after fix as expected

Enter your PR details here

@talhaHavadar
Copy link
Author

talhaHavadar commented Jun 6, 2025

Local test run results

 hatch run test:all
cmd [1] | pytest --cov=gitlint-core --cov-report=term --cov-report=lcov:.coverage.lcov -rw -s gitlint-core
====================================== test session starts =======================================
platform linux -- Python 3.12.3, pytest-7.2.1, pluggy-1.6.0
rootdir: /home/ubuntu/projects/gitlint
plugins: cov-4.0.0
collected 200 items

gitlint-core/gitlint/tests/test_cache.py ..
gitlint-core/gitlint/tests/test_deprecation.py .
gitlint-core/gitlint/tests/test_display.py ..
gitlint-core/gitlint/tests/test_hooks.py .....
gitlint-core/gitlint/tests/test_lint.py .............
gitlint-core/gitlint/tests/test_options.py ........
gitlint-core/gitlint/tests/test_utils.py ..
gitlint-core/gitlint/tests/cli/test_cli.py ...................................
gitlint-core/gitlint/tests/cli/test_cli_hooks.py ..............
gitlint-core/gitlint/tests/config/test_config.py ...........
gitlint-core/gitlint/tests/config/test_config_builder.py ...........
gitlint-core/gitlint/tests/config/test_config_precedence.py ...
gitlint-core/gitlint/tests/config/test_rule_collection.py ...
gitlint-core/gitlint/tests/contrib/test_contrib_rules.py ....
gitlint-core/gitlint/tests/contrib/rules/test_authors_commit.py .........
gitlint-core/gitlint/tests/contrib/rules/test_conventional_commit.py ..
gitlint-core/gitlint/tests/contrib/rules/test_disallow_cleanup_commits.py ..
gitlint-core/gitlint/tests/contrib/rules/test_signedoff_by.py ..
gitlint-core/gitlint/tests/git/test_git.py ......
gitlint-core/gitlint/tests/git/test_git_commit.py ....................
gitlint-core/gitlint/tests/git/test_git_context.py ..
gitlint-core/gitlint/tests/rules/test_body_rules.py ..........
gitlint-core/gitlint/tests/rules/test_configuration_rules.py ....
gitlint-core/gitlint/tests/rules/test_meta_rules.py ..
gitlint-core/gitlint/tests/rules/test_rules.py ....
gitlint-core/gitlint/tests/rules/test_title_rules.py ........
gitlint-core/gitlint/tests/rules/test_user_rules.py ...............

======================================== warnings summary ========================================
gitlint-core/gitlint/tests/test_cache.py: 2 warnings
gitlint-core/gitlint/tests/test_deprecation.py: 1 warning
gitlint-core/gitlint/tests/test_display.py: 2 warnings
gitlint-core/gitlint/tests/test_hooks.py: 5 warnings
gitlint-core/gitlint/tests/test_lint.py: 13 warnings
gitlint-core/gitlint/tests/test_options.py: 8 warnings
gitlint-core/gitlint/tests/test_utils.py: 2 warnings
gitlint-core/gitlint/tests/cli/test_cli.py: 35 warnings
gitlint-core/gitlint/tests/cli/test_cli_hooks.py: 14 warnings
gitlint-core/gitlint/tests/config/test_config.py: 11 warnings
gitlint-core/gitlint/tests/config/test_config_builder.py: 11 warnings
gitlint-core/gitlint/tests/config/test_config_precedence.py: 3 warnings
gitlint-core/gitlint/tests/config/test_rule_collection.py: 3 warnings
gitlint-core/gitlint/tests/contrib/test_contrib_rules.py: 4 warnings
gitlint-core/gitlint/tests/contrib/rules/test_authors_commit.py: 9 warnings
gitlint-core/gitlint/tests/contrib/rules/test_conventional_commit.py: 2 warnings
gitlint-core/gitlint/tests/contrib/rules/test_disallow_cleanup_commits.py: 2 warnings
gitlint-core/gitlint/tests/contrib/rules/test_signedoff_by.py: 2 warnings
gitlint-core/gitlint/tests/git/test_git.py: 6 warnings
gitlint-core/gitlint/tests/git/test_git_commit.py: 20 warnings
gitlint-core/gitlint/tests/git/test_git_context.py: 2 warnings
gitlint-core/gitlint/tests/rules/test_body_rules.py: 10 warnings
gitlint-core/gitlint/tests/rules/test_configuration_rules.py: 4 warnings
gitlint-core/gitlint/tests/rules/test_meta_rules.py: 2 warnings
gitlint-core/gitlint/tests/rules/test_rules.py: 4 warnings
gitlint-core/gitlint/tests/rules/test_title_rules.py: 8 warnings
gitlint-core/gitlint/tests/rules/test_user_rules.py: 15 warnings
  /usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method
    warnings.warn("TestResult has no addDuration method",

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

---------- coverage: platform linux, python 3.12.3-final-0 -----------
Name                                                                               Stmts   Miss Branch BrPart  Cover   Missing
------------------------------------------------------------------------------------------------------------------------------
gitlint-core/gitlint/__init__.py                                                       3      0      0      0   100%
gitlint-core/gitlint/cache.py                                                         21      0      6      0   100%
gitlint-core/gitlint/cli.py                                                          284      8     84      3    96%   102, 163-171, 237->exit, 470->420
gitlint-core/gitlint/config.py                                                       325      2     76      0    99%   351, 442
gitlint-core/gitlint/contrib/__init__.py                                               0      0      0      0   100%
gitlint-core/gitlint/contrib/rules/__init__.py                                         0      0      0      0   100%
gitlint-core/gitlint/contrib/rules/authors_commit.py                                  29      1      8      1    95%   25
gitlint-core/gitlint/contrib/rules/conventional_commit.py                             20      0      4      0   100%
gitlint-core/gitlint/contrib/rules/disallow_cleanup_commits.py                        12      0      6      0   100%
gitlint-core/gitlint/contrib/rules/signedoff_by.py                                     9      0      4      0   100%
gitlint-core/gitlint/deprecation.py                                                   17      0      4      0   100%
gitlint-core/gitlint/display.py                                                       25      0      6      0   100%
gitlint-core/gitlint/exception.py                                                      1      0      0      0   100%
gitlint-core/gitlint/git.py                                                          254      0     20      0   100%
gitlint-core/gitlint/hooks.py                                                         42      0      8      0   100%
gitlint-core/gitlint/lint.py                                                          74      0     22      0   100%
gitlint-core/gitlint/options.py                                                       92      0     24      0   100%
gitlint-core/gitlint/rule_finder.py                                                   65      0     42      1    99%   145->151
gitlint-core/gitlint/rules.py                                                        291      0     78      0   100%
gitlint-core/gitlint/shell.py                                                         39      4      4      0    91%   15-16, 59-60
gitlint-core/gitlint/tests/__init__.py                                                 0      0      0      0   100%
gitlint-core/gitlint/tests/base.py                                                   131      0     16      0   100%
gitlint-core/gitlint/tests/cli/test_cli.py                                           369      0      0      0   100%
gitlint-core/gitlint/tests/cli/test_cli_hooks.py                                     172      0      4      0   100%
gitlint-core/gitlint/tests/config/test_config.py                                     174      0     14      0   100%
gitlint-core/gitlint/tests/config/test_config_builder.py                             173      0      6      0   100%
gitlint-core/gitlint/tests/config/test_config_precedence.py                           54      0      0      0   100%
gitlint-core/gitlint/tests/config/test_rule_collection.py                             43      0      2      0   100%
gitlint-core/gitlint/tests/contrib/__init__.py                                         0      0      0      0   100%
gitlint-core/gitlint/tests/contrib/rules/__init__.py                                   0      0      0      0   100%
gitlint-core/gitlint/tests/contrib/rules/test_authors_commit.py                       69      0     12      0   100%
gitlint-core/gitlint/tests/contrib/rules/test_conventional_commit.py                  42      0      8      0   100%
gitlint-core/gitlint/tests/contrib/rules/test_disallow_cleanup_commits.py             23      0      2      0   100%
gitlint-core/gitlint/tests/contrib/rules/test_signedoff_by.py                         19      0      2      0   100%
gitlint-core/gitlint/tests/contrib/test_contrib_rules.py                              34      2     14      1    90%   46-47
gitlint-core/gitlint/tests/git/test_git.py                                            60      0      0      0   100%
gitlint-core/gitlint/tests/git/test_git_commit.py                                    428      0     16      0   100%
gitlint-core/gitlint/tests/git/test_git_context.py                                    36      0      0      0   100%
gitlint-core/gitlint/tests/rules/__init__.py                                           0      0      0      0   100%
gitlint-core/gitlint/tests/rules/test_body_rules.py                                  144      0      2      0   100%
gitlint-core/gitlint/tests/rules/test_configuration_rules.py                         102      0      0      0   100%
gitlint-core/gitlint/tests/rules/test_meta_rules.py                                   38      0     10      0   100%
gitlint-core/gitlint/tests/rules/test_rules.py                                        29      0      4      0   100%
gitlint-core/gitlint/tests/rules/test_title_rules.py                                 109      0      2      0   100%
gitlint-core/gitlint/tests/rules/test_user_rules.py                                  148      0     10      0   100%
gitlint-core/gitlint/tests/samples/user_rules/incorrect_linerule/my_line_rule.py       4      0      0      0   100%
gitlint-core/gitlint/tests/samples/user_rules/my_commit_rules.py                      13      0      2      0   100%
gitlint-core/gitlint/tests/samples/user_rules/parent_package/__init__.py               6      0      0      0   100%
gitlint-core/gitlint/tests/test_cache.py                                              37      0      0      0   100%
gitlint-core/gitlint/tests/test_deprecation.py                                        22      0      2      0   100%
gitlint-core/gitlint/tests/test_display.py                                            40      0      0      0   100%
gitlint-core/gitlint/tests/test_hooks.py                                             105      0      0      0   100%
gitlint-core/gitlint/tests/test_lint.py                                              150      0      6      0   100%
gitlint-core/gitlint/tests/test_options.py                                           139      0      6      0   100%
gitlint-core/gitlint/tests/test_utils.py                                              35      0      0      0   100%
gitlint-core/gitlint/utils.py                                                         26      0      6      0   100%
------------------------------------------------------------------------------------------------------------------------------
TOTAL                                                                               4577     17    542      6    99%
Coverage LCOV written to file .coverage.lcov

Required test coverage of 97.0% reached. Total coverage: 99.43%
=============================== 200 passed, 200 warnings in 2.16s ================================
cmd [2] | black --check --diff .
All done! ✨ 🍰 ✨
77 files would be left unchanged.
cmd [3] | ruff gitlint-core/gitlint qa
cmd [4] | mypy
Success: no issues found in 75 source files

gitlint doesnt work properly if the global configuration
of the users enables log.showSignature config. See below as an example:

```
 git log
commit 4d91197 (HEAD -> main,
upstream/main, upstream/HEAD)
gpg: Signature made Sat 02 Sep 2023 08:25:48 AM UTC
gpg:                using RSA key 4AEE18F83AFDEB23
gpg: Can't check signature: No public key
Author: dependabot[bot]
<49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sat Sep 2 10:25:48 2023 +0200

    Bump python from 3.11.4-alpine to 3.11.5-alpine (jorisroovers#525)

    Bumps python from 3.11.4-alpine to 3.11.5-alpine.

    ---
    updated-dependencies:

 gitlint
An error occurred while executing 'git log gpg: Signature made Sat 02
Sep 2023 08:25:48 AM UTCgpg:                using RSA key
4AEE18F83AFDEB23gpg: Can't check signature: No public
key4d9119760056492eabc201bfad5de2f9e660b85f -1
--pretty=%aN%x00%aE%x00%ai%x00%P%n%B': b"fatal: invalid object name
'gpg'."
```

After disabling log.showSignature config for git runs made by gitlint,
it works as expected.

```
 hatch run dev:gitlint
An error occurred while executing 'git log gpg: Signature made Sat 02
Sep 2023 08:25:48 AM UTCgpg:                using RSA key
4AEE18F83AFDEB23gpg: Can't check signature: No public
key4d9119760056492eabc201bfad5de2f9e660b85f -1
--pretty=%aN%x00%aE%x00%ai%x00%P%n%B': b"fatal: invalid object name
'gpg'."

^^ this is before fix in dev environment

 hatch run dev:gitlint
^^ this is after fix as expected
```
@talhaHavadar
Copy link
Author

fix linting issues

@talhaHavadar
Copy link
Author

talhaHavadar commented Jun 6, 2025

I have commit.gpgSign set to true in my global git configs, so when I run qa tests locally I see bunch of failures due to missing secret gpg key for [email protected]. Didnt want to update my local configuration just for this but seems like I might need to 😄

error: gpg failed to sign the data:
E           gpg: skipped "gitlint-test-user <[email protected]>": No secret key
E           [GNUPG:] INV_SGNR 9 gitlint-test-user <[email protected]>
E           [GNUPG:] FAILURE sign 17
E           gpg: signing failed: No secret key
E
E           fatal: failed to write commit object

@talhaHavadar
Copy link
Author

See integration test run results (locally):

 hatch run qa:integration-tests
====================================== test session starts =======================================
platform linux -- Python 3.12.3, pytest-7.2.1, pluggy-1.6.0
rootdir: /home/ubuntu/projects/gitlint
collected 51 items

qa/test_commits.py .........
qa/test_config.py .......
qa/test_contrib.py ...
qa/test_gitlint.py ...............
qa/test_hooks.py .....
qa/test_named_rules.py ..
qa/test_rules.py ..
qa/test_stdin.py ...
qa/test_user_defined.py .....

======================================== warnings summary ========================================
qa/test_commits.py: 13 warnings
qa/test_config.py: 8 warnings
qa/test_contrib.py: 9 warnings
qa/test_gitlint.py: 26 warnings
qa/test_hooks.py: 17 warnings
qa/test_rules.py: 3 warnings
qa/test_user_defined.py: 7 warnings
  /home/ubuntu/.local/share/hatch/env/virtual/gitlint/hcuU0Uui/qa/lib/python3.12/site-packages/sh.py:1955: DeprecationWarning: This process (pid=1407766) is multi-threaded, use of fork() may lead to deadlocks in the child.
    self.pid = os.fork()

qa/test_commits.py: 9 warnings
qa/test_config.py: 7 warnings
qa/test_contrib.py: 3 warnings
qa/test_gitlint.py: 15 warnings
qa/test_hooks.py: 5 warnings
qa/test_named_rules.py: 2 warnings
qa/test_rules.py: 2 warnings
qa/test_stdin.py: 3 warnings
qa/test_user_defined.py: 5 warnings
  /usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method
    warnings.warn("TestResult has no addDuration method",

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=============================== 51 passed, 134 warnings in 11.57s ================================

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant