Gitlab
We have all our source code on our Gitlab.
For those unfamiliar with Gitlab, a small introduction. In Gitlab, everything work-related is done at the Project level. A Project hosts the code base (Git) and can contain additional features like issues tracking, a Wiki and CI.
A Group groups projects and/or users. On the one hand, regarding users, we have one group TEAM on our Gitlab, of which everyone from Codifly is a member.
On the other hand, we have a group for each of our customers, containing the projects for that customer (note that when we create multiple products for the same customer, we create a subgroup for each product, and then organize the projects in those subgroups).
Internal projects, like this bible, the Codibot and our website are stored in the codifly-group. We can see this as "we are our own customer" ;).
Some considerations:
- Use kebab-case as casing convention for group and project names.
- Keep project names as short as possible. For a customer
Beton Deluxe, don't name the front end projectbeton-deluxe-front-end, but considerweb. The group itself is part of the clone url, and otherwise we would get an unnecessary long clone url.../beton-deluxe/beton-deluxe-front-end.git. - For some projects, we work on the Git repositories of the customer. When we finish the project, we always keep a copy of the source code on our Gitlab. We then consistently use an
-EXT-suffix in the project name. - When creating a group for a customer, always add the logo of the customer as image. This makes it easier to recall what's what.
- After creating a new project, give access to the team via Settings > Members > Share with group (select the
TEAMgroup with role permission Master). Also immediately go to Settings > General and enable the project features (e.g., Merge Requests, Wiki, Container Registry,...) necessary for the project. Only enable features that will actually be used, though.