Technical discovery for version controlled snippets
Problem to solve
Currently snippets are stored as blobs in the database which limits our ability to add additional features like version control, working locally, multiple files, forking and other actions.
Further Details
Snippets exist in a both Personal https://gitlab.com/<username>/snippets
and Project https://gitlab.com/<user/group-name>/<project>/snippets
and it's important to consider both of these paths.
It's also possible that in the future there might be a feature path that would allow snippets to be promoted
to a project, so it's a consideration to keep in mind.
Additional features that may impact considerations here can be seen in the Design/Discovery for Snippets issue.
Proposal
This issue serves as a technical discovery issue to develop an implementation plan for moving snippets out of the database and to git based storage. The goal of this discovery is to understand the dependencies with other services and changes that might need to be made to support this.
Questions we want to answer
- What namespaces should we use in the URLs?
- Which subpaths do snippets need to support? Do we need to be able to address branches/tags/paths like for project repositories?
- Should all snippets (regardless of project/personal) continue to live at
https://gitlab.com/snippets/<ID_OF_SNIPPET>
(maybe based on how we handle them in namespaces)
- What's roughly the scope for changes in other involved components:
gitaly
gitlab-shell
gitlab-workhorse
- How are wiki and design management repositories currently handled there?
This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.