Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: programming
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 18-Jan-11 20:12pm
Edited 18-Jan-11 22:56pm
v2
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

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.
  Permalink  
v5
Comments
Espen Harlinn at 19-Jan-11 9:29am
   
5+ Sound advice
pasztorpisti at 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
SAKryukov at 19-Jan-11 10:54am
   
...another update
Sergey Alexandrovich Kryukov at 27-Aug-13 21:52pm
   
Thank you.
—SA
Espen Harlinn at 19-Jan-11 14:32pm
   
Well, it's a quality answer
RudolfErasmus at 21-Jan-11 3:50am
   
Thanks for the advice, I've decided on going the TortoiseSVN route. I've worked with CVS for a couple of years and want to learn something new... I think SVN route would be good as it is by far the more popular it seems.
SAKryukov at 21-Jan-11 18:47pm
   
Oh, my pleasure. CVS is totally obsolete. You will be surprised with robustness of Subversion. You can ask some questions -- I have very positive experience and know some delicate moments (but community is very useful). Anyway, if you could find some time, would be very interesting to get experience with some of Distributed systems, especially one of those I listed -- I did not try for a while. In case you do, please share your experience.
 
(One minor problem of Subversion is that renames are treated equivalent to deletion followed by re-creation. Some other systems track renames in the same history line for the item. To me, this is not a critical drawback.)
 
Good luck.
--SA
RudolfErasmus at 24-Jan-11 1:50am
   
Cool, will keep it in mind.
 
Regard,
Rudolf
SAKryukov at 10-Oct-11 12:45pm
   
Cheers,
--SA
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

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.
  Permalink  
Comments
SAKryukov at 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 at 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 at 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 at 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 at 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
pasztorpisti at 28-Aug-13 12:11pm
   
It's proprietary but I wouldn't say its high weight. AccuRev is also good in my opinion but the UI is indeed terrible, I never understand why can't someone create a good UI for a good product... Every source control systems have their own advantages and disadvantages but for starters svn is definitely a very good choice for general purpose usage. I would recommend git as well for a beginner (if a decentralized system suits the project/workflow more) but its a bit harder to understand than a simple svn in my opinion. Both of these have very good free tutorial books available.
Sergey Alexandrovich Kryukov at 28-Aug-13 12:20pm
   
Decentralized systems are interesting and valuable, but I tried some of them (Mercurial, git, Bazaar) few years ago and decided that they need some maturity...
—SA
pasztorpisti at 28-Aug-13 12:36pm
   
Sure, these are relatively newborn. I've used only git extensively but installing it (mingw version) on windows can be painful. I had some trouble because it didn't work as a result of having some bad env var settings on my machine. It took a whole day to find this out. Most of these have grown out from a set of scripts. Another thing that shows the immature side of git is that most useful commands must be issued with at least 1 or two additional parameters, why aren't these settings the default??? In my opinion decentralized repos are a very bad choice if you have large (maybe binary) files especially if they change often as it blows up the size of replicatable data even if the head doesn't contain the file.
Sergey Alexandrovich Kryukov at 28-Aug-13 14:21pm
   
Binary is a general problem. It's best to avoid them, but you cannot avoid, say, bitmaps. Subversion has a good "external" feature, good to integrate 3rd-party binaries which need no storage.
—SA
dmageiras at 19-Jan-11 10:45am
   
I totally agree with SAKryukov: remember myself and my team of trying to figure out endlessly what went wrong with SourceSafe (again). On the contrary, once SVN is up and running, I totally forget about it, it just works and does what it is supposed to do.
RudolfErasmus at 21-Jan-11 3:51am
   
Thanks for the advice.

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



Advertise | Privacy | Mobile
Web03 | 2.8.140926.1 | Last Updated 19 Jan 2011
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100