Discussion: moving from SVN to git or Mercurial

For discussion of the code running behind the game

Moderator: Staff

What souce code management tool should we migrate to in the near future?

Don't migrate. Continue using Subversion.
1
33%
Migrate to git.
1
33%
Migrate to Mercurial.
1
33%
Migrate to another solution (explain in your post)
0
No votes
 
Total votes: 3
User avatar
Roots
Dictator
Posts: 8666
Joined: Wed Jun 16, 2004 6:07 pm
Location: Austin TX
Contact:

Discussion: moving from SVN to git or Mercurial

Postby Roots » Tue Nov 13, 2012 9:34 am

As we work to revive this project, I think it's an appropriate time for us to have a conversation about our source managment tool of choice. I anticipate that this may be a spirited discussion and that it won't be easy to figure out the best answer for our team. The poll above allows you to re-vote as many times as you need, so if you find yourself intiially favoring one tool but then think another would be better, go ahead and re-vote.


A little history:

When we started out we used CVS, then quickly moved to Subversion once it became available and have stuck with it since. Now there are better alternatives to Subversion that we should strongly consider moving to, although it will be much more difficult to do so than moving from CVS to SVN was. The reason for this is that the two primary alternatives that I'd like us to consider are distributed version control systems (multiple repositories) whereas SVN and CVS were both centralized version control systems (only one repository).


Centralized versus Distributed Source Code Management:

With Mercurial and git, you keep an entire copy of the main repository on your local system. This is great, because you can make your own local commits and then push a set of commits out to the master repository once you feel it's ready. Branching is also much much easier to do on these systems than SVN or CVS. They're also much faster than SVN as many operations can be done locally instead of over the network. These are just a couple of the major advantages. One of the main disadvantages is that it will be more difficult for people to learn how to use these tools as opposed to SVN. We've been pretty successful at making SVN work for us so far, so it can be a little scary to make a change this big.


Mercurial versus git:

So if we move to either one of these tools, which is better for our purposes? I think this is the main topic that we'll need to address, as I'm really confident that it is in the best interests of this project to move on from SVN at this point. Here's a list of links that I found that compare the two tools. I think this should give us enough information to make an informed decision:


I intend to read through most of the content on those pages before stating my own opinion. I'm already leaning toward one tool over the other, but I still need to learn more about both.


Source code host:

It's also worth considering whether Sourceforge is still the place where we want to maintain our source. I'd say that we don't have much reason to move from there. It hasn't always been perfect, but we have a history there and it's served our needs reasonably well. Best of all, Sourceforge supports both git and Mercurial, so regardless of which of these two tools we pick (if indeed we do), we don't need to worry about support.
Image
rujasu
Developer
Posts: 758
Joined: Sun Feb 25, 2007 5:40 am
Location: Maryland, USA

Re: Discussion: moving from SVN to git or Mercurial

Postby rujasu » Tue Dec 04, 2012 2:40 am

I've never heard of anyone actually using Mercurial. I wouldn't use that one. Git seems to be widely used by good-quality projects. I'd say stick with SVN, or move to Git if you're feeling really motivated.
User avatar
Roots
Dictator
Posts: 8666
Joined: Wed Jun 16, 2004 6:07 pm
Location: Austin TX
Contact:

Re: Discussion: moving from SVN to git or Mercurial

Postby Roots » Wed Dec 05, 2012 12:14 am

http://en.wikipedia.org/wiki/Mercurial# ... _Mercurial

There's a fair number of popular projects that use Mercurial, although yes it appears that git is much more widely used. Regardless, I feel we should choose the best tool for our needs, not play along with a popularity contest. I'm still largely undecided on what to do. I had thought it would be best to switch to git or Mercurial prior to fully reviving development here, but now I'm thinking it would be better to stick with SVN until a later time, as introducing a new and foreign (to most of us) source management tool would not be productive in helping us get off the ground again.

I do want to say though that I've been working with git for a month now on the Valyria Tear project, and I hate it just as much now as I did a month ago. It is incredibly difficult to use properly, even for some of the more simple operations you would expect. I continually have problems with it, especially whenever I need to send my changes over to the master repository. I've been trying my best to learn it, but it's just not a clean tool. It's definitely a powerful tool, but the command names and usage are very confusing (many commands do entirely different things if you provide them with certain options). In the hands of a master I am sure that git is amazing, but if I'm still having this much trouble after a month of studying it, learning it, and using it, I think it's just not good for a project like ours where people come and go quite often. I don't want to have to spend time "training" new contributors on how to use git, or spending time fixing their mistakes when they screw something up (Bertram over at VT has had to spend a lot of time covering my dumb ass).

From what I've read on Mercurial, it seems like it has a much nicer command interface and is both easier to learn and easier to use than git. The downside is that it isn't as powerful, but I really don't care much about that at all. We don't plan to do any crazy code management voodoo. But I haven't experienced using it myself yet so I can't comment much more than I like what I read in the tutorial to using it. I'm hoping to find a project using Mercurial that I can contribute to for a short time to help me gain some insight to it, but I don't know if I'll have the time to do so.

-----

TL;DR: Lets stay with SVN until after we have a full development team and are making regular progress again, then analyze git/Mercurial and make a decision together.
Image
nemesis
Senior Member
Posts: 157
Joined: Fri Apr 29, 2011 7:53 am
Location: Sachsen/Germany

Re: Discussion: moving from SVN to git or Mercurial

Postby nemesis » Wed Dec 05, 2012 1:14 am

As already written in a different thread I do also prefer using SVN. I'm using it for all my projects (private and work) and I (almost) did not face any problems. There may be performance issues sometimes (I've read this ...) but I didn't face any of those yet. The only problem I've faced with SVN yet was deleting versions, but this should not be neccessary in most projects. I only needed it one day when I was fixing bad code from other guys that was visible for our industrial partners.

In my oppinion, SVN is a very powerful and very easy to learn/use system and makes contributors life much easier then e.g. starting with GIT on GITHUB and handling tons of branches.
User avatar
Roots
Dictator
Posts: 8666
Joined: Wed Jun 16, 2004 6:07 pm
Location: Austin TX
Contact:

Re: Discussion: moving from SVN to git or Mercurial

Postby Roots » Wed Dec 05, 2012 2:05 am

There are two things that I want that git and Mercurial have, but SVN does not.

#1: Distributed repository

By everyone having a local copy of the entire repository on their system, this enables some great things. When we need to make large changes that affect a lot of code, we can do so via a number of small, local commits before uploading the entire changeset to the central repo. I've run into a problem several times in the past when I was working on something large, and it became difficult because I could not commit anything (it was untested or would break the repository). When I got stuck and needed to look back on something I had modified, it was very difficult to do so.

Also this makes it easier to do off-line development (when we are travelling, or lose internet access).

#2: Better support for branches

We pretty much don't use branches at all in SVN right now, because they suck. git/Mercurial development models encourage the use of branches and are much better to work with. This is useful if, say, we want to try out a bunch of balancing changes without committing anything to the main build.


Of course there's many more benefits, but those are the two major ones I'm interested in. Everything else is icing on the cake as far as I'm concerned.
Image
User avatar
Roots
Dictator
Posts: 8666
Joined: Wed Jun 16, 2004 6:07 pm
Location: Austin TX
Contact:

Re: Discussion: moving from SVN to git or Mercurial

Postby Roots » Tue Nov 25, 2014 8:31 am

I've been thinking about this topic again lately. Mostly because the disruptive nature of the work that I'm doing right now would really be easier and cleaner to do with git or Mercurial than it is with svn. After a couple years more experience with using git, I have to say....I still really hate using it. :disapprove: Almost every time I have to do anything other than local commits to my personal repository I have to search online to figure out what combination of commands I need to run to achieve the result that I want. Its ridiculous. To be fair, I work on git projects pretty infrequently so I'm sure it would be slightly less painful if it was a tool that I used daily.


At this point, it would be extremely difficult to convince me that we should use git. Yes, it may be popular in the open source/Linux realm, but not all of our programmers are from that world (historically, most are not). And anyone who wants to help out with Allacrost who is not already familiar with git is going to have a really frustrating time just learning and dealing with that complex tool. I'm much more sold on Mercurial (despite that I've never used it, I've read enough documentation to have a great handle on how it works). The main disadvantages of Mercurial (aka hg) over git are that it is slightly slower (which isn't important to us) and less configurable than git is (also not that important to us). The advantages are that it is an easier transition to hg from svn (commands are very similar), better documentation, and easier to learn and to use.


Assuming we do in fact decide to transition from svn to hg, the question then becomes when is the right time to do so? Maybe right now would be best, when I'm the only developer actively working on anything. Or maybe I should wait another month until the code is in a more stable and reliable state so that our new repository starts with a "clean copy" (although really it should be copying over the entire history from svn). I'm not sure what the best time for the conversion would be. :shrug: But I do think we should stop putting this off and do it sometime soon before we get multiple developers and a lot more activity.
Image

Return to “Programming”

Who is online

Users browsing this forum: No registered users and 4 guests