DISCLAIMER: Image is generated using FREE version of ChatGPT.
GitHub meets GitLab
Recently at work, I had to work with a codebase that resides in GitLab.
I am a die-hard GitHub user and never considered GitLab for any one of my pet projects.
All my open-source work is public on GitHub.
That said, I created an account, @manwar, on GitLab as a protest when Microsoft took over GitHub, but I never used it as much as GitHub.
As a trial, I did create a project for one of my CPAN module BankAccount::Validator::UK, six years ago.
Year 2025
Fast forward to today, I find myself staring at GitLab again.
To familiarise myself with the GitLab UI, I created a new project called Hello World.
I even added a simple pipeline which is equivalent to a workflow in GitHub.
I tested it with a new branch and a merge request.
I experienced a bit of culture shock when I encountered GitLab's terminology.
So, I decided to take a step back, understand everything from ground up.
In this post, I’ll explore GitLab from a GitHub user’s perspective to make it easier for me to grasp.
Top-level container
In GitHub we have something called GitHub Organisation.
I didn’t use it initially because I wasn’t aware of it when I started.
By the time I learned about it, it felt too late and time consuming to restructure everything.
So I stuck with standalone repositories.
In GitLab, the equivalent of an Organisation is called a Group.
Just like in GitHub, you don’t need to have a GitHub Organisation to create a repository; in GitLab also, you can create a project without a Group.
By the way, what GitHub calls a repository, GitLab calls a project.
Teams
In GitHub Organisation, you can create multiple teams.
And each team can be granted access to one or more repositories within the GitHub Organisation.
Similarly, in GitLab, within a group, you can have multiple subgroups (forming a nested hierarchy).
GitLab: https://gitlab.com/<group-name>/<subgroup-name>/<project-name>
GitHub: https://github.com/<org-name>/<repo-name>
Code Reviews
To initiate a code review in GitHub, we create a pull request after pushing the changes to a branch.
In GitLab this is called a merge request, but the process remains the same.
CI/CD
In GitHub, we use GitHub Actions for workflow, configured in .github/workflows/*.yml.
In GitLab, it is called pipeline and the configuration file is .gitlab-ci.yml.
For now, this was enough to get me started.
I know, GitLab is a beast compared to GitHub.
I am going take one baby step at a time.
Keep Hacking !!