[S-Git-001] Project Repository Group Structure & Project Repository Naming Convention
In this article:
Overview
Our Git convention name is enforced to make cost reporting, grouping, and searching easier. For example, this approach will make sure that every cost in infrastructure such as server labeled the same as the finance code that was registered in finance team and make it easier to charge the cost to each project budget.
This rules also preventing issues in other engineering tools such as automation in auto build, auto distribution, etc.
Scope
This standardization cover the convention name when the creation of repositories group for the project—and the project repositories itself—was occurred. This standard applies to the person in charge for each level repositories level.
Production Director and Technical Director was the parties whose in charge in creation of project group repository, while the Lead Programmer was in charge in the creation of Project Repository under group repositories. The producer was there to ensure all of the name convention was implemented correctly.
Project Repository Group Structure & Project Repository Naming Convention
[S-Git-001.1] Project Repositories Group Structure
Group Repository is like a folder for repository. Each Group Repository can have another multiple Group Repository.
Root Repository is Group Repository for each division.
Because the main reason is for tracking budget and issues when something happen, these rules was focused more on what goes in to CICD pipeline—deployed server and deliverable build. Other things saved inside Project Group Repository can be saved to what Lead Programmer prefer to, but please keep in mind that Lead Programmer is the one who’s responsible for project development longevity in terms of technical debt and project maintainability—hence also responsible in maintaining the Project Repository and Project Repository Group.
Below is the example for repository structure.
|-- FullSKU <RootGroup, different each division>
| |-- EB-Metasims <ProjectRepositoryGroup, use ProjectCode from Finance Team>
| | |-- EB-Metasims-Unreal <ProjectRepositories, same as ProjectRepositoryGroup but with suffix -Variant1-Variant2=Variant3>
| | |-- EB-Metasims-Unity
| | |-- EB-Metasims-Backend
| | |-- EB-Metasims-AdminPanel
| | |-- BackendService <Sub group used by backend>
| | | |-- IdentityService <Tools specific used by project that does not require CICD, not included as deliverable items>
| | |-- MiniGames <Sub group containing mini games, also PascalCase>
| | | |-- MulbuldozerRacing <Mini games, also PascalCase>
| | |-- UnrealModule <Sub group containing module specific for project, also PascalCase>
| | | |--
| | |-- Tools <Other sub group>
| | | |-- CsvToMongoExporter <Tools specific for project that does not require CICD, not included as deliverable items>
| |-- ProjectRepositoryGroup2
| |-- ProjectRepositoryGroup3
[S-Git-001.1.1] Project Repositories Group Should Under Root Group
This will make it easier to track where the project exist and under which division. This can goes to budget tracking for server and MPP.
[S-Git-001.1.2] Project Repositories Should Under Project Repository Group
This will make it easier to track where the project exist and under which division. This can goes to budget tracking for server and MPP.
[S-Git-001.1.2.1] Main Project Repositories Should Under Sub Group
This will make it easier for other programmer to get started to the project.
[S-Git-001.2] Project Repositories Group Name
[S-Git-001.2.1] Follow The Pattern
ProjectCodeName-Variant1-Variant2-Variant3
Above is the pattern. This rule wasn’t affecting Sub Group.
[S-Git-001.2.2] Use PascalCase for each variant
PascalCase refers to starting a name with a capital letter and then instead of using spaces, every following word also starts with a capital letter. For example, Â DesertEagle
, Â RocketPistol
, and and ASeriesOfWords
.
See See Cases for Letter.
[S-Git-001.2.3] Never Use Unicode Character And Other Symbols
Repository and Group must contain only English alphanumeric characters and underscores.
If one of the character use unicode like ë, its should become become e
. Unicode characters can be worse than than Spaces  for engineering tool and some parts of Unreal don't support Unicode characters in paths either.
Using other characters outside outside a-z
, Â A-Z
, and and 0-9
 such as as @
, Â -
, Â _
, Â ,
, Â *
, and and #
 can also lead to unexpected and hard to track issues on other platforms, source control, and weaker engineering tools.
See Forbidden Character.
// todo: fix below article to follow article format
Project Repositories
Project repository is the place where the project will be saved (versioned). There are some project that directly under the project group—Main Repositories, and some projects that collected under project subgroup—Grouped Repositories.
Main Repositories
There can be multiple projects that was under the same project group, like backend, game, admin panel, etc.
- [CodeNameProject] Backend
- [CodeNameProject] Admin Panel
- [CodeNameProject] Game Unity/Phaser/Unreal
- [CodeNameProject] [ServiceNames] Service
- [CodeNameProject] Web
For example:
- lvup-service/EB-Metasims/Metasims Backend
- lvup-service/EB-Metasims/Metasims Admin Panel
- lvup-service/EB-Metasims/Metasims Game Unity
- lvup-service/EB-Metasims/Metasims Identity Service
Grouped Repositories (project repositories under subgroups)
Under the subgroup, the project repositories use the same standard naming except the word Game should be changed to MiniGame.
- [MiniGameName] MiniGame Unity/Phaser/Unreal
For example:
- lvup-service/EB-Metasims/Mini Games/MatchTheCard MiniGame Phaser
tl-dr
- lvup-service
- EB-Metasims
- Metasims Backend
- Metasims Admin Panel
- Metasims Game Unity
- Metasims Identity Service
- Mini Games
- MatchTheCard MiniGame Phaser
- EB-Metasims
- lvup-product
- // TODO
- lvup-research
- // TODO