Era of Git

edited 2009 Aug 26 in Developers
<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&gt; 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&gt; 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

  • Conceptually, I have no major objections to migrating to Git. Given we intend to discipline our future development work by leveraging branches with a "branch per concept" approach it would seem to make sense to move to Git (although I personally have zero experience with it, I can't see that being a barrier).
  • Good. Git is widely regarded as one of the best version control systems out there, and it's no coincidence several high-profile projects are using it (Linux kernel, Qt, VLC to name a few).

    I'm working on importing our current SVN repo into a Git repository.
  • All right: the new official deng Git repository is up and can be marveled at: http://deng.git.sourceforge.net/

    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.
  • Looks like I'd better go bone up on at least working-level Git practice.

    <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&quot; rel="nofollow">CIA, deng project page</a>. I don't have login details for this, skyjake, do you?
  • I was just thinking about CIA. Turns out, I don't really see the point of it any more, given that the commit history can be viewed easily and quickly with GitWeb (http://deng.git.sourceforge.net/) and Ohloh's analysis of the repository is several orders of magnitude deeper.

    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).
  • Yeah I'm happy about phasing out CIA for deng. GitWeb easily fits the bill for casual development followers while Ohloh is clearly better for us devs.
  • I will modify the commit notification script so that it'll include a link to http://deng.git.sourceforge.net/ and the corresponding commit. This means the git repo is inaccessible for a while as I edit the script.

    <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/&quot; 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&quot; rel="nofollow">Getting started</a> wiki page with some new information about Git.
  • Interesting choice with the move to git. It certainly explains why I've not been getting updates to git svn fetch ;)

    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 ?
  • Well, git is wonderful. :)

    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.
  • Looking through my private repo it appears all the subversion branches came through as branches, not tags with git svn clone.

    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'm only now just getting around to setting up a clone of the master (which I intend to provide public web access to). However I seem to be hitting a brick wall because my git client (mysysgit) is telling me that every time it attempts to connect to our master repo at sourceforge's git server (git://deng.git.sourceforge.net/gitroot/deng) in order to clone; "The remote end hung up unexpectedly".

    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).
  • Yeah, SF.net recently switched to support multiple Git repositories per project and the wiki wasn't updated...
Sign In or Register to comment.