Repo Per Project
If we want to base our project/issue/mr storage on repos instead of databases it would be tough. I/O is slow, so it would be near impossible to base our entire project level data on a git repo.
However, we could give the illusion of a git repo. To start, this repo would be read only, but in the future it could partially writable with permissions in place.
- Each project would have it's own repo URL separate from where the code is stored.
- When cloned, it would deliver a git repo (which theory could be generated on the fly).
- Directory structure could be something like:
- Project
- my_project.yml
- Issues/
- issue_188/
- issue_meta.yml
- issue_comments.yml
- issue_189/
- issue_188/
- Merge requests
- Wiki
- Labels
- Project
- Directory structure could be something like:
For the my_project.yml
(which we could give JSON instead) it could contain metadata about the project:
---
settings:
general:
project_name: my_project
project_description: a good project
tags:
- neat
- happy
- fun
- project management
more_settings:
some_setting: true
comments.yml
---
comments:
- author_id: '24601'
plain: you did great!
markdown: you did **great**!
- author_id: '24602'
plain: I agree with @jeff
markdown: I agree with [@jeff](/jeff)