mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-26 04:00:37 -05:00
"Push and create" doesn't work with SHA-256 git repository #14189
Open
opened 2025-11-02 11:05:48 -06:00 by GiteaMirror
·
11 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 labels
type/bug
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#14189
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.
Originally created by @jhanmann on GitHub (Feb 25, 2025).
Description
When you create a SHA-256 Repository on one Gitea instance and try to setup a Push Mirror to another Gitea instance you must first create the blank repository on the target mirror with SHA-256. It appears Gitea does not know to set SHA-256 for the target repo when creating it using the ENABLE_PUSH_CREATE_USER or ENABLE_PUSH_CREATE_ORG options.
Admittedly this is only an inconvenience but noting it here as a bug/improvement with SHA-256 Git support now official.
Gitea Version
1.24.0+dev-314-g62389dd08b
Can you reproduce the bug on the Gitea demo site?
No
Log Gist
No response
Screenshots
No response
Git Version
No response
Operating System
Alpine Linux and Debian
How are you running Gitea?
Server instances are running in Docker containers.
Database
MySQL/MariaDB
@wxiaoguang commented on GitHub (Feb 25, 2025):
At the moment, it's impossible to support sha256 "push-to-create".
Because IIRC when Gitea receives the push request (to create), it can't know whether it is a sha1 or sha256 repo.
One possible solution is to let users provide more options to the "push" command, for example:
git push -o format=sha256 .... Does it look good to you? (This is only a proposal, it is not implemented yet)@jhanmann commented on GitHub (Feb 27, 2025):
Hmmm. I think you're saying the Gitea instance on the target does not know the SHA type, correct? So yes, I think any means of the source telling the destination what SHA type is used in the source would be a solution. Not having looked at the Gitea code for the Push Mirror I can't comment in more detail on what the potential solutions would be.
The source Gitea instance definitely knows the SHA type it simply needs to be able to tell the mirror destination Gitea instance.
@wxiaoguang commented on GitHub (Feb 27, 2025):
yes, "target instance" (the one receives the push request) doesn't know. When "push-to-create", the "target instance" only knows the repo name and push options before creating an empty repo.
@jhanmann commented on GitHub (Feb 27, 2025):
Gotcha! So yes I'd agree that the additional piece of information that needs to be represented is SHA-1 or SHA-256 just like the --ojhect-format= option on the GIT INIT.
This obviously isn't your fault at all but after all the time they took implementing this in GIT it still seems only half thought out but then again what do I know about it? Just another armchair critic. ;-)
@hiifong commented on GitHub (Mar 19, 2025):
When we enable push to create repositories automatically, perhaps we can determine whether to use sha265 to create a repository by determining the length of the commit id.sha256 log
@hiifong commented on GitHub (Mar 19, 2025):
there has object format:
@hiifong commented on GitHub (Mar 19, 2025):
Sorry, this idea doesn't work. You can only know which algorithm the object format supports after initializing the repository.
@lunny commented on GitHub (Mar 19, 2025):
Another method is to detect the commit id length. When the hooks get the commit id is 64, then we think it's a sha256, if it's 40, it should be sha1.
@hiifong commented on GitHub (Mar 20, 2025):
no, this idea is not feasible, gitea initializes the git repository as sha1 by default, this algorithm is already set, it is impossible to change it during the receiving process.
@Salvora commented on GitHub (Jun 27, 2025):
When I use "push to create" with a local sha256 repo, it creates a blank repo on the remote gitea instance. Isn't it possible to use this?
@wxiaoguang commented on GitHub (Jun 27, 2025):
Impossible for sha256 https://github.com/go-gitea/gitea/issues/33717#issuecomment-2682737737