Moving from Source Safe to CVS?
"Many projects have been suffering problems with SourceSafe. I believe this owes to its leaving management of the source database to the client program instead of the server. A client machine locking up or losing net access in the middle of a check-in can do serious damage. Further, the results of slightly different versions and third-party access utilities with imperfect implementations should be pretty obvious.
For programmers, the two IDEs we use are Visual Studio and CodeWarrior. Both the Linux and Windows versions of CodeWarrior have CVS built in. I can find a few Visual Studio CVS plugins, but no rave reviews of any of them.
For artists and managers, I'm not sure where to look. They definitely need a Windows GUI tool; again, I've found a few options, but none seem quite so easy as SourceSafe. I also worry about whether CVS the right tool for large binaries. As a game company, we deal with 3DS Max files, bitmaps, Word documents and a fair number of compiled executables. Will CVS effectively store these based on differences, or will the database bloat?"
2 years ago, I set up a sourcesafe for use with the C++ development in our company (3 coders).
It was fine until the day a network adapter in one of the developers' PCs had some problems. After some error messages while checking in some work, it resulted in a completely corrupt sourcesafe database. It was unusable and we had to restore it from backup.
That's the problem with SourceSafe, it's not a true client/server system but rather each client can access the shared SS files and make modifications in them. This lack of security checking on the server is bound to cause problems especially if the number of people accessing the SS increase.
True warriors use the Klingon Google
We did this where I work. It's been great using CVS instead of SourceSafe, as CVS doesn't corrupt projects for no apparent reason. We're using WinCVS on the desktops. Sure, it doesn't have integration into the VS6 IDE, but we've made do pretty easily without it.
:)
The other advantage of this was we got to build a nice linux box and put it in the 'officially supported' rack.. heh.
HTH.
*kerchunk* *beep* "...Operator."
http://www.wincvs.org/TortoiseCVS/index.shtml
Never worked with SourceSafe, but CVS definitely saves the day were I work. :)
The most annoying problem actually ends up being Windows users ending up comitting a ^M in the end of half of the lines.
CVS has its quirks, but if you learn to handle it it does the job very well. In the future I would look out for SubVersion (subversion.tigris.org) though. It aims to improve quite a lot on CVS, so it will surely be marvelous.
I haven't used this myself but surfing over to the WinCVS website, I found cvsscc. It's a project to map the scc stuff that MS uses to cvs. Another attempt, perhaps more mature, is Jalindi Igloo. The first paragraph from the website says:
"Jalindi Igloo is a program that allows you to connect Microsoft Visual Studio and other IDEs directly to a CVS repository. The program is completely free and can be used anyway you like."
These look to be just what you are looking for.
One nice CVS frontend is SmartCVS (www.smartcvs.com). It's written in Java, so it's cross platform (I tried it under Windows, Solaris and Linux). It aims to replace VSS's explorer. You can get a feature-restricted version for free or pay something like $35 for the full version.
One thing that you should promote about the move is the number of tools that are available for CVS. For instance, there's CVSWeb. It's a web frontend. There's CVS Search which lets you search through comments, etc. A search of freshmeat comes up with a lot of choices.
Finally, remember that there are scripts to help migrate from VSS to CVS. vss-to-cvs
-Dave
Citizens Against Plate Tectonics
Ease of use was definitely the biggest reason I liked it. Check them out if you're shopping around.
About a year ago the company where I work moved from Sourcesafe to CVS. The main reason was a series of corrupted databases that dragged work to a halt for hours.
For the coder CVS is fantastic. CVSWeb, bonsai, and (my favorite) LXR make viewing code, managing checkins, and searching code easy. If you have a mixed linux/windows shop both groups can use the same tool.
For the non coders it's not as nice. The windows interfaces are decent (especially TortoiseCVS) and let people work fairly well.
However it all breaks down in binaries. CVS Can't diff binaries, cvs tools can't preview them, and all in all they aren't handled cleanly. People will check the same file in twice, overwrite changes, things like that. You can recover without too much hassle (If you're familiar with CVS, but the first few times will be ugly)
Even with the large amount of binaries you had I would still say switch, the auditing tools for CVS make it worth it (The stability isn't bad either). But you will not solve any problems with binary files.
CVS does take some retraining, instead of locking files you have to get used to people merging before they check in. Those problems disapear fairly quickly, but there will be a bump of a few weeks while people get used to that.
I've never used SourceSafe.
:)
:) but it's a well thought out product. It did help manage the risks associated with code conflicts.
You didn't mention how many active developers are working on your project.
Where I work, we ran into trouble with CVS when we had 40+ active developers working in the same repository. If you have many different teams whose changes overlap on (even a few) common files, it can be difficult. In theory, branching helps with this, but in practice, branching just moved the conflict-resolution to a different step of the release process.
Hmmm... I guess a lot of our trouble was from how we organized our source tree and assigned projects. (Blame the managers!
For a while we had switched over to BitKeeper. It has it's limits, and we where definitely pushing them
I haven't had the best of experience with this plugin. I don't mean to put down its developers because I hear they made tremendous sacrifices to get their hands on the Source Safe/Visual Studio API, but Igloo wasn't particularly stable when we used it. This doesn't mean that our source code was in danger because (as previously discussed) CVS is less vulnerable to client problems than Source Safe; it just means that Visual Studio would hang from time to time.
Also, Igloo has a funny way of handling newlines that I never quite understood: it changes \n to \r\n but not the other way around or something like that. This causes CVS to assume that all lines have been changed when you start using Igloo. So you should first check out every file under Igloo, then check it back in with no changes; later changes will then be reflected normally.
Another thing you should be aware of is that Igloo allows multiple people to edit a file at the same time, whereas Source Safe does not. (This is not a bug, it's a feature. Seriously, it's just because Source Safe can't handle merges of multiple edits, whereas CVS can.) This can cause problems if people are used to using Source Safe and just assume that a file is locked when they check it out. Of particular importance is the newline problem that I previously mentioned, which causes CVS to assume that every line has been changed, because if two people modify the same file and then check it in, CVS won't know how to merge it, and we have lost changes because of this. (Of course, we only lost changes the first few times we used it, when the newline problem was still a problem.)
I once had a contract were I was hired at the same time as a bunch of other progammers to release a 2.0 version of a product. We were reorganizing the project and setting everything up again from scratch and decided to use CVS. It was an easy call since most of us new guys were comfortable with CVS having used it in other projects. It's light, it's fast, it's tested, it's multi-platform and it works.
However the original developers had used a combination of SourceSafe and some other proprietary versioning system for windows and they bitched and moaned about CVS like crazy. One of the only clients at the time was WinCVS, which is a horrible and not very intuitive client and they really balked. They felt like it was a step backward.
It was only after we had set up CVSWeb and cool build scripts that ran every night and sent out emails to the people who broke the build and other really helpful and productive functionality that they finally came around. The fact that CVS is open and has been around so long and has quite a following really does make a difference.
Anyways, this was a few years ago and I'm not sure what GUIs there are now (I still use the command line) but if you do go the CVS route (which I think is the best idea for any size company) prepare yourself for the backlash...
-Russ
Me
You might like to take a look at using xdelta for your binary files. Who knows, maybe Midway can sponsor the integration of xdelta with CVS?
Check out Subversion (http://subversion.tigris.org). It is still in pre-alpha but it will fix a *lot* of the problems CVS has had. Some people are already starting to use it with the just the (buggy) features is already has. Should be BETA within a month or so. It can version directories and symlinks as well as regular files and it fixes the problems CVS has with binaries. It is already ported to Unix (Linux, *BSD, etc.) and Windoze.
Considering that this is being posted on /., I am supprised that no one is recommending SourceForge.
Just me US$0.02
The dogcow says "Moof!"
Cervisia is a good QT based KDE frontend to CVS. We use it, and we like it. It is not as easy to use as the VSS GUI, but it will help migration from VSS to CVS a lot.
Regards
Maurizio
Is there some sort of hook for cvs to parse the code diffs in Excel? Excel Basic is embedded in the spreadsheet in some non-textual format and it isn't clear to me how it can be handled by cvs.
This is incorrect.
Visual SourceSafe supports multiple checkouts; the feature is merely disabled in the default configuration.
Also from the 16-days-between-submission-and-posting department. :)
I'm still looking around at various source control options. Perforce is the current favorite, owing to a combination of a good feature list and a number of my team's programmers having prior experience with it. The big things holding it back are the cost (over $500/seat/year) and migration time. It's really a different beast entirely, even compared to the Visual Studio CVS plugins.
Nothing seems to handle both binary and source version control well. There are special tools for one and the other, but nothing that's strong on both. I'm a programmer, and I'm tempted to just take care of my own, moving code over to a new tool and leaving SourceSafe in place for the artists. That's not quite as mean as it sounds; artists don't do multiple checkouts, and all off-site access will be read only. Those seem to be the two big things that corrupt SourceSafe.
cvs pros:
- work concurrently unlike SS which is only
safe in single ( exclusive ) checkout mode
- merging is automagic when possible
and discourages developers from checking in
changes that haven't been tested with the
latest and greatest
cvs cons:
- sometimes exclusive checkout is desireable
( unmergeable binary files for example ) and
the support for this often missing or performed
at unpalatable granularity in CVS
- doesn't support "sharing" as in SS
( not needed in a "real" OS like Unix where
there are symlinks, but in redmond OSes...)
SS pros:
- familiar, easy to use GUI ( diffing and
history support bitchslap ANY known cvs client )
- better for storing binary data
SS cons:
- M$ nuff said...they didn't write SS, but
it runs on their decrapitated OS
- single, exclusive checkout implies much
attrib'ing and manual file merging during
real collaboration ( CVS' strongsuit... )
- random autonomous protein spills in the
VSS db causes frequent "everyone out of the pool"
drills ( where I work on the order of once
every couple of weeks! )
I happen to also work for a game development house, in the IT department. We have been using Sourcesafe 6 for a while now, but have found that it is often corrupting itself, not the kind of behavior that you want in your version control software. Cvs wasn't a good choice for us, being mostly a Windows shop, and Cvs isn't known to always handle certain types of multimedia files well. And there is a certain amount of comfort in having a commercial package that you can get help from[and for those who are about to flame me, I do like cvs, and I am sure there is some way to get support]. Our company has recently started using a program called Perforce for version control. Several of our projects are on it now, and we haven't heard a peep out of them as far as problems go. You can find more information at http://www.perforce.com/ . It might be a better solution that cvs, and it might not be, but it's worth evaluating.
In my experience there are two major areas in which you should expect problems with a VSS to CVS migration. First and foremost, expect to have problems as the team adjusts to the non-exclusive model of file checkout. Force them to internalize the mantra: UPDATE FIRST, THEN COMMIT. The second area in which to expect adjustment pains will be the lack of a good GUI tool. This will be most problematic for the non-techie types, but even the developers will need some adjustment. Let's face it: you can't get a much simpler client than VSS, and that is it's (perhaps only) strong suit. CVS is kind of stupid about handling binary files as well, but this is less of an issue.
On a final note, a previous poster recommended PVCS. Believe none of this. PVCS is complete trash; the client is slow, buggy and unstable.
SS and CVS both have significant flaws. Use Perforce. It is better balanced.
Tortoise is a wonderful Windows Explorer plugin that gives you access to CVS fucntionality from regular old Explorer windows.
I don't use WinCVS (except as a library) anymore, because Tortoise is so much easier!
Napster-to-go says "Fill and refill your compatible MP3 player", which is a lie. It's not MP3. It's WMA with DRM.