You read that right: I’m finally on GitHub, after about a decade of inaction (yes, it’s been around that long). This must come as a very strange shock to you, seeing how every other self-respecting developer and their rubber duck has a GitHub account. How could I not?
Simple: I just never felt a need to make one. I’ve never had any open source projects to host using Git (I’ve historically been a Subversion and Mercurial user in the last decade), the one and only Git project I do maintain is privately hosted on VSTS, and I’ve never been compelled to make a pull request.
So why now? Well, recently I was getting tired of MDN being blatantly wrong on certain things (I’ve had to correct it about a dozen times on Stack Overflow), so I decided I’d finally take matters into my own hands and edit it myself. That’s when I discovered that a GitHub account was required, I kid you not, to sign into MDN because Mozilla had discontinued Persona.
Yes, a “reason” to make a GitHub account that had literally nothing to do with GitHub itself, let alone Git. Needless to say, I didn’t make an account there and then, because I thought that was incredibly asinine (what ever happened to distributed SSO solutions like the venerable OpenID?).
But now I have one, because I remembered last night that CodePlex had shut down last December and I had totally forgotten to migrate the one and only project I had on there. So I spent the better part of today migrating my WPF sample WPFDraggableFrame to GitHub (it’s still archived on CodePlex, but I still have my local working copy so that’s what I used). In other words: doing actual Git and GitHub things on GitHub.
Because CodePlex’s Mercurial servers have been taken offline, I wanted to see if I could host my repository on my site so I could use GitHub Importer to automate the process. Unfortunately, this resulted in many wasted hours for something that could have easily been done in 10 minutes. The binaries were there on my server, I could do things on the command line via SSH, I could clone the repository off of my site by having Mercurial fall back to static HTTP, but of course that wasn’t a Mercurial server. My host A Small Orange then told me that their KB article claiming that Mercurial is available on shared servers is outdated, which is a shame, but it’s shared hosting so I’m not super bummed about it.
So I ended up doing everything manually. Since I use Mercurial via TortoiseHg, hg-git, which TortoiseHg comes with, makes light work of the process of actually converting the Mercurial repository into a Git one. I did, however, have to run the Git repository through
git filter-branch to change the author details for all the commits so as to ensure they’d be tied to my GitHub account when pushed. As expected, these two steps were done in 10 minutes. I now have an 18-hour-old GitHub repository with commits dating back more than 5 years.
I’m not actually done migrating the sample — if you look closely, the documentation still references CodePlex (God I miss it already)! — but right now I just want to do things other than source control/housekeeping. Maybe dinner, maybe shower, maybe video games. But the migration will definitely be wrapped up before the end of the day.
I don’t expect to be an avid GitHub user by any stretch of the imagination, but now that I have an account, I might as well start using it.