Jordan Arseno Jordan Arseno - 1 month ago 12
Git Question

Revision Control System Recommendations

I've reached a point in my independent development work where I would like to start using Subversion techniques.

Up to now, I've been simply making backups by exporting my current database, and zipping them together with my PHP project files.

I've read some articles online and watched a video with Linus Torvalds - the general verdict seems to be that Git is in and old CVS techniques are out.

I'm not currently operating under Linux, I do all PHP work out of Windows -> Eclipse. Due to the fact that Eclipse runs on JVM, jumping into Linux -> Eclipse will be more or less transparent - file system aside.

What I would like to accomplish is being able to keep a constant revision history - But I want this to be almost entirely transparent. Also, I work in an MVC framework, and I would like to be able to release my views to Designers, and have them work from within the revision control system too.

Will Egit accomplish what I need? Or is it too much overhead for a one-man workforce?
What do you recommend I use so that I can keep a revision history?

I also require the service to be free!

Tim Tim
Answer

Try these searches

http://stackoverflow.com/search?q=free+svn+hosting

http://stackoverflow.com/search?q=free+mercurial+hosting

As for choosing which one - I tend to agree with the google review here:

  • Learning Curve. Git has a steeper learning curve than Mercurial due to a number of factors. Git has more commands and options, the volume of which can be intimidating to new users. Mercurial's documentation tends to be more complete and easier for novices to read. Mercurial's terminology and commands are also a closer to Subversion and CVS, making it familiar to people migrating from those systems.

  • Windows Support. Git has a strong Linux heritage, and the official way to run it under Windows is to use cygwin, which is far from ideal from the perspective of a Windows user. A MinGw based port of Git is gaining popularity, but Windows still remains a "second class citizen" in the world of Git. Based on limited testing, the MinGW port appeared to be completely functional, but a little sluggish. Operations that normally felt instantaneous on Linux or Mac OS X took several tenths of a second on Windows. Mercurial is Python based, and the official distribution runs cleanly under Windows (as well as Linux, Mac OS X, etc).

But his is the hands-down clincher:

Maintenance. Git requires periodic maintenance of repositories (i.e. git-gc), Mercurial does not require such maintenance. Note, however, that Mercurial is also a lot less sophisticated with respect to managing the clients disk space (see Client Storage Management above).

I don't want to have to do "maintenance" on the git repos. That's just unacceptable.

Summary

In terms of implementation effort, Mercurial has a clear advantage due to its efficient HTTP transport protocol.

In terms of features, Git is more powerful, but this tends to be offset by it being more complicated to use.

I have not moved all my stuff to mercurial - SVN is just fine for most projects - especially single-person projects.