Era of Git
<i>This post was originally made by <b>skyjake</b> on the dengDevs blog. It was posted under the categories: Practices, SourceForge.</i>
I've been recently experiencing a host of issues with SF.net's Subversion service and the prospect of switching to <a href="http://git-scm.com/">Git</a> for version control is looking more and more attractive. I had very positive experiences with Git while working on Hawthorn, and the advantages of Git would be very beneficial at the moment.
<ul>
<li>SVN is a dog when it comes to branch merge performance. It took me literally half a day to merge new-order-phase3 back to the trunk. Plus I was forced to do the final commit in several steps as the connection kept breaking. Also, SVN had somehow become confused about a couple of deleted files that had new content with the same file name (CMakeLists.txt), and was complaining about hash mismatches.
<li>I'm doing simultaneous development on three platforms (located on two separate computers), and it's a major inconvenience having to commit changes to SF.net in order to get them transferred between the systems. With Git I could just pull the changes over my private LAN, quick and easy.
<li>Being a distributed VCS, Git excels at branching. Using Git would make it so much more practical to create feature and task specific branches.
<li>Git's performance is in a different league compared to SVN. Doomsday has a fairly sizable code base already. Performance of repository operations is already an important issue, and it will become more so as time goes on.
</ul>
The largest downsides of Git are increased complexity when compared to SVN and at least in the past the Windows support has been rudimentary. <a href="http://code.google.com/p/tortoisegit/">TortoiseGit</a> should be given a try.
Nevertheless, I'm of the opinion that we should move on from SVN and begin the era of Git. Any objections?
I've been recently experiencing a host of issues with SF.net's Subversion service and the prospect of switching to <a href="http://git-scm.com/">Git</a> for version control is looking more and more attractive. I had very positive experiences with Git while working on Hawthorn, and the advantages of Git would be very beneficial at the moment.
<ul>
<li>SVN is a dog when it comes to branch merge performance. It took me literally half a day to merge new-order-phase3 back to the trunk. Plus I was forced to do the final commit in several steps as the connection kept breaking. Also, SVN had somehow become confused about a couple of deleted files that had new content with the same file name (CMakeLists.txt), and was complaining about hash mismatches.
<li>I'm doing simultaneous development on three platforms (located on two separate computers), and it's a major inconvenience having to commit changes to SF.net in order to get them transferred between the systems. With Git I could just pull the changes over my private LAN, quick and easy.
<li>Being a distributed VCS, Git excels at branching. Using Git would make it so much more practical to create feature and task specific branches.
<li>Git's performance is in a different league compared to SVN. Doomsday has a fairly sizable code base already. Performance of repository operations is already an important issue, and it will become more so as time goes on.
</ul>
The largest downsides of Git are increased complexity when compared to SVN and at least in the past the Windows support has been rudimentary. <a href="http://code.google.com/p/tortoisegit/">TortoiseGit</a> should be given a try.
Nevertheless, I'm of the opinion that we should move on from SVN and begin the era of Git. Any objections?
Comments
I'm working on importing our current SVN repo into a Git repository.
We should spend a few moments making sure the repository import went without problems.
SVN commits should be discontinued.
<b>EDIT:</b> Disabled SF.net SVN write access.
<strong>EDIT</strong>: It looks like we'll need to manually set up a Git client script for our <a href="http://cia.vc/stats/project/deng" rel="nofollow">CIA, deng project page</a>. I don't have login details for this, skyjake, do you?
I suggest we stop using CIA.
(One would need a script that does the CIA update and add that to the git repository hooks via SF.net shell access. Googling might turn up the script.)
PS. I recommend watching <a href=" rel="nofollow">Linus's talk on Git</a>. I found it entertaining (and informational).
<b>EDIT:</b> Had to wrestle the script a bit but now it works. Commit notifications have a link to the right gitweb page.
I also set up a clone of the repository in my <a href="http://git.sjke.org/deng.git/" rel="nofollow">personal gitweb</a>. This is nice as it'll allow me to work on my different systems and share changes between them without ever accessing the SF.net main repository.
<b>EDIT2:</b> I updated the (developer) <a href="http://dengine.net/dew/index.php?title=Getting_started" rel="nofollow">Getting started</a> wiki page with some new information about Git.
Find any issues with the conversion to git ? I used git svn clone myself - it took a while but seems to have worked well.
I find that git is still a bit rough on Windows - and it seems you need to use the commandline to get the most out of it.
How are you doing your development ? free-for-all on the sf.net repo ? or working on your own private repos before pushing to a master ?
Which is your master repo ?
I used the svn2git utility (not svn clone) since it handles conversion of SVN tags better. Ironically, though, it seems I forgot to push the tags into the SF.net deng git repository, so the old SVN tags are actually gone now (well, they're still in the SVN repository and one can quite easily find the corresponding commits in the git repo).
I haven't seen any worthwile git GUIs on any platform. On Windows TortoiseGit seems buggy. IMO the command line is plenty sufficient.
The master repository is deng.git.sourceforge.net/gitroot/deng.
On windows I use Msysgit ( http://code.google.com/p/msysgit/ ) - I haven't played with it too much, as I've not been doing much work on Windows lately, but it seems up to the task.
I'll keep trying.
<strong>EDIT</strong>: It appears that our <a href="" rel="nofollow">Getting started</a> article was incorrect in a few places, which I've since updated. I now have my deng (git) repo clone and am currently migrating it to its permanent home on my NAS (to which I'll allow public web access).