A few days ago, I decided to start a git repository (+ github account) for my XThreads MyBB plugin. I never really believed this plugin to be complex enough to really require version control, but as I have never used git before, I decided to use it as an opportunity to test it out and gain some experience with it.
I’ve previously had experience with SVN, and felt that it was rather clunky for handling most personal projects, and the idea of a decentralised version control system (DVCS) somewhat appealed to me. I did some research before diving into git – apparently, one of git’s criticisms is its steep learning curve. But I still chose it above other systems such as Mercurial, mainly due to its popularity. I decided to counter this difficult learning curve by using a TortoiseGit to do most of the stuff for me.
So far, I really do quite like this system over SVN:
- I no longer have to run an SVN server on my computer (don’t really like running background services that much), and/or have to always commit to a remote server
- Potentially, I could put it on a USB and commit stuff when away from home (except no TortoiseGit; maybe there’s a nice Windows based git GUI somewhere…)
- It doesn’t have pesky .svn folders all over the place, so you can simply copy out or package the stuff you’re distributing without having to worry about performing an export
- Being all contained within a folder, you can easily make a backup copy of the repo if you wish, and restore it if you totally trash the repo
- It seems a lot faster than SVN. Maybe it’s because I’ve only got a very small amount of code, but it does certainly seem faster, despite the MSYS builds of Git apparently being slower than the Linux ones.
One negative is that it doesn’t have revision numbers like SVN does. Possibly this is due to it being designed for non-linear development. Maybe the feature is there somewhere (as git is said to be powerful) or can be implemented in some way, but it appears that the stock system doesn’t support revision numbers (I guess commit dates can be a reasonable proxy for linear development).
Using public key authentication over passwords is an interesting one – I haven’t really thought about it, but my 2 second intuition doesn’t seem to show much benefit. Maybe it’s because it uses SSH rather than HTTP (SVN)?
As for GitHub, their issue tracker seems to be basic compared to something like Redmine. I also noticed that it doesn’t seem to have the ability to diff between arbitrary revisions (would be really useful IMO).
But I guess it’s probably sufficient for a personal project (although I would like to be able to diff between multiple revisions).
Overall, I somewhat like this system, and in fact may put a lot of my code under Git version control, if I can get a better USB drive and maybe learn the Git command line (or find a good portable Git GUI).