mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-09 12:46:42 -05:00
LFS uses ROOT_URL to upload LFS objects during git push #2710
Closed
opened 2025-11-02 04:45:14 -06:00 by GiteaMirror
·
8 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/question
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#2710
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 @VultureX on GitHub (Jan 5, 2019).
Whenever I try to push new files that are tracked by LFS with a computer inside the local network the push operation fails, because it's trying to connect to the ROOT_URL defined in app.ini.
I can change the ROOT_URL to point to the local address, but then computers from outside obviously can't connect. I do not have a domain name registered, so I'm using explicit IPs. Is there a way to solve this?
"D:\Programs\Git\bin\git.exe" push --recurse-submodules=check --progress "origin" refs/heads/master:refs/heads/master Uploading LFS objects: 0% (0/1), 0 B | 0 B/s, done LFS: Put https://xxx.xxx.xxx.xxx:3000/XX/Test.git/info/lfs/objects/aed286ac1fa67fe7050ff63cac3056decd38d37743525fd06de777c80265a189: dial tcp xxx.xxx.xxx.xxx:3000: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. error: failed to push some refs to 'https://192.168.192.49:3000/XX/Test.git' Doneapp.ini
I've tried changing the lfs url with the following command on the pc in the local network:
But this had no effect
@zeripath commented on GitHub (Jan 11, 2019):
hmm... If you have a second SSH server running on different port and use the KeyAuthorizedCommand functionality to run the gitea serv with a different app.ini for that different port, that should work. Please note however your LFS won't work if you take your machine out of that network though.
The gitea binary would need to be owned by root, not writable by anyone else, or have a bash shim to it that satisifies the above criteria. Then if you add to the sshd.conf for that second SSH server:
Then when you ssh clone from that other port you should get the different results. There's probably a way of using a single ssh server with different configuration sections per requesting IP but I'm not a specialist in the configuration of ssh.
The bash shim above would be something like:
Owned by root with mode 644
@VultureX commented on GitHub (Jan 11, 2019):
Thanks for your reply zeripath.
I actually don't know much about webservers. I'm using https and I'm just running the gitea binary (on Windows). 'Simply run the binary' is what I was going for, no additional SSH servers. :) Your suggestions would only make sense if I was using SSH with an additional server besides the Gitea binary, right?
It would be great if the LFS connection url could be configured per requesting IP on the server side (via any Gitea config file), I didn't find any information about how to do this either, but I figure this should be possible.
(See also the comment from the git-lfs page https://github.com/git-lfs/git-lfs/issues/3457)
@zeripath commented on GitHub (Jan 13, 2019):
OK I've just looked at removing the host, scheme (and user - although that's irrelevant) parts from the URLs returned from LFS. Unfortunately they're totally required. So I can't see how this can work.
The only other option I can think of is to have another version of Gitea running - but you won't be able to use sqlite for its database, you should be able to share the database if you use postgres/mysql or the link, but I think you might end up our first ever cluster user.
@VultureX commented on GitHub (Jan 16, 2019):
Hmm, bk2204 mentioned the following in the Git LFS discussion I linked:
This is exactly what I need. If that requires running two Gitea instances that work together somehow then I'll try this, but I don't want to create additional problems.
I'm not aware of how Gitea's git server handles git lfs push requests internally, but it seems that execution of this command uses the ROOT_URL property (even though during execution it should use the incoming remote repository url, which in the case of my client is defined as a local address)
If Gitea could use the incoming remote repository url to deduce the root or if I could add a ROOT_URL_LOCAL property that is used when the incoming connection is a local ip address then all is fixed.
Perhaps I could make a code change somewhere to facilitate this. Any pointers where to begin looking would be greatly appreciated. I'm totally not a web developer and new to Go and this project. I'll see if I can build it in the first place when I have some free time : )
@ryshi commented on GitHub (Jan 18, 2019):
I have almost the same problem.
I installed gitea with url
https://192.168.1.10/gitea/app.ini
My repo's url are
ssh://git@192.168.1.10:3000/john/lfs.githttps://192.168.1.10/gitea/john/lfs.gitwhen I clone with ssh url, lfs party of .git/config is
It seems ssh or lfs service needs to handle ROOT_URL too
@zeripath commented on GitHub (Jan 18, 2019):
@ryshi There is no SSH transport for LFS. That's the protocol I'm afraid.
@VultureX I'm not sure where you would get this information. Over HTTP transports you may find something on the request object but I'm not sure that it will be totally trustworthy and probably won't work in proxied environments - you would basically have to look through the Gitea source looking for references to LFS and adjust the app_url every time, I guess make getting the appurl a function taking the http request so you can then add in the correct value.
Over SSH I'm really not sure at all. You may find that SSH sets an environment variable but I haven't a clue if it does set this.
@ryshi commented on GitHub (Jan 18, 2019):
@zeripath I noticed the lfs url was created in
.git/configas you said, it should include the ROOT_URL, just like
https://192.168.1.10/gitea/john/lfs.git/info/lfsI'm not sure if it's done by server or client.
@VultureX commented on GitHub (Jan 27, 2019):
OK, it took me a while to get going on Windows since the documentation to run from source is lacking.
A high level view of the code changes in server.go that solved my problem: