Advertisement

cvs, svn, or git, and which online service?

Started by May 18, 2009 11:27 AM
47 comments, last by Xunil_RJ 15 years, 5 months ago
Hey all. Having just ordered a new computer (and therefore getting a fresh start), I wanted to begin using version control software more seriously, even for my small, personal projects. In the past, I have dabbled with cvs, svn, and git -- but never for too long. I end up finding them more frustrating to use, especially since my projects are typically pretty small. However, with all these new websites popping up that act as remote hosts for your repository, I would like to get into the habit of using them again. Unfortunately, I don't really know the pros/cons of each. Two of the big reasons I want to begin using version control is for remote backup purposes and to allow my Amazon EC2 boxes to auto-update by simply pulling the latest head version. Ideally, this is what I am looking for: 1) A GUI that works on a Mac. I can use command line ... but I will most likely get lazy and stop using it unless I really force myself to. A GUI that I can use that allows me to commit and pull from my remote host is key. I understand that this is external from the programs themselves, but it would be a major factor in choosing any one or the other. 2) An online subscription service that is private and secure. I don't mind paying up to $150/yr for this. Ideally, the service would have visualization tools that would allow me to see commit history, etc. I've seen a bunch of these for git and svn, but not so much for cvs. If any of you guys could recommend csv, svn, or git and a GUI/Service that complements the tool, I would greatly appreciate it. Thanks! EDIT: Forgot to mention that I am leaning towards git, with GitX and github. But GitX doesn't seem to allow remote push/pulling, which sort of defeats the purpose... [Edited by - visage on May 18, 2009 12:54:22 PM]
Iell I would not even consider cvs (it cvs not csv btw :)) after using it a long a time ago. I personally use Subversion and it seems to work very well. I have been reading about distributed VCSs like git they they do seem interesting. They are a little more complex to understand and use than client/server VCSs however they do provide you with some extra flexibilty that you can't get easily with client/server VCSs.
Advertisement
Quote: Original post by 3dmodelerguy
Iell I would not even consider cvs (it cvs not csv btw :)) after using it a long a time ago.

Haha, yeah. I am working with some .csv files at the moment, so I must have absentmindedly just put that by mistake. I basically heard nobody uses cvs anymore, so I think it is just between git and svn at the moment.

Quote: Original post by 3dmodelerguyI personally use Subversion and it seems to work very well.

Do you host your repos locally?

Quote: Original post by 3dmodelerguyI have been reading about distributed VCSs like git they they do seem interesting. They are a little more complex to understand and use than client/server VCSs however they do provide you with some extra flexibilty that you can't get easily with client/server VCSs.

I would rather take the time to learn a complex system and get all the perks, truthfully. But for me, it is about the complete package. I need ease of use, a practical GUI, and remote hosting.

My bargain basement option is svn with the repo hosted locally on a dropbox. Other than that, I've been hearing good things about mercurial recently, although I don't have any firsthand experience.
if you think programming is like sex, you probably haven't done much of either.-------------- - capn_midnight
Take a look at:

1. Git and github.com
2. SVN and Assembla.com

I've used both products and hosting sites commercially and they are great for what you want to acheive.

For simplicity I would recommend SVN, even if you did have to drop to the command line its not to hard to figure out what you need to do. 'svn help'

If you need something more interesting, distributed and powerful ( I doubt you will ) then I would recommend Git which is dubbed "version control, done right". It is command line, there maybe a few Gui's available by now, it knocks the socks off of SVN but it is significantly more complicated if something goes wrong.

I wouldn't bother with anything else, most free2play commercial products are just ridiculously cumbersome and botched( Alienbrain, Perforce, Clearcase, SourceSafe ( eww ) ). This is one area where open source really does own the space.

Best of luck!

I really like bzr, and launchpad.net for hosting. It's similar to git in paradigm, but it's supposibly easier to use.

I have heard it can become a bit slow when your repo gets too big, but that hasn't been a problem for me so far.
Advertisement
CVS and SVN aren't even in the same league as git. Shouldn't those be considered legacy by now?

If you want something to manage your personal projects, a non-distributed system is definitely not for you, and git is the most widely used one. With a distributed system, you clone the entire history of your project into your own working copy, which means it's way faster than the old way, and that you don't need to be connected to the Internet just to work on your project.

If you still want a central repository, just host a local repository on a web server; git will be able to check out updates from there and, if you have SSH access (or do some WebDAV magic,) be able to receive updates ('pushes') from your local repository. Github.com is pretty nice for hosting your repositories.

Other than that, git offers some nice benefits when compared to other alternatives, but whatever you choose, do yourself a favour and go with a distributed solution.

EDIT: oh, and git doesn't have a Mac gui (except for gitk, which lets you visualize the history of your repository,) although I can't see why you'd ever want a GUI for a version control system. IDE plugin, sure, but GUI?
Quote: Original post by Valderman
CVS and SVN aren't even in the same league as git. Shouldn't those be considered legacy by now?

CVS is certainly legacy, but SVN is far from it. SVN and git use fundamentally different paradigms, and none is inherently superior to the other. Despite all the hype distributed systems get recently, they are not the panacea many people make them look to be. They're well suited for certain forms of team and project management and logistics, but they're unsuitable for others. What might be the best thing since sliced bread for you doesn't mean it is for someone else. All depends on the nature of your project (OSS vs. highly restricted, small vs. large team, local vs. remote, etc).

Also, keep in mind that some of the advantages that have been assigned to distributed systems (better merge handling, etc) are not actually advantages of the distributed model itself, but simply due to the more recent nature of these tools. These better features can be (and are currently being) equally well implemented in non-distributed systems.

Another point to watch out about the perceived success of git is to consider the source. I suspect that many of its current (OSS) users ignored the technical considerations entirely, and simply used it because it was developed and hyped by Torvalds.

I would personally suggest to use SVN, but that's just my preference. By all means, you should also check out distributed systems, just to see if they fit your own approach to project management better than a client-server model. And if you choose to use git, then make sure you do it because you found it to be technically best suited for your purposes - not just because a well known guy with a superiority complex has designed it.

Quote:
EDIT: oh, and git doesn't have a Mac gui (except for gitk, which lets you visualize the history of your repository,) although I can't see why you'd ever want a GUI for a version control system. IDE plugin, sure, but GUI?

I think that IDE integration is what the OP meant by GUI. And a VCS without proper IDE integration (read: command line only) is completely unusable on any serious project.
Quote: Original post by Yann L
I suspect that many of its current (OSS) users ignored the technical considerations entirely, and simply used it because it was developed and hyped by Torvalds.

I suspect you as usual don't know what you're talking about.

I've been involved in two related open source game projects that switched from svn to git, during transition period. The switch is fairy difficult for a project and required almost unanimous vote, which couldn't pass until those with "you want git just coz of linus" view are convinced that git works better.
In both cases it happened after significant portion of people switched to using git repository that's mirroring SVN , despite issues associated with such scenario (it was a while ago). In both cases, the development practices greatly improved; SVN was plagued by monster commits addressing bunch of issues at once (and introducing bunch of new issues) - this no longer happens as history is no longer centralized. Debugging of regressions got a whole ton easier. It got easier for outsiders to contribute as well (say what you want about git, but using diff n patch *really* suck). Backporting became a reality (one of projects is multi-player RTS; for obvious reasons, any changes in unit behaviour break multiplayer compatibility. In between major releases, bugfixes have to be backported)
Quote: Original post by Dmytry
I suspect you as usual don't know what you're talking about.

You're free to suspect whatever you want *shrug*

I've worked with SVN, git, perforce and mercurial, on projects with teams of varying sizes. None of them were open source, so priorities were obviously a bit different compared to your OSS experience. But the fundamentals are the same.

All I can say from this (quite extensive) experience is that all version control systems suck to some degree. There is no perfect system, there are always compromises to make. And while git is OK, it's certainly not "version control, done right". No one has done it 'right' yet, because there is no 'right'. As I said above, VCS requirements vary a lot from one developer or team to the next, and from one project to the next.

What is valid for C++ vs. C#, DX vs. GL or other such scenarios is even more valid for VCS1 vs. VCS2: one should try several of them, and then decide what type of system is most appropriate for one.

This topic is closed to new replies.

Advertisement