mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-09 12:46:42 -05:00
Unable to mirror repository that contains '+' in the name (or create one with such character) #3267
Closed
opened 2025-11-02 05:06:01 -06:00 by GiteaMirror
·
10 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
issue/not-a-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#3267
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 @arrfab on GitHub (Apr 29, 2019).
[x]):Description
When trying to create a repository or mirror existing one, Gitea refuses the repository name to contain some characters in the repo string.
Example : try mirroring some repositories from git.centos.org and it will not work :
Repository to mirror : https://git.centos.org/rpms/dvd+rw-tools.git
Repository name (to match with the upstream one) : dvd+rw-tools
Message from Gitea : "Repository name should contain only alphanumeric, dash ('-'), underscore ('_') and dot ('.') characters."
...
@kbsingh commented on GitHub (Apr 29, 2019):
confirming this is a problem with sqlite backend as well
@techknowlogick commented on GitHub (Apr 29, 2019):
Closing this, as repo names in Gitea should contain only alphanumeric, dash ('-'), underscore ('_') and dot ('.') characters. This is a rule that is enforced by Gitea.
@kbsingh commented on GitHub (Jun 26, 2019):
Is there any chance we can get this reconsidered ? not allowing + signs is a problem for anyone working on linux, since + is a valid packagename, filename and widely used in the linux community ( eg. gcc-c++ )
@lunny commented on GitHub (Jun 26, 2019):
@kbsingh github has the same rule not allowing + in repository name.
@kbsingh commented on GitHub (Jun 26, 2019):
@lunny thanks, thats an excellent data point!
however, really looking to stick with gitea on self-managed infra. Since we often handle pre-release content etc that could not land in public services etc. Gitblit and a couple of other services seem to handle this without a problem.
What might the major challenges be in adding support for this ?
@zeripath commented on GitHub (Jun 26, 2019):
We'd need to ensure that everywhere we use the repository name it's properly escaped - it's currently not escaped anywhere - because it is simply assumed to be safe due to the above constraints - thus enforcing those constraints despite the fact that when not on Windows most of them are irrelevant.
In fact even on Windows they're irrelevant - A repository has an ID number which is unique so why are we storing them as
/owner/reponameinstead of/repoid? I don't think there's actually a good reason to store them in this way - and if anything it encourages people to think of the gitea repositories as usable from outside of gitea.Anyway, I've had a look at doing this but it's everywhere - and if we're going to do this we should also ensure that usernames are escaped too for similar reasons.
It is definitely on my list of naughty things that Gogs did that we should not do - but there are more important things that have my focus right now.
You're more than welcome to do the grunt work of doing this kind of PR though - the main issue is making windows compliant directories.
@mrsdizzie commented on GitHub (Jun 26, 2019):
Both Github and Gitlab don't allow + in repo name and many large Linux projects use one of those (Debian, Gnome). This doesn't prevent them from having package names with + in them, they just don't use it in the repo name. For matching example:
https://salsa.debian.org/optical-media-team/dvd-rw-tools
And I agree with @zeripath that it would likely be a lot of work to change properly without introducing bugs, given all of the past bugs related to escaping for things that did allow special characters (branch names for example).
One small and easier to fix bug here is that when you put in a repo with a + in it for migration it shouldn't auto fill the local repo name with the same name that Gitea won't accept though.
@kbsingh commented on GitHub (Jun 26, 2019):
@zeripath and @mrsdizzie : appreciate the context and feedback here. Having not touched a windows machine for best part of 2 decades, I'd struggle to do anything meaningful here.
Down the legacy and spread of the instrumentation / tooling around the scm and consumption, we cant rewrite the reponame, but there maybe some option to wrap gitea behind a proxy that does the url mangling. will investigate and scope things out.
thanks and regards,
@lunny commented on GitHub (Jun 29, 2019):
@zeripath Storing the repository name in server with repository id will make it difficult to migrate or backup I think.
@zeripath commented on GitHub (Jun 29, 2019):
We can always set the .git/config name. I'm not certain why backup/migrate should be particularly affected - it's only if you selectively backup certain organization's repositories - but that could be done by fixing Gitea dump to work properly.