mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-12 02:24:21 -05:00
Subgroups in Gitea #770
Open
opened 2025-11-02 03:35:53 -06:00 by GiteaMirror
·
92 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
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#770
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 @ulm0 on GitHub (Jun 4, 2017).
Feature proposal
GitLab 9.0 now allows to create subgroups for groups/organizations, It would be great if we could do the same in Gitea.
@gayprogrammer commented on GitHub (Jun 6, 2017):
Does Teams provide some or all of this functionality? What is missing from Teams?
@bkcsoft commented on GitHub (Jun 11, 2017):
Teams would not provide "endless" nested groups 🙁
In any case, this would require a large rewrite of how we're handling Organizations today (GitLab put a lot of time into Subgroups...) and would not be backwards compatible (hence why Subgroups in GitLab was introduced in a Major release so breaking changes was allowed 🙂 )
@bkcsoft commented on GitHub (Jun 11, 2017):
And to better answer @razzintown, Teams can't have repositories.
@gayprogrammer commented on GitHub (Jun 14, 2017):
Let me know if my understanding is correct:
Since multiple teams may share a private repo, is there any other functionality missing?
@bkcsoft commented on GitHub (Jun 15, 2017):
Sub-groups are not only about permissions, but structure as well. Say you have an Orga with a total of 300 repos over 30 teams, there's no way to structure that w/o proper "folders" (sub-groups).
So in the end you end up with
orga/team30/repo10instead oforga/repo300@bkcsoft commented on GitHub (Jun 15, 2017):
In any case, this would break a lot of existing stuff and be a major overhaul so I'm setting this for 2.0 for now
@ghost commented on GitHub (Jun 21, 2019):
This would automatically give us the pastebin/gist feature #693 as well, or any related idea, since some nested names could be reserved for those features like
giteaUser/gistorgiteaUser/pastebinjust off the top of my head, or with a dot prefix if that's legal with git, not sure. It would also allow users to create new repos progamatically with permissions already set by the parent 'space'.It could also eventually allow federation since it basically boils down to automagic merging, and using mirrors nested in reserved namespace would allow for manual conflict resolution as fallback without polluting the root namespace with lots of mirrors.
@tomdavidson commented on GitHub (Aug 20, 2019):
We org our git projects into groups of bounded contexts. Where the git repo is, informs the purpose, scope, and communication channels, as well as the authorization to the project. subgorups can be valuable.
@Th3Whit3Wolf commented on GitHub (Sep 9, 2019):
Is there any estimable timeline when this could potentially be implemented? This would be super useful.
@lunny commented on GitHub (Sep 12, 2019):
@Th3Whit3Wolf No people are working on this.
@lakostin commented on GitHub (Jan 29, 2020):
Still no update?
@6543 commented on GitHub (Jan 29, 2020):
dont see any
@Nicolab commented on GitHub (Jul 6, 2020):
I use Gitea for myself and Gitlab for team work. In Gitlab we have subgroups containing a lot of repos. That's what's keeping us from migrating. This possibility in Gitea would be really great.
Is this feature is planned?
@lafriks commented on GitHub (Jul 6, 2020):
It is planed but nobody does work on this currently
@Nicolab commented on GitHub (Jul 6, 2020):
Ok thanks for the confirmation
@cwchristerw commented on GitHub (Aug 16, 2020):
Currently this feature is already available in Github
@Asherslab commented on GitHub (Nov 28, 2020):
would also love this feature. Our team is migrating from GitLab and this is a feature we sorely miss
@lafriks commented on GitHub (Dec 9, 2020):
I'm planing to work on virtual subgroup functionality that would not affect urls so repository names would still need to be unique but it would allow grouping repos in subgroups
@tomdavidson commented on GitHub (Dec 11, 2020):
I dig how GitLab groups can be used for access control - would the virtual subgroups be similarly used? ... and I like the namespace. For example, I'd like parent Gitea groups for bounded contexts. Each context could have subgroups based on convention as
schemataorapiorhandbook, etc. Having to have unique names would end up withvirtual-groupname/groupname-schemataor the like.GitLab has some troubles sorting out GitLab Pages' domains with subgroups. What makes subgroups difficult with Gitea?
@bjeanes commented on GitHub (Dec 11, 2020):
I agree, but I think virtual subgroups without namespaced paths is a good and easy starting point. I support that for sure but would also like to see it go further.
@Nicolab commented on GitHub (Dec 12, 2020):
With or without URL path, the important thing is to have some repositories into subgroups.
@tomdavidson commented on GitHub (Dec 12, 2020):
I agree the url path is not most important and the GitLab implementation is still a bit janky. There is the access control issue but as some have stated, there is also the UX concerns of organizing repos by groups and subgroups.
ABAC systems and advanced content systems both work off of taxonomies. Maybe adding a parent attributes is how @lafriks plans on implementing virtual groups. We could have both access control policies and visual organization based on attributes. Maybe an attribute approach would this would better facilitate organization to structure as we want our software (network of contexts) rather than based on a tree like the HR org chart (conway's law).
@moqmar commented on GitHub (Feb 24, 2021):
Would you like any help with this feature @lafriks?
@mrexodia commented on GitHub (Mar 23, 2021):
Another interesting aspect of the way Gitlab subgroups work is that you can use relative git submodules (to access the repositories with both ssh and https and allow exporting offline builds):
https://docs.gitlab.com/ee/ci/git_submodules.html#configure-the-gitmodules-file
Is there a place available to fund this issue?
@lunny commented on GitHub (Mar 25, 2021):
You can visit https://www.bountysource.com/teams/gitea@z4lem commented on GitHub (Oct 26, 2021):
Has anyone an idea what happened to this feature request?
Even if it was added to the 1.15 roadmap #14477, it wasn't implemented.
I also didnt found anything regarding a more fine grained orga/team handling in 1.16 #16429.
We would love to see this feature in gitea.
@lafriks commented on GitHub (Oct 26, 2021):
It's on my individual backlog but have been quite busy lately so it will be done when it's done :D
@seboss666 commented on GitHub (Dec 4, 2021):
I was reorganizing my repositories to match my local folder organization and was bugged not to find the create subgroup button (gitlab reflex from my job) :D
@bryanpedini commented on GitHub (Feb 5, 2022):
@seboss666 Genuinely interested in knowing how you "reorganize" repositories...?
Do you mean like with APIs? Or do your repos just have code and no issues/PRs/Wiki/etc, so you can just clone and re-upload under a different name?
@seboss666 commented on GitHub (Feb 12, 2022):
I've split a big bloated repo into multiple ones, and was hoping to "group" them. For now, my repositories are almost all just codes, any "wiki" goes to a dedicated wiki elswhere, and for the rare issues I would like to keep, the "original" repository is still there, just with less far code.
@gd197 commented on GitHub (Mar 4, 2022):
In our company we have such kind of repository organization:
org/project/repos
Where org correspond more or less to department/metier which could handle lots of projects and for each projects, we are splitting repos according to lifecycle of data handled into as we are doing development in a very constrained process (eg we cannot handle test suite and source code into the same repo)
Another usage of nested organization which could help us is for consequent projects like a complete suite of projects with hundreds of developers.
In that case, we have such organization:
program/project/repos
Where program is the suite, then projects hosted by the suite and repos with same constraints as above
Having nested organizations feature in gitea would definitively be an enabler for us
If my understanding is correct, it looks like that feature could help to close the gap
@wzqiang1332 commented on GitHub (May 7, 2022):
Expect this feature
@goyalyashpal commented on GitHub (Jul 20, 2022):
where??
@goyalyashpal commented on GitHub (Jul 20, 2022):
the organizations hosted on github which release multiple applications for different different platforms are such a scattered mess (no offence). examples:
(will post later)
https://telegram.org/apps#source-code
WithOUT subgroups
/ (github-root)
├── tdlib
│ ├── td
│ ...
├── TelegramMessenger
│ ├── Telegram-iOS
│ ...
├── telegramdesktop
│ ├── tdesktop
│ ...
├── Telegram
├── TelegramSwift
├── tweb
├── telegram-tt
├── webogram
├── telegram-react
├── telegram-wp
...
With subgroups
/ (github-root)
└── telegram
├── tdlib
│ ├── td
│ ...
├── android
│ ├── Telegram
│ ...
├── iOS
│ ├── Telegram-iOS
│ ...
├── desktop
│ ├── tdesktop
│ ...
├── mac
│ ├── TelegramSwift
│ ...
├── web
│ ├── tweb
│ ├── telegram-tt
│ ├── webogram
│ └── telegram-react
└── telegram-wp
@davama commented on GitHub (Aug 24, 2022):
this feature would be great to have in gitea!
Just curious how things are with this FR
any updates?
Thank you for the support!
Regards,
Dave
@atommaki commented on GitHub (Sep 29, 2022):
I've just finished a gitea trial for our company which failed on this issue. I believe gitea is one of the best git hosting solution, but without this capability it is just not enterprise ready. If you have dozens of git repositories and different user groups than it is a nightmare to manage all on the same level. For my boss: that was a no go. Now I am stuck with gitlab, what is an ugly monster compared with gitea (at least from the administration point of view).
ps: This issue is currently the 5th most liked (I assume that meant 5th most requested) amongst 1800+ (!) open issues...
@mrexodia commented on GitHub (Sep 29, 2022):
Perhaps you could convince your employer to contribute some manpower to Hacktoberfest and help implement it…
@tomdavidson commented on GitHub (Sep 29, 2022):
@atommaki Im one to have liked subgroups but this position of subgroups being deal break seams both anomalous and hyperbole, ie, not productive. GitHub is not suitable for your company either? Subgroups being the deal breaker seems anomalous.
GitHub has over 200 million repos, used by 73 million developers with 32 million visits per month. The lack of subgroups has not impeded use and adoption. I couldnt find an org count but have worked at places with over 1000 repos and regularly see orgs with dozens and they have not left for GitLab's subgroups.
As VP of Eng that finally go my way and purchased GitLab, I was pissed to run into bugs for Enterprise features that were over 2 years old and waiting for community contribs. I ended up getting the contact cancel, money back, and moved to GitHub where thinks actually work. GitLab's open core model is a lie, the worse of both worlds where the community is exploited and the company focuses on royalty extraction. The fact that GitLab has subgroups and GitHub does not is negligible.
If dozens of repos with various user groups is too much to admin, I dont understand how managing GitLab with subgroups makes that big of difference. Yes a subgroup can be configured to inherit some settings from the parent group but its still massive amount of point and click admin.
You can use terraform/pulumi, a github app, or even crossplane to manage your github and gitlab config. Perhaps the administration experience and functionality is where Gitea should focus? Build-in a configure all the settings by in repo config file?
Im also a fan of shared repos for each service boundary or bounded context so a team typically only deals with one repo. You end up with some monorepo cicd config addressing separate workspaces but your business might only have 10 bounded contexts and dozens is unlikely. I dont see massive value difference in subgroups vs a shared repo, at least not enough to put up with GitLab's business model.
@atommaki commented on GitHub (Sep 30, 2022):
@mrexodia
My company goes with gitlab now and not interested in another migration, so they motivation is low. However I am happy to help. Write me a pm and let's have a call...
@atommaki commented on GitHub (Sep 30, 2022):
@tomdavidson Github has subgroups, but it works bit differently, as soon as you register you have your "domain" of repositories and access management. But anyway, regardless how github works, a tree based structure is usually very natural for a company, it helps not only with the permissions, but gives you a good overview of what repositories you have and it likely mirroring some way the structure of the organization. And as it quite obvious from this thread I am not the only one thinking like this. This feature is missed by many.
@goyalyashpal commented on GitHub (Sep 30, 2022):
wow lol. this argument is just so awesome. i really really like this.
P.S:
same can be said for the lack of FOSS model of github. so, why bother with
creating yet another Forge site. the point should be improving upon, and
not just copy pasting some other popular existing service.
lack of sub-groups is a deal breaker for those who have used the subgroups
even once, the same way non-FOSS becomes a deal breaker for people who
start to enjoy FOSS even once.
Tom Davidson wrote:
@lafriks commented on GitHub (Sep 30, 2022):
Let's stay to the topic, this is not place for discussion. If you have nothing to add that would contribute to implementing this feature in Gitea, just add reaction to issue. Otherwise if you want to see this issue fixed you will have to wait, implement yourself or pay someone to implement this for you.
@mygit123hotmail commented on GitHub (Jun 9, 2023):
1.21 Will it be implemented? Very good. Multifunctional
@lunny commented on GitHub (Jun 12, 2023):
Why do you think that? Nobody are working on this.
@delvh commented on GitHub (Jun 12, 2023):
To clarify @lunny's words:
Gitea is (almost solely) developed by volunteers in their free time.
If you want a (large) feature and no one is working on it yet, you need to implement it yourself to see any chance of it getting merged.
Otherwise, it is fairly unlikely that a feature as big as that will ever be merged.
(One exception: if a maintainer misses this feature enough to go through the work of implementing it for you)
There are 2000 issues here (at the time of writing). We are already swamped with what needs to be done.
However, if you were to implement it, here's a word of advice:
Discuss your proposed solution in detail here.
The description of what this issue entails is completely missing at the moment, as far as I can see.
Otherwise, it can happen that you develop something whose architecture is absolutely not suited for Gitea.
@VAllens commented on GitHub (Apr 8, 2024):
That's necessary.
@KarenArzumanyan commented on GitHub (Apr 25, 2024):
It would be great. We also suffer from the lack of such an opportunity. We are really waiting for someone to take up the implementation.
With great hope.
Thank you.
@Nicolab commented on GitHub (Apr 25, 2024):
Yes it would be great... But since 2017, I no longer believe.
Go ahead, unsubscribed from this issue and I have migrated my personnal repos.
Good luck
@meng-plus commented on GitHub (Apr 25, 2024):
Can this function be easily implemented? For example, identifying the "/" in the warehouse name as a subdirectory also facilitates our management of internal warehouses within the organization
Just like when we name our branch "feature/mod1", we get a feature group
I believe that this change can also solve most of the requirements without the need to change how to modify the permissions of the subgroup
@wxiaoguang commented on GitHub (Apr 25, 2024):
I could understand many users really like this feature and I also like it, however, by my understanding, it is nearly impossible to implement it at the moment. There are too many blockers for it.
@atommaki commented on GitHub (May 16, 2024):
So the work could start by making a list of these blocking issues.
@Frankkkkk commented on GitHub (Jul 3, 2024):
@remram44 just curious: why are you "downvoting" every person that agrees that this feature could be useful?
@remram44 commented on GitHub (Jul 3, 2024):
Agreeing is done with the 👍 button. Posting "me too" just spams everyone's inbox with emails that have no content. Don't do it.
@Nicolab commented on GitHub (Jul 4, 2024):
It's not just "me too" downvoted. Useless.
@ghost commented on GitHub (Oct 17, 2024):
8 years it has been. Can we setup a bounty for that feature ?
(also making this alone doesn't seems possible, it has to be a team work)
@lunny commented on GitHub (Dec 14, 2024):
Would you accept a router like
org1/-/group1/repo1. Only one level group, no multiple groups supported.@VAllens commented on GitHub (Dec 15, 2024):
When we implement the concept and design of groups,
why not be able to support multiple tiers easily?
But anyway, it's a very good start!
@lunny commented on GitHub (Dec 15, 2024):
Yes, in the future, we plan to support structures like org1/-/group1/subgroup1/repo1. However, initially, we may limit support to a single tier to make it easier to be implemented.
@delvh commented on GitHub (Dec 15, 2024):
Edgecases
Note, however, that before we implement anything like that, we must first think about the permission system.
This can only work if we define the permission system correctly.
There are quite a few edge cases I can think of at the top of my head:
How do we model teams then?
Is a team a unit across the entire organization?
Is a team only available for a specific subgroup?
Do we throw out teams entirely and model them as subgroups instead?
If the team is a cross-organizational unit, how are conflicting permissions handled?
I.e. user
aliceis part of groupgroupand teamteam.groupis not permitted access to repox.teamhowever is. Isalicenow able to seex, or no?If we don't throw out the definition of a
teamwith this, then what's even the difference between asubgroupand ateam? Both should be able to do pretty much the same except the team is much more flexible in its permission system.Is this worth it?
It's exactly these questions that make me ask myself if this feature is really worth it?
As far as I can see, a much simpler solution is to just use the term
organizationmuch more loosely (to compare it to bitbucket, simply use it as aproject, so a set of connected repos that perhaps have a small "user filter" so that it is only accessible to some people).Suggestion
I think at the heart of this discussion, there is a conflict between what is stated here and what is actually needed:
The proposed problem is to make orgs even more hierarchical.
I disagree with that approach: That makes a lot of problems for marginal gains.
What I think is needed instead is the following:
We need to improve the UI to allow much easier copying of the hierarchical structure:
For example, if it was possible to copy the hierarchy of one organization recursively (i.e. the new org receives the same users and teams as the old org) without copying the repos, this feature won't be needed anymore:
All of a sudden, you can achieve the same thing as with subgroups which are an exorbitant amount of work with a single button click to generate a new organization from an existing one.
Or am I missing something here?
Is there any usecase that isn't possible with an easy
copy hierarchyUI that is possible with awe are 20 hierarchical layers deeply nestedapproach?This UI would need to do two things:
@bkilinc commented on GitHub (Dec 15, 2024):
I am just a user here. All I need is namespaces to repositories. I don't like gitlab's approach. it is confusing. Repositories are in organizational entities like groups. Namespaces are ok for me they are just prefixes. It can be shown as a tree. Groups are organizational structures. It can be handled elsewhere. One can give namespace permissions to groups etc.
@lunny commented on GitHub (Dec 15, 2024):
Maybe we can support a custom filter on the repositories list, this approach will not touch any other infrastructure. The team can add repositories or a repository filter(we can have a new name for that). And also a default filter can be assigned to a team or a user in this organization. But I don't know whether this satisfy most of your requirements.
@VAllens commented on GitHub (Dec 16, 2024):
For individual users, there is no team, no organization, so the existing functionality is perfectly adequate.
For enterprises, there are organizations, departments, teams with cross-departmental collaboration, and projects with cross-departmental collaboration, so the existing functionality is not sufficient.
@KarenArzumanyan commented on GitHub (Dec 16, 2024):
Several levels of grouping are not often encountered in practice.
One level seems sufficient for 90% of cases.
At least one level is very necessary.
For example, there is a large project and several subprojects.
It is convenient to set up access to the group at once (this is very important).
It is convenient not to mix it visually with other projects.
A very good start with one level, maybe even sufficient.
@KlavsKlavsen commented on GitHub (Dec 16, 2024):
one note on that notation though.. if repos belong to groups - and thats the same as "permissions" ? - then we agree repos that needs to be accessed by other groups - needs to be outside any group, or?
IMHO the team perms currently there is "not too bad" (although confusing that you can't decide per repo you add them to - what that teams perms are there)
So whats IMHO needed is only the visual grouping.. not access groups.. so I'd not call it groups if its ONLY for "visual filtering".. then it should merely be called category - as its not about permissions ?
@bkilinc commented on GitHub (Dec 16, 2024):
No, existing functionality is not adequate, if I have 200 repositories for example. I need to organize them in sub projects. There is no groups at this time, but there may be. so I should be able to give permissions to groups.
@mrexodia commented on GitHub (Dec 16, 2024):
I know for a fact there are at least two companies that are not migrating from Gitlab to Gitea because there are no groups for organizational purposes. Groups are purely used to organize your organization's (aka development team's) repositories and one level is more than enough. This is already useful, purely so you do not have 200 repositories in a single list.
Making things like permissions/issue lists/whatever a prerequisite is just scope creep and will only add more and more delays to this feature which people have been requesting for almost 8 years(!) Once the basics are implemented you can always completely redo the feature with overengineered permission systems and other bells and whistles and spend another 8 years on that if necessary, but I think getting something out quickly will make 🤷🏻♂️
@Frankkkkk commented on GitHub (Dec 16, 2024):
I totally agree. Same here. We wanted to migrate and "just" needed a simple hierarchy : /project-A/component1/code_a , and having 2 level "groups" would have been nice too. Of course there were other issues (the most important one was CI token rights to push on registries), but groups were one of them
@KlavsKlavsen commented on GitHub (Dec 16, 2024):
If I wasn't clear - yes. Merely a categization of repos (1 level is fine) - so you can work with a "subset of repos" in a list - would be more than enough.
If that "category" - corresponds to what a team manages of repos - then one an just add those repos to the teams list of repos.. its not a big problem - so the simple solution helps a LOT - and then build on that.
the category could also match a project - or departments with multiple teams or whatever.. just having category (and cefault listing showing category name - not all repos below it) would be a very useful improvement.
@algora-pbc[bot] commented on GitHub (Dec 21, 2024):
💎 $80 bounty • Frank Villaro-Dixon
💎 $100 bounty • jozek.woloch
Steps to solve:
/attempt #1872with your implementation plan/claim #1872in the PR body to claim the bountyThank you for contributing to go-gitea/gitea!
Add a bounty • Share on socials
@GamerGirlandCo commented on GitHub (Dec 25, 2024):
/attempt #1872
secrettable uses will have to be updated. same applies to runnersOptions
@lunny commented on GitHub (Dec 25, 2024):
Hi @GamerGirlandCo , since this is a very complicated feature. Please discuss more in this issue before you can send a pull request.
@GamerGirlandCo commented on GitHub (Dec 31, 2024):
@lunny here's a checklist i made over the last few days encompassing tasks that need to be completed
mostly, this entails adding a
GroupIDfield to the following structs, and updating their accompanyingFind...Optionstypes to enable searching by group idstores a team’s access level to a group
like a repository unit, but grants or denies access to a specific unit at the group level. will override unit permissions defined on a team
access to these endpoints is governed by
read:organizationandwrite:organizationscopes/org/{org}/groups/new→ create a new group at the root level of an org/org/{org}/groups/{group_id}/org/{org}/groups/{group_id}/new→ creates a new subgroup inside a group/org/{org}/groups/{group_id}/move→ moves a group to different group in the same organization, or to the root level ifnewParentis null or 0/{username}/{reponame}/groups/move→ moves a repository to a different group within an organization, or to the root level ifnewParentis null or 0/{org}/groups/{group_id}→ group home/org/{org}/groups/{group_id}/teams→ list of teams which have explicit access to the group. explicit access to the group may be granted via this page to teams that don't already have it/org/{org}/groups/{group_id}/teams/edit→ a page to edit a team’s permissions in a group. should require actor to have admin or owner privileges/org/{org}/groups/{group_id}/settings→ a settings page with the following@Frankkkkk commented on GitHub (Dec 31, 2024):
Does this allow for recursive groups ? If so, by seeing the URLs, I guess they don't show on the URL ? Cheers
@GamerGirlandCo commented on GitHub (Dec 31, 2024):
yes it does, up to 20 levels :)
and on group pages, there will be a breadcrumb showing the group's ancestors
@wxiaoguang commented on GitHub (Jan 1, 2025):
Thank you very much for your work! IIRC there is another blocker: how to generate and parse/handle the repo link correctly, because the "/{owner}/{repo}" format has been hard-coded everywhere for years, new design needs to handle the new path format correctly, otherwise many things won't work (for example: repo access, the markdown render)
And since this task is quite challenge and the participants should be very familiar with Gitea's internals, I think if new participants could start with some easy tasks (like improving tests, refactor legacy problems), then it would help to understand more details of internals and design the new approach better.
@GamerGirlandCo commented on GitHub (Jan 1, 2025):
my implementation doesn't modify the existing URL format.
i guess that's fair. though i'd like to think that working on this for the past week (give or take) is teaching me about gitea's internals quite well :)
@miztizm commented on GitHub (Feb 2, 2025):
This is a great idea! Voting for this!
@ttimasdf commented on GitHub (Feb 6, 2025):
I'd like to share some insights from a different view point.
Github does not support subgroups. Microsoft prefers monorepo, where all sub-projects are contained within a single large Git repo, and they develop tools to better manage monorepos (saying scalar).
I know this is approach is not for everyone, but at least a workaround that we could try at the time?
@mrmelon54 commented on GitHub (Feb 14, 2025):
Having a monorepo is very different from lots of smaller repos stored in subgroups. What if the projects are related but don't share any source code at all. It could potentially be worse for development to have them in a big monorepo.
@algora-pbc[bot] commented on GitHub (Jun 14, 2025):
💎 $250 bounty • David Flanagan
💎 $100 bounty • jozek.woloch
💎 $80 bounty • Frank
Steps to solve:
/attempt #1872with your implementation plan/claim #1872in the PR body to claim the bounty❗ Important guidelines:
Thank you for contributing to go-gitea/gitea!
@algora-pbc[bot] commented on GitHub (Jun 14, 2025):
💎 $50 bounty • Klexx
💎 $250 bounty • David Flanagan
💎 $100 bounty • jozek.woloch
💎 $80 bounty • Frank
Steps to solve:
/attempt #1872with your implementation plan/claim #1872in the PR body to claim the bounty❗ Important guidelines:
Thank you for contributing to go-gitea/gitea!
@algora-pbc[bot] commented on GitHub (Jun 17, 2025):
💎 $500 bounty • Julien-Pierre Avérous
💎 $50 bounty • Klexx
💎 $250 bounty • David Flanagan
💎 $100 bounty • jozek.woloch
💎 $80 bounty • Frank
Steps to solve:
/attempt #1872with your implementation plan/claim #1872in the PR body to claim the bounty❗ Important guidelines:
Thank you for contributing to go-gitea/gitea!
@kinosang commented on GitHub (Jul 15, 2025):
Hi all,
when adding support for subgroups, should we treat them purely as a UI‑level concept — meaning we wouldn’t touch any actions, permissions or team functionality — or opt for a more powerful implementation? If we go the latter route, do we plan to alter clone URLs to include the subgroup path, or keep existing URLs unchanged?
@GamerGirlandCo commented on GitHub (Aug 13, 2025):
i'm going to split this feature up into several chunks, and submit a separate pull request for each.
this includes the creation of the related types and API routes
this includes page templates, web routes and javascript for viewing, reordering, creating and editing groups
features such as group-scoped runners, runner tokens and secrets, as well as the related UIs for editing them, will be included here
@lunny commented on GitHub (Aug 13, 2025):
Thank you for considering contributions. Please have a detailed proposal to get acceptance from maintainers. From my side, I think first of all, the repository disk structure needs to be changed. A new column about the relative storage path should be added in the repository database table. Because the repository a/b/c should not be stored under a/b, otherwise it will result in many conflicts.
@GamerGirlandCo commented on GitHub (Aug 13, 2025):
my implementation does not touch repository urls or how they're stored.
i've simply added
GroupIDandGroupSortOrderfields to theRepositorymodel, which dictate which group a repo belongs to and its index within that group. from there, the frontend displays breadcrumbs at the top of the page, as well as a sidebar showing the entire group hierarchy for easy navigation.@netthier commented on GitHub (Aug 17, 2025):
@GamerGirlandCo How does your proposal handle repositories with the same name but in different subgroups of the same organization?
One of the big and main advantages of groups, at least for me, is that they act as a kind of namespace, allowing me to re-use repository names within an organization, differentiated by their parent group (e.g. GitLab allows this).
If the parent group is only a piece of metadata in the database and the on-disk format stays the same, the repos would collide.
And as suggested by others it might be prudent to first post an RFC with a detailed description of your proposal before spending too much time implementing something that might not be accepted on design grounds 🤔
@GamerGirlandCo commented on GitHub (Aug 17, 2025):
thanks for your feedback! i've implemented changes to repo layout on disk. the repos will now be stored as
{RepoRoot}/{org}/{groupID}/{repoName}, or, if the repo isn't part of a group, it will simply be stored as{RepoRoot}/{org}/{repoName}.@GamerGirlandCo commented on GitHub (Aug 20, 2025):
@lunny is it okay if i modify the makefile and add a tool to generate versions of the repo routes with a
/group/{group_id}segment for the swagger spec?this is to ensure that in the future, people who update the repo routes (the ones that start with
/repos/{owner}/{repo}) don't have to do the work of writing two functions that do the exact same thing and annotate them with comments so it gets picked up by go-swagger.@lunny commented on GitHub (Aug 20, 2025):
I think
make generate-swaggercan already do that?@GamerGirlandCo commented on GitHub (Aug 22, 2025):
i did a ton of research and it can't, not without duplicating
//swagger:operationcomments for every API endpoint that starts with/repos/{owner}/{repo}. i wrote a small tool to automate this, meant to be run during themake generate-swaggertarget:build_tools/swagger/main.gothe makefile would then need to be updated like so:
@yamz8 commented on GitHub (Oct 13, 2025):
any updates here?