]> source.dussan.org Git - gitea.git/commit
Fix verifyCommits error when push a new branch (#26664) (#26810)
authorGiteabot <teabot@gitea.io>
Thu, 31 Aug 2023 15:29:55 +0000 (23:29 +0800)
committerGitHub <noreply@github.com>
Thu, 31 Aug 2023 15:29:55 +0000 (15:29 +0000)
commit93c36f395cf217b44e1f5a529c795a6202df8989
treed8192e5cdb4145cfaae87a1f7e55466b4ee33901
parent302c03c4a9e288bdbda2cd6cde29003d0d13207d
Fix verifyCommits error when push a new branch (#26664) (#26810)

Backport #26664 by @CaiCandong

> ### Description
> If a new branch is pushed, and the repository has a rule that would
require signed commits for the new branch, the commit is rejected with a
500 error regardless of whether it's signed.
>
> When pushing a new branch, the "old" commit is the empty ID
(0000000000000000000000000000000000000000). verifyCommits has no
provision for this and passes an invalid commit range to git rev-list.
Prior to 1.19 this wasn't an issue because only pre-existing individual
branches could be protected.
>
> I was able to reproduce with
[try.gitea.io/CraigTest/test](https://try.gitea.io/CraigTest/test),
which is set up with a blanket rule to require commits on all branches.

Fix #25565
Very thanks to @Craig-Holmquist-NTI for reporting the bug and suggesting
an valid solution!

Co-authored-by: CaiCandong <50507092+CaiCandong@users.noreply.github.com>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
43 files changed:
models/fixtures/email_address.yml
models/fixtures/gpg_key.yml
models/fixtures/user.yml
routers/private/hook_verification.go
routers/private/hook_verification_test.go [new file with mode: 0644]
routers/private/main_test.go [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/HEAD [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/config [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/info/refs [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/logs/HEAD [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/logs/refs/heads/main [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/08/cbc8f0e903b0916025ae7577564b7ed39ecb2c [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/0b/5987362fe3fabdd4406babdc819642ee2f5a2a [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/13/b0f23f673b161f4b5cb66f051cb93c99729e1e [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/23/33a51fdb238b7023a62ae3dcc58994061a7c86 [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/2b/df04adb23d2b40b6085efb230856e5e2a775b7 [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/65/a457425a679cbe9adf0d2741785d3ceabb44a7 [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/72/920278f2f999e3005801e5d5b8ab8139d3641c [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/8b/903ede7c494725624bf842ec890f6342dababd [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/93/eac826f6188f34646cea81bf426aa5ba7d3bfe [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/97/79d17a04f1e2640583d35703c62460b2d86e0a [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/9c/e3f779ae33f31fce17fac3c512047b75d7498b [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/a9/f76e70a663e40091749a97eeac5f57a6fec141 [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/ba/0caedd359ebe310ef431335576e20f2b84e9b9 [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/bb/87653e0819460e79b5f075f2563f583cbbf18c [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/cb/a4c30c196a0e03e7bdf6eeb8393d14b9d073aa [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/d7/66f2917716d45be24bfa968b8409544941be32 [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/e3/7e5d19823e42fad252f6341b1f77a7bc6ee451 [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/e8/4e452c3a20c02dee17ec2f63c0cb9ef6c759eb [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/info/packs [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/tmp_objdir-incoming-a21648/08/cbc8f0e903b0916025ae7577564b7ed39ecb2c [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/tmp_objdir-incoming-a21648/0b/5987362fe3fabdd4406babdc819642ee2f5a2a [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/tmp_objdir-incoming-a21648/13/b0f23f673b161f4b5cb66f051cb93c99729e1e [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/tmp_objdir-incoming-a21648/23/33a51fdb238b7023a62ae3dcc58994061a7c86 [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/tmp_objdir-incoming-a21648/8b/903ede7c494725624bf842ec890f6342dababd [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/tmp_objdir-incoming-a21648/93/eac826f6188f34646cea81bf426aa5ba7d3bfe [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/tmp_objdir-incoming-a21648/9c/e3f779ae33f31fce17fac3c512047b75d7498b [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/tmp_objdir-incoming-a21648/a9/f76e70a663e40091749a97eeac5f57a6fec141 [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/tmp_objdir-incoming-a21648/bb/87653e0819460e79b5f075f2563f583cbbf18c [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/objects/tmp_objdir-incoming-a21648/cb/a4c30c196a0e03e7bdf6eeb8393d14b9d073aa [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification/refs/heads/main [new file with mode: 0644]
routers/private/tests/repos/repo1_hook_verification_dummy_gpg_key.txt [new file with mode: 0644]