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.
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.
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:
- How are wiki and design management repositories currently handled there?