The site that you are currently viewing is a static version of the Software Factory documentation delivered with the

version v7.2.
For up-to-date documentation, see the latest version.

Source Code Management

Organize your Git repositories with GitLab groups, projects, roles, and collaborate through merge requests and code reviews

SF GitLab SCM

➡️ For detailed information about SCM Practices, refer to the section SCM Practices .

Organize your repositories

GitLab Group

Groups in GitLab are used to manage multiple projects together that share a common purpose or belong to the same team.

They act as containers that can hold projects, other groups (subgroups), and members.

Key Points:

  • Project Management: Groups allow you to manage permissions, settings , and access controls across multiple projects.
  • Collaboration: They facilitate collaboration by grouping related projects and team members together.
  • Subgroups: Groups can have subgroups, allowing for a nested structure to represent different departments or teams within an organization.

For example, you might have a GitLab Group called “NextGen Radar” that contains separate projects for the application frontend, backend, and content.

Here’s what GitLab Groups offer:

  • Shared resources: Share resources like CI/CD runners, templates, and group-level settings across projects within the group.
  • Permissions and access control: Manage permissions and access control for a group of projects in a centralized way.
  • Collaboration: Facilitate collaboration among team members working on different projects within the group.

GitLab Project

A GitLab Project is a fundamental building block in GitLab. It’s essentially a container that holds everything related to your software as code and project files , enabling collaboration through version control using Git.

It is sometimes refered to as repository and includes:

  • The code repository: Where your project’s source code is stored.
  • Issues: For tracking tasks, bugs, and feature requests.
  • Merge requests: For collaborating on code changes.
  • Milestones: For organizing and tracking progress.
  • Wiki: For documentation and knowledge sharing.
  • CI/CD pipelines: For automating builds, tests, and deployments.

✅ Utilize branches for feature development and bug fixes, and adhere to a consistent branching strategy to maintain code quality and avoid conflicts.

GitLab Roles

Roles in GitLab define what actions users can perform within projects and groups. GitLab provides predefined roles with specific permissions:

Key Points:

  • Owner: Has full control over the group or project, including settings, members, and permissions.
  • Maintainer: Can add/remove project members, push to protected branches, and approve merge requests.
  • Developer: Can push code, create merge requests, and manage issues and milestones.
  • Reporter: Can view code, issues, and merge requests, but cannot make changes to the code.
  • Guest: Can view issues and create comments but has limited access to code.
  • 🆕 Planner: designed for users who are primarily involved in planning and project management activities
  • 🆕 Minimal Access: Suitable for users who require very limited interaction with the project or group , ensuring minimal risk and exposure.

You can find the permissions linked to each role in the official GitLab documentation .

✅ Roles control access to the source code repositories, ensuring that only authorized users can modify or view specific parts of the codebase.

✅ Proper role assignment helps in maintaining the integrity and security of the source code by restricting write access to trusted users.

Collaboration

Merge requests & code reviews

Merge request are essential for collaboration. They allow you to conduct code reviews before merging changes into the main branch.

✅ When creating a Merge Request , remember to request reviews from the right team members, provide constructive feedback, and ensure all tests pass before merging.

Snippets

GitLab Snippets is a feature that allows users to store and share small bits of code, scripts, or text.

Snippets are useful for sharing code examples, configuration files, or any piece of information that can be reused or referenced later.

Snippets can be made public, internal, or private, depending on the desired level of accessibility and security.