Click here to Skip to main content
15,885,278 members
Please Sign up or sign in to vote.
4.20/5 (3 votes)
See more:
Hey all,

I'm in the process of setting up a revision control system.
I'm looking for opinions on what you guys think is the best and why.
More so looking for advice from people who have worked with more than one on these systems.

Regards,


*** !!Please Vote!! ***
Posted
Updated 18-Jan-11 22:56pm
v2

Open source, everything else is too risky! Code asserts are too important to suffer even from a very remote possibility of license limitations.
Also, by some reasons, open source systems tends to be non-obtrusive, which is kind of problem with commercial ones.

I would vote for Subversion. Even though it is not the most advanced (it is not distributed) and does have some problems, it is the most popular and quite versatile. Most important thing is: if you choose more advanced distributed system (I would think about Bazaar, Mercurial, Git), it will work with your Subversion database -- Subversion compatibility is considered as a major requirement.

Selection of best system is not the final decision. You will need to select a platform to host the service, decide if you prefer in-house server or 3-rd party hosting, protocol and level of security settings. Usually, there are more then one variant of distribution for each platform. A client part is a matter of preference of each individual developer. For Subversion on Windows, most popular is perhaps TortoiseSVN, it is also very non-obtrusive, build over Shell API (it means it can work on top of Explorer or any other shell-based commander like Total Commander). There are similar products (of the same team) for major Revision Control Systems. Visual Studio integration packages are also available (not that I like this approach though).

Bazaar, Mercurial, Git: those are Distribute Revision Control Systems. Such systems are very beneficial over centralized (see http://en.wikipedia.org/wiki/Distributed_revision_control[^], some more systems are listed). I did not use them in production only because at that time Subversion was more mature. I hope, the shortcomings I saw years ago might me eliminated these days (who has this experience, please comment), so those systems deserve serious consideration.

What's good about Open Source Revision Control Systems, is that the mere fact that Revision Control, code base integrity and cooperation are so vitally important, the community licks clean every single issue, especially if it comes to data safety. I mean, even if I see glitches in software, I can be sure that is has nothing to do with safety of our code base. Also, documentation is much better compared to any commercial system I ever saw (surprise?).

And the support from community is amazing.
 
Share this answer
 
v5
Comments
Espen Harlinn 19-Jan-11 9:29am    
5+ Sound advice
pasztorpisti 27-Aug-13 18:25pm    
+5 even if someone works alone, keeping the files in a safe place and being able to diff and revert a change is already very helpful
Sergey Alexandrovich Kryukov 19-Jan-11 10:54am    
...another update
Sergey Alexandrovich Kryukov 27-Aug-13 21:52pm    
Thank you.
—SA
Espen Harlinn 19-Jan-11 14:32pm    
Well, it's a quality answer
I have worked with several systems (SVN, Sourcesafe etc.). Currently, I work with Subversion and it integrates nicely with Visual Studio (through AnkhSVN) and with Windows (TortoiseSVN). Concerning setup, you can find a few articles on CP: http://www.codeproject.com/KB/dotnet/VistaVisualSourceControl.aspx.

SVN matches MY needs (team size, build tools etc.). I don't know yours. There are excellent systems out there, but if you don't check them yourself, you will never learn what best suits your needs.
 
Share this answer
 
Comments
Sergey Alexandrovich Kryukov 19-Jan-11 9:31am    
I remember SourceSafe as a nightmare. Most importantly, the code submission (called "check in" in this system) is not transactional -- did you know that? But real bad was Perforce.
pasztorpisti 27-Aug-13 18:31pm    
Why don't you like perforce? I think its a superb source control system that is very good from many aspects. The gui client should be a bit better but they are working on it. It doesn't keep unnecessary files/dirs on my HD, fast, can handle huge loads of data (one of our workspaces was more than 50gigs with more thousand files), very robust commandline client that is easy to use in scripts and it is probably one of the fastest scms. On the other hand sourcesafe sucks hard. The db goes on a holiday and you have to repair it manually or with some helper scripts from the net... Non-transactional commit??? I wouldnt work again with an scm without transactional commit!
Sergey Alexandrovich Kryukov 27-Aug-13 21:23pm    
I don't like Perforce because I used it and compared with other system. Proprietary and over-complicated. There is no command-line interface and, to best of my knowledge, program interface which would allow 3rd parties to create clients. No options for different storage system.

Not-transactional commit if about VSS...

—SA
pasztorpisti 28-Aug-13 8:49am    
API: http://www.perforce.com/product/components/apis.

It has a commandline client and its one of the best I've ever used. Its output is usually very well parseable (probably on of the easiest to parse) and there is a -G option that sends python-marshalled deserializable data to the output.

Submit is transactional. The commit is made transactional by first locking all files in a change and then submitting them.

The visual studio plugin is not the best but I've seen some user-written VS plugins that are said to overcome this problem. I havent tried this because I don't like the VS-related SCM integrations so all I need in VS is that a file should be checked out automatically when I start modifying it, the vss plugin does this well. Along with VS I'm using the red/yellow client especially because there I can manage different changelists too. If I would be interested I would probably be able to write a simple very good VS plugin in C# (building on the VS plugin interfaces) just by issuing commands to the commandline (p4) executable. I'm just not in need of that and I'm lazy to do so.

Probably none of the other SCMs is able to handle such gigantic amount of data without any problems. It handles/stores text and binary files differently that is awesome. Its also free for personal use but you probably wouldn't be able to exploit its advantages at home and for home usage a decentralized SCM like git is probably a better choice. But git also sucks when it comes to large data, some zipped files or other binaries.

Not too long ago they introduced a shelve feature too (its like git stash).

Currently perforce is free for 20 users with 1 workspace per user. It can be a quite viable free solution even for serious small teams. To be honest I don't really care about the opensource nature when it comes to SCMs, I don't want to look at the sources... :-) In my opinion perforce is superior in many areas compared to other centralized SCMs, I like it.

"Google runs the busiest single Perforce server on the planet, and one of the largest repositories in any source control system." http://www.perforce.com/blog/110607/how-do-they-do-it-googles-one-server-trick
Sergey Alexandrovich Kryukov 28-Aug-13 11:55am    
Okay, good information, thank you. Remaining thing is: proprietary. And relatively high weight. Presently, I have to use AccuRev at work. Not bad, but, in my opinion, nothing can beat Subversion. I never needed to ask anyone how to use it, for example. In AccuRev, say, some operations are only on bitmap buttons, not main menu. No UI alternatives. In my opinion, UI which cannot be used without a mouse is not UI.

As to Visual Studio plug-ins, I never install any. I think this is too intrusive. There should be a clear concept: Revision Control captures all you do on certain files in certain directory. Yes, I know you can use both VS plug-in and another interface. By the way, VS handles external updates well enough. Anyway, selection of the Revision Control UI is up to each developer.

—SA

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900