Christopher / A Migration

Created Thu, 29 May 2025 00:00:00 -0400 Modified Tue, 03 Jun 2025 15:13:24 -0400
367 Words

A Migration

Well, the day has come. Almost as if fulfilling my prophecy of using a GitHub theme on this website, I've switched from GitLab to GitHub.

Almost since I started using Git seriously, I've been hosting my repositories on GitLab. I don't quite remember the process that led to my choice, but I think it was due to three reasons:

  1. GitHub had been bought by Microsoft
  2. GitLab had bigger storage limits
  3. DistroTube was using GitLab

This decision was heavily influenced by DistroTube, who was using GitLab and recommended people to use GitLab. As someone who had only dabbled in GitHub, I just went with what he advised. Additionally, I read that GitLab had a bigger storage limit, so that just reinforced my decision.

Years later, I'm coming to regret that choice. First, GitHub is by far more popular a platform, so most people aren't very familiar with GitLab (including me). I've become more familiar with GitHub's interface through my WorldEnd2 work, and now using GitLab just feels weird. Second, GitHub is much more suited to smaller projects rather than complex DevOps stuff that GitLab offers. For example, to attach a file to a release on GitLab, you have to upload it to their weird package registry using their API, probably through a build pipeline. It's an absolute pain when you're just working on a small project that you can just attach the release manually. Even if you're using GitHub Actions to automate the release, even that process is simpler and better documented.

Thus, I've moved all of my repositories over to GitHub. At the same time, I rebased every one of my commits to use my new GitHub name and email using git filter-branch:

FILTER_BRANCH_SQUELCH_WARNING=1 git filter-branch --env-filter '
OLD_EMAIL="<OLD_EMAIL>"
CORRECT_NAME="<CORRECT_NAME>"
CORRECT_EMAIL="<CORRECT_EMAIL>
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

Additionally, I made some more of my repositories public and made build workflows for the ones that mattered. Funny enough, this comes just a day after I shared one of my projects on Reddit using a GitLab link—in a post I can’t even edit.