Introduce 3-segment gl_repository identifier for group wiki
Summary
A repository identifier (gl_repository
) currently is a dash (-
) separated string (e.g. project-7
) which allows identifying a repository and its holder (often called container
).
We wish to enable group level wiki (&2214 (closed)). However currently wiki's repository identifier (e.g. wiki-7
) makes the assumption that it always belongs to a project. The number 7 indicates it belongs to project id 7.
Under this scheme we won't be able to represent wikis belonging to groups.
Proposal
Allow group 7's wiki to be represented as group-7-wiki
.
This 3-segment format is more extensible. The definition is [AR container class]-[AR container id]-[repository type]
, where:
- repository holder class would be the active record class name (e.g. "project")
- repository holder id would be the active record id (e.g. 7)
- repository type indicates it being
code
,wiki
ordesign
.
Risks
None, as we won't be changing the current 2-segment format yet.
Involved components
- identifier generation in
RepoType#identifier_for_container
- identifier parsing in
Gitlab::GlRepository#parse
-
Gitlab::RepoPath#find_container
for parsing the container - API
internal/allowed
endpoint - post_receive hooks and jobs
Further readings
- When "repository identifier" was first envisioned: gitlab-foss#29925 (comment 26064663)
Edited by Mark Chao