mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-13 11:31:28 -05:00
Git LFS hooks are recreated server-side when the repository has custom hooks #13444
Closed
opened 2025-11-02 10:42:33 -06:00 by GiteaMirror
·
9 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No Label
type/bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#13444
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @na-Itms on GitHub (Sep 3, 2024).
Description
This issue is similar to #19810 and #23765.
Whenever I try to create a PR from a branch on the same repository ("merge into repo:main / pull from repo:branch"), I receive the infamous error
batch request: missing protocol: "".The error is caused by Git LFS hooks getting installed on the repo server-side. Deleting them temporarily fixes the error and allows me to create the PR.
I noticed after a while that the issue arises as soon as the repo of the origin branch contains custom hooks (in our case, under
update.d. Other repos do not face the issue.Additionally, as soon as the PR is created (from a branch suffering from the problem), the LFS hooks get recreated.
Gitea Version
1.22.1
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
No response
Screenshots
No response
Git Version
2.43.5
Operating System
AlmaLinux 9
How are you running Gitea?
Install from binary, run with systemd
Database
MySQL/MariaDB
@na-Itms commented on GitHub (Sep 16, 2024):
It looks like the issue does not stem from PRs being "same-repository" PRs: I get the issue on all origin repos where a server-side custom hook is installed (in our case, under
update.d).I edited the OP.
@lunny commented on GitHub (Sep 17, 2024):
Did you mean a new hook file created under
update.dafter a pull request created? Can you paste the content of this new-installed hook file?@na-Itms commented on GitHub (Sep 18, 2024):
Hello @lunny, no, the files that are created and cause the issue are the
post-checkout,post-commit,post-mergeandpre-pushLFS hooks. However, I discovered that those are only created in the repos where we installed our own custom hooks underupdate.d.By typing this I think I know what the issue is. One of our
update.dhooks checks that no raw binary files were pushed by users who haven't installed git-lfs. This hook runs thegit-lfs-fsckcommand to verify the integrity of the LFS tracking. I believe this command is the one causing the LFS hooks to be recreated.How should we move forward to avoid the
batch request: missing protocol: ""error?@GiteaBot commented on GitHub (Oct 19, 2024):
We close issues that need feedback from the author if there were no new comments for a month. 🍵
@StanleySweet commented on GitHub (Nov 13, 2024):
Any news?
@lunny commented on GitHub (Nov 13, 2024):
I haven't figured out how to reproduce it. What did you mean
LFS hooks?@na-Itms commented on GitHub (Nov 18, 2024):
Hi. I am not sure I understand what you are asking.
By LFS hooks I mean the default hooks
post-checkout,post-commit,post-mergeandpre-push. Just like in the other issues mentioned in the top post, the contents of these hooks are (for instance this ispre-push):@lunny commented on GitHub (Nov 18, 2024):
Loos like all these hooks are git client side hooks but not server side's. From Gitea side, it has itself git config and it will only have server-side hooks
pre-receive,update,post-receiveandproc-receive.@na-Itms commented on GitHub (Mar 2, 2025):
Hello, I have managed to understand the issue and I am summarizing it again with a fix.
Our repository contains a custom
update.dhook on the server that calls thegit-lfs-fsckcommand. Every time a PR is opened or merged against the repository, this command is called to check that the PR contains the correct LFS pointers.Because of https://github.com/git-lfs/git-lfs/issues/3706#issuecomment-509217575, when this command is called, it creates the
post-checkout,post-commit,post-mergeandpre-pushhooks on the server. These hooks contain the code posted above in https://github.com/go-gitea/gitea/issues/31960#issuecomment-2483263067.These hooks cause the Gitea error
batch request: missing protocol: "". I do not understand why Gitea fails here, as Git LFS is installed on the server. Please reopen this issue if there is a way to make Gitea accept these hooks.In order to prevent the LFS hooks to get installed in the repository on the server, I followed the advice from https://github.com/git-lfs/git-lfs/issues/3706#issuecomment-509217575: I explicitly created the
post-checkout,post-commit,post-mergeandpre-pushhooks with the contentAccording to the git-lfs developer, this should work for recent versions of git-lfs.
These dummy hooks do not get overwritten as they are not empty, and they do not cause the Gitea error.