For those interested....  the messages are a little old now, but most still 
apply....

-- 
Vi de udřdelige inviterer dere til ĺ slĺ dere sammen med oss
Here you go.

I should add that it looks like database inconsistency problems are gone in
VSS 6.0. Unfortunately, UNIX support for VSS client is gone in version 6 as
well.


Eugene.

-----Original Message-----
From: Mark Derricutt [mailto:[EMAIL PROTECTED]]
Sent: Saturday, September 09, 2000 2:55 PM
To: Eugene Kramer
Subject: RE: CVS vs Visual Source Safe...

I'm not sure if Pine will handle all the exchange/outlook attachments
(should do), but if you email them to [EMAIL PROTECTED] that would
be great (thats my current work email, using outlook/exchange).

Mark





On Thu, 30 Dec 1999 16:23:03 CST, Win32 M$ <[EMAIL PROTECTED]> wrote:
>Hi Jacob,
>
>>This is not to start a flamewar between MS and OSS.
>
>No flamewar, the comparison is between the two tools ;-)
>
>Now, where were we:
>
>CVS do has some advantages in compare to VSS like:
>1. Works better in the WAN (Internet etc.) environment, when the team is 
>working from home
>or is geographically separated for some reason.
>2. It allows you to work better in a kind of sandbox, you can easily 'take
a 
>job home'.
>3. Using RCS format for repository - you don't loose repo if you change
your 
>mind.
>4. The price - this one does not apply if you buy VC Enterprise, because 
>it's there already.
>5. Allows the development on the different platforms, althought not without

>little trouble.

You forgot:

6. The *in place* branching and merging in CVS blows away VSS, where you
have
to link your files to a new project, and ``branch after merge''.  VSS is a
disaster when it comes to managing multiple streams of development. In CVS,
branching is done in place, not by creating new directories in the
repository.
Developers can do branching quite cheaply for small changes.

7. Atomic commits across multiple directories. How do you select files in
multiple projects for a checkin in the VSS browser?

8. Multiple working directores, possibly on different branches. In VSS
you must explicitly switch working folders. In CVS, I can checkout
a module to as many working directories I want, and make independent changes
in
each of these as if I were multiple developers.  The working directories
point
backward to the repository, rather than the other way around.  

9. Expansion of a $Name$ keyword to identify exported releases.

10. Branch tags in addition to revision tags.

11. Symbolic links to directories within repository.

CVS is in a whole other league compared to VSS.

>But... VSS has it's advantages as well. If you are stick to the Windows 
>environment it migh
>be a small shock when you go on with CVS, but if are good on UNIX, or have 
>some people
>at hand, then there is no problem.
>
>VSS integrates smoothly with VC IDE (you mentioned it). CVS doesn't yet.
The 

That is a lie. VSS does not interoperate smoothly with Developer Studio.
Many
developers I know stick to the stand alone browser interface.

I rather like how CVS integrates into a *shell* environment. The cvs
commands
are just ``aware''  of what repository you are communicating with based on
where you are in the filesystem.




Found this <uaiY2.431$jw4.33162@burlma1-snr2> in comp.software.config-mgmt:

== BEGIN forwarded message ==



Hi Folks,
   I have a grave warning for those of you using VSS 6 or thinking of using
VSS 6.  I'm told the problem does not exist in VSS 5 so you may want to
reconsider upgrading unless Microsoft decides to fix this (they better).  A
summary of the problem is that you cannot reliably branch off of a label.
If you create 3 projects a, b, and c:

       a
      / \
     b   c             Label this "MyFooBar"
    /      \
  foo     bar

and 2 files under b and c, foo and bar.  Then recursively label a
"MyFooBar".  Delete (NOT permanently)  project c, so the project a now looks
like this:

       a
      /
     b
   /
 foo

If you do a show history on project a, it will show you all of the labels.
Select the "MyFooBar" label.  Push the Share button.  This is the VSS way to
branch off a label.  Check the | | Branch after Share check box and pick a
project to share to.  Another Dialog Box comes up, check the | | Recursive
check box.  Click OK.  A warning box comes up saying "File or Project Not
Found".  Click OK another Dialog Box pops up saying "You do not have access
rights to $a/c".  Click OK.  You will see that your branch now looks like
this.

  ProjectBranch
             /
          a
        /
      b
    /
  foo

When it should look like this:

  ProjectBranch
            |
            a
           / \
         b    c
        /      \
      foo      bar

Any release engineer would tell you this renders Source Safe as a waste of
space on the hard drive.  In fact, it's downright dangerous, as we have
seen.
Chris Geggis




== END forwarded message ==




Found this <[EMAIL PROTECTED]>
in comp.sys.mac.programmer.codewarrior:

== BEGIN forwarded message ==



In article <[EMAIL PROTECTED]>, David Sommer <[EMAIL PROTECTED]>
wrote:

>Is that True?    

No

The rumor was in regards to future versions of VSS and  our statement is ...


To our knowledge, the new versions of VSS on Windows will be very
Windows-centric and it's highly unlikely that we will be porting these to
MacOS.

Ron

-- 
Metrowerks gears up for WWDC
http://macweek.zdnet.com/

METROWERKS                   Ron Liechty
"Software at Work"    [EMAIL PROTECTED]


== END forwarded message ==




> Besides, it's a hell of a lot more interesting to work with Linux,
> instead of constantly wondering why such and such black box refuses to
> work as advertised

I think you may have answered your CVS question there (for you -
others have others goals/priorities/&c).

> So far, I'm told CVS doesn't handle branching/merging as easily as
> Perforce, and changes are not atomic, which is not good as we'll have
> a depot in Paris, and developers working off it from different places
> in the world.

The atomicity thing almost never comes up in everyday use of CVS.  In
fact, I've don't recall ever hearing anyone complain about it based on
using CVS, as opposed to just thinking about it.  And even if the
situation did come up, the consequences would be mild.

The branching and merging thing is more of an issue.  CVS is better
than some systems (or so I hear), but there is room for improvement
with respect to things like remembering which changes have been merged
from a branch (#39 in the CVS TODO).




On Thu, 4 Mar 1999 13:00:44 -0600, "Erik Funkenbusch" <[EMAIL PROTECTED]>
wrote:
>SourceSafe is "unreliable" mainly because of network issues.  If you remove
>those issues SourceSafe becomes extremly reliable.  The primary reasons
that
>SourceSafe databased become corrupt is a) Network glitches (especially if
>dialups are used).  b) Power or disk glitches.  c) file sharing glitches.
(snip)
>So, SourceOffsite not only solves the problem of slow WAN/Modem links, but
>also makes the entire process more reliable.
        I know all that, and that's why we went back to SS after
StarTeam 2. 

>The only valid point of your argument is that you want to use Unix as a
>server.  (Of course doing this introduces the problems of CR/LF conversion
>and other issues).
        Corrupted DB, un-usable through a modem or WAN, and running
only under NT are good enough reasons to look elsewhere, IMHO.

>Don't get me wrong, I don't thing VSS is a great solution for everyone, but
>it does do certain things that no other source control product does, and it
>*IS* the easiest of the bunch to use and administer.  All I'm saying is
that
>you should make your decisions based on real problems, and not imaginary
>ones.
        SourceOffSite is release 1.0... Adding one more unreliable
piece of SW on top of a not-so-reliable piece of SW, on top of a not
reliable OS is not my idea of productivity. The same reason we will
not switch from Linux sendmail to Exchange as the powers-that-be would
like us to. 

        My job as an admin is not to do beta testing for free for MS
and others. Besides, it's a hell of a lot more interesting to work
with Linux, instead of constantly wondering why such and such black
box refuses to work as advertised, better for my blood pressure, and
a better investment for my longer-term professional plans, me thinks.

Hence my post: Why shouldn't we go CVS instead of commercial products?

        So far, I'm told CVS doesn't handle branching/merging as
easily as Perforce, and changes are not atomic, which is not good as
we'll have a depot in Paris, and developers working off it from
different places in the world.

Thanks for your comments though,
FF.
--
The system required Windows 95 or better, so I installed Linux!




Frédéric Faure <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]...
> On Wed, 3 Mar 1999 16:31:03 -0600, "Erik Funkenbusch" <[EMAIL PROTECTED]>
> wrote:
> >There is a 3rd party prodcut called SourceOffsite which alleviates the
> >WAN/Modem problem.  It's relatively cheap too.
>
> Yes, I know that product, but SS is already unreliable enough. Adding
> one more layer is out of the question. Besides, we'd rather run the
> server on a Linux/Unix system instead.

SourceSafe is "unreliable" mainly because of network issues.  If you remove
those issues SourceSafe becomes extremly reliable.  The primary reasons that
SourceSafe databased become corrupt is a) Network glitches (especially if
dialups are used).  b) Power or disk glitches.  c) file sharing glitches.

Since SourceSafe manipulates the files directly over the network, any glitch
in the network structure can potentially cause a file corruption.  The same
is true if power is lost or the disk drive hiccups (or crashes).  Also,
because the same file is being accessed by more than one program at a time,
certain locking glitches may occur (this is a definate problem with VSS, but
very rare).

If you instead access the database through a single client/server access
point that runs on the same machine as the database, then you've removed
many of these problems.  (Power and disk problems can still result).

So, SourceOffsite not only solves the problem of slow WAN/Modem links, but
also makes the entire process more reliable.

The only valid point of your argument is that you want to use Unix as a
server.  (Of course doing this introduces the problems of CR/LF conversion
and other issues).

Don't get me wrong, I don't thing VSS is a great solution for everyone, but
it does do certain things that no other source control product does, and it
*IS* the easiest of the bunch to use and administer.  All I'm saying is that
you should make your decisions based on real problems, and not imaginary
ones.








Mike Baker <[EMAIL PROTECTED]> wrote in message
news:3t+$5RAOZQ32EAN$@tascomp.demon.co.uk...
> I can't believe CVS can be worse at branching than VSS. This is one of
> the things that is prompting me to look at CVS as an alternative to to
> VSS, which we have used for about 3 years, and driving me up the wall.

CVS has much better branching than VSS.  VSS on the other hand has certain
advantages with it's project orientation and sharable projects that CVS
can't provide (such as the ability to have the same project be part of two
different source trees at different revision levels).









Message http://www.egroups.com/list/info-cvs/?start=6780
>
> >>>>> "Erik" == Erik Sette <[EMAIL PROTECTED]> writes:
> 
> Erik> Hi all, Has anyone here tried Source Safe for NT?  
> 
> We have used SourceSafe and CVS extensively on a project which I have lead
> during the past year, and IMO, CVS is by far a more usable product.   Our
> setup is both repositories reside on a Linux box (P150, 64Mb RAM).  We use
> CVS in `pserver' mode.
> 
> My number one complaint is with regard to speed.  A few of our developers,
> myself included, work from home over dialup (ISDN and 33.6) connections,
and
> in the office connected to a real LAN.  VSS is rediculously slow over a
> dialup connection at even the most mundane of tasks such as viewing the
> repository, much less actually checking something in or out.
> 
> In my estimation, there to be no difference in speed between the GUI and
the
> command line interfaces either - it appears to be the underlying protocol
> which is at fault.  This is no great surprise since there is no server,
per
> se, and no real protocol either with VSS.  All VSS code runs on your
> workstation and accesses the various files over the network.
> 
> CVS is much better, even without using compression.
> 
> Cost is another factor.  VSS at $500/seat seems way too pricy for a
> glorified SCCS.  I suppose the cost might well be justified since VSS is
> integrated with other Microsoft products, including VB and VC++.  Some of
> the developers on the project liked this, however, some of them found it
> annoying and didn't use it.
> 
> Another problem for us was one of having to support multiple platforms
> including NT, SunOS, Linux, and VMS.  VSS can't do that.
> 
> Erik> Can it do everything that CVS can do?
> 
> It depends on what you mean by everything.  The answer to this question is
> likely no but who actually uses _everything_ in CVS anyway?  The thing to
> look at when answering this question is the developer paradigm you wish to
> enforce: CVS supports concurrrent development while VSS does not.
> -- 
>
---------------------------------------------------------------------------
> John D. Amidon, TransCore, 3500 Parkway Lane, Suite 600, Norcross, GA
30092
> e-mail: [EMAIL PROTECTED] | V:+1 770 447 6831 | D:+1 770 449
7268
>
---------------------------------------------------------------------------
> 
> 
> 



-----
See the original message at http://www.egroups.com/list/info-cvs/?start=6780




Scrive Jo Hagelberg ([EMAIL PROTECTED]):
>My personal opinion is that StarTeam would meet our needs very closely. I 
>just have to convince the MS biased people and disperse any fear about 
>Starbase's future. Further it would be fine to have a *reproducable* bug in

>VSS that I could demonstrate to my people to make the decision more 
>waterproof (ah  well, Windows *never* is reproducable, however, if there's 
>sth please give me some details).

Actually, while we're using SourceSafe a lot in our shop, I can't
recall any outright *bugs*. However, I think there are some serious
limitations. Here is a scenario that you could use to see whether
the version management system you are considering is worthwhile or
not. Say that you have set a label (created a class or whatever
the terminology of your VCS is) that defines a version that you
release to the market, to test or whatever. Now, there are four
things you may need to do with this version:

1. Fix a bug in a file, and add the new revision of the label.
2. Rollback a file to a previous version, because some developper
   had checked in something which was not to be in this version
   (and is not compatible with the new version.)
3. Add a new file to the label (because someone forgot to check it 
   in, or because it was needed to fix a bug).
4. Remove a file that shouldn't be there.

The VSS5 GUI can do none of those. The VSS6 GUI can do 1 and 2, if
it has a VSS6 database. It still can't do 3 and 4. If you use the
OLE interface you can do 1 and 2 quite easily, with both VSS5 and
VSS6. I think I know how I can do 3 with the OLE inteface (but 
performance may not be the best). 4 appears to be difficult to 
carry out without tricks.

It should be added that, if you need to put an old version of the 
file, into more than one label, you run into problems with VSS, 
unless you can accept to check in the old version as current. (A  
really awful kludge.)

-- 
Erland Sommarskog, Stockholm, [EMAIL PROTECTED]
This could have been my two cents worth, but alas the Swedish
government has decided that I am not to have any cents.




On 06-Dec-99, 23:16 (CST), Diophantus <[EMAIL PROTECTED]> wrote: 

> For example, you can do edits in many places of a large directory
> tree, then commit them in one operation.  To my knowledge, this is not
> possible in VSS.  The user interface allows you to select files only
> in one directory. You can commit multiple files, but not in multiple
> directories.

This isn't quite true -- if you use one of the "search" functions (such
as by name, or by status (e.g. all modified files in tree)), then the
list (may) contain files from several subdirectories, which you can
select and commit as one operation.

Steve

-- 
Steve Greenland         |        /"\        ASCII ribbon campaign

Ellipsys, Inc.          |        \ /          against HTML email
[EMAIL PROTECTED]  |         X                     
http://www.ellipsys.com |        / \     The 'M' is *not* for 'mail'    





Great summary of many significant differences.  Couple of
clarifications below...

On Tue, Dec 07, 1999 at 05:16:02AM +0000, Diophantus wrote:
> 
> done to the original, or to the copy (in either direction).  The strange
part
> about the links is that directories cannot be linked!  Thus it is not
possible
> to link one project as a subproject of more than one other project. You
must
> instead link the files individually.

Agree with the strangeness of VSS in all dimensions, but the latest
VSS will allowing 'sharing' directories.  One repository I've worked
on, for example, had a 'common' project with subprojects (directories)
such as lib, include, etc.  The subprojects of 'common' were shared
into at least a half-dozen other projects (i.e. include, lib, etc.
were linked as subdirectories under many projects).

> VSS has an integrated user interface and a management interface.
Everything
> can be done through the UI, and you can view the entire repository in it.

Actually, you cannot do some things through the VSS GUI.  You must
revert to the command line client.  A great (and critically important)
example of this is so-called back-branching (i.e. creating a branch
based on a pre-existing label/tag that isn't the latest revision
in the repository).  This can only be done through the command line
client and is a pain.

Thanks again for a great summary.

-scott




On Mon, 6 Dec 1999 17:06:42 -0800, Rajani <[EMAIL PROTECTED]> wrote:
>Where can I find a comparative study between CVS and VSS(Visual Source
>Safe)?

Such a thing might be quite useful. I don't know of any writeup, but I have
experience with both systems.

I can give you a few major points:

1. Branching

VSS doesn't support branching in the same way that CVS does.  When you
branch a
file in VSS, you must create a clone of the file.  This means creating a new
directory (or "project", in VSS terms) where the file will reside. The new
file
shares a history with old up until the branching point.  If you do a lot of
branching, your VSS tree becomes polluted with subdirectories.  I don't call
this branching at all. I call it code forking by way of making a *copy*.

This so-called branching breaks links; that is to say, if the file being was
linked under multiple projects, these links are preserved, but not inherited
by
the branched version.

There is, however, a way to make a wholesale copy of a tree within VSS such
that *internal* links in the original tree are autoomatically reproduced in
the
copy. External links are broken.

In CVS, branching is done very differently. Each file has its own version
file
in the repository (a file with the ,v suffix). The version file contains all
of
the revisions and branches. When you branch a file, the branching happens in
place.  You are not required to create another subdirectory in the
respository.
Branching and linking are not related at all. CVS branching is truly
powerful
because it doesn't upset your project structure and is done in place.  You
can
switch your working copy to be on any branch.

The convenient "in line" branching of CVS makes it easy to use branches
casually. Unlike VSS, you don't have to recreate a whole tree just to create
a
branch of a project! In fact, branch creation does next to nothing in CVS;
all
it does is create a branch tag in one or more source files.

2. Linking

VSS has a strange notion of file linking that resembles the UNIX hard link.
A
file can appear in more than one project.  When you branch files (which is
done
by a process that is basically copying) information is retained about the
origin of the copy, which makes it possible to perform merges when changes
are
done to the original, or to the copy (in either direction).  The strange
part
about the links is that directories cannot be linked!  Thus it is not
possible
to link one project as a subproject of more than one other project. You must
instead link the files individually.

CVS, on the other hand, runs on a UNIX workstation and the linking is done
by
ordinary symbolic or hard links. Using symbolic links, you can easily make a
directory appear to be a subdirectory of another. Files can be shared
similarly
among directories, using symbolic links.

3. Merging

CVS lets you merge (patch) arbitrary deltas onto your working copy.  Suppose
you have some working file foo.c.  You can select the difference between any
two repository versions of foo.c and patch those differences onto foo.c.
When
you are developing on multiple branches, you must manually keep track of the
branch revisions so that you merge the appropriate deltas and don't merge
anything twice or forget to merge anything. This is done by carefully
tagging
the releases of your work.

VSS has a merge feature to synchronize files that have been branched
(cloned).
It automatically keeps track of what has been already merged, so you can
bring
each independent version up to date with all the others.  This is not as
flexible as the CVS "merge any delta" feature, but it is somewhat more
foolproof, particularly for inexperienced users.

4. Concurrent Work

Concurrent work can be configured in VSS. By default, strict locking is
used.
Only one developer can work on a file at a time. However, "multiple
checkouts"
can be enabled, for more CVS-like operation. The multiple checkouts can be
enabled globally or from each client's perspective. The method is somewhat
odd
because the discipline still resembles strict locking. That is to say, you
are
still required to go through the same steps of locking a file (called
checking
out in VSS terminology). It's just that multiple locks are allowed from
multiple developers. 

In CVS, there is no locking by default, though it can be arranged. There is
no
explicit action to be taken when you want to work on a file. Just work on it
and commit the changes. There are ways to indicate that you are editing a
file,
and it is possible to register oneself as a watcher to observe the changes
of
status that a file undergoes. But there is no requirement to use this.

5. User interface

VSS has an integrated user interface and a management interface. Everything
can
be done through the UI, and you can view the entire repository in it.  There
is also integration in the from of some Microsoft version control API that I
know little about; it allows tools written to the API to use VSS, or any
other
version control system which conforms to the API.  (I'm less than impressed
with the integration between VSS and DevStudio, which is presumably provided
by
this API. You will find that many developers perform to do their VSS
checkouts
and checkins in the standalone client rather than via the integrated
interface).

CVS has a standard command-line interface. Some things cannot be easily done
through this interface, such as managing symbolic links in the repository.
There is no mechanism to browse the repository. If you have a locally
mounted
repository, you can view it using conventional filesystem tools. But the
remote
access methods to CVS don't let you browse. However, because of the way CVS
works, there is less of a need to browse. You just have to know the name of
the
module to check out. Once you have a local working copy, you can browse
that.
Hence the few GUI tools that exist for CVS, like WinCVS for Windows, are
centered on the working copy.  Under CVS, many cycles of the same project
can
live under the same module in the same directory tree, thanks to in-place
branching.  As mentioned before, VSS branching requires the proliferation of
copies of files, because its branching feature depends on it. Therefore the
ability to browse the repository is necessary to the VSS user.

6. Openness

VSS loses big in this area. It is a proprietary system developed by
Microsoft
and Mainsoft. The source code is not open and it is subject to strict
licensing
agreements.

CVS is free software: it is freely distributed in source code form.  Because
it
is open, mature and supports distributed development over the internet quite
well it is favored by a lot of free software hackers. The various BSD
UNIXes,
the GNU C compiler, Mozilla, The GNU Image Manipulation Program (GIMP) are
just
some of the projects which use CVS for concurrent development and managing
releases. Of course, CVS itself is versioned using CVS.

7. Security

VSS uses some proprietary client/server protocol, possibly based on
Microsoft
RPC.  I don't know how secure that is. CVS can use a number of different
access
methods to remote repositories. There is an insecure protocol called
pserver.
It can work over rsh (remote shell) which is insecure, and also over ssh
which
is very secure. There is also support for Kerberos via the GSSAPI that can
be
compiled in.

8. Working Copies

CVS and VSS difer markedly in their relationship between the repository and
the
working copy. VSS essentially acts as a database that has little
relationship
to working copies.  The standard GUI browser is a window into the
repository.
All state information regarding locks (checkouts) or version pinning is
centrally maintained. For any given folder within VSS, the user can
designate a
target directory on a local drive where the files in that folder will go
when
taken from VSS. A given folder in CVS corresponds to just one designated
local
directory (at a time).

CVS, on the other hand, has an entire different discipline. Under CVS, the
working copy of a module is endowed with meta-information which points back
to
the repository.  State information specific to a working set is maintained
within that set and not in the repository. One of the nicest features of CVS
is
that one can have multiple independent working copies of the module;
essentially one can pretend to be two or more developers!  You can do
different
development in each copy, and then merge it all together by commiting the
changes. Of course, each copy can be independently set to a different branch
too, which is especially useful.  Each working set remembers which
repository
it came from, too. So if you participate in projects on various CVS
repositories around the net, it's quite easy. The CVS repository you
communicate with automatically depends on what program you are working on.

9. Pins and Stickies

CVS has a "sticky" features: sticky tags, sticky options and sticky dates.
These sticky things are properties of the working copy.  Sticky tags can
force
a working copy to be on a particular branch. They can also pin the working
copy
to a particular old revision so that you can't accidentally commit changes.

VSS doesn't have sticky tags. How it resolves the branch ambiguity is by
turning branching into a copy operation, as mentioned before. You know what
branch a working copy corresponds to because it came from the VSS folder
containing that branch, and only that branch. 

On the other hand, VSS has a feature called "pinning".  It's possible for a
user to pin files to a certain version. This means that if someone tries to
get
the latest version of these files, they get the pinned revisions rather than
the latest. Pins also prevent checkins from happening to these files in the
particular working directory.  Pins are a property of the repository, so are
seen by all participating users. However, pins are also a property of
individual file links.  This is what makes them useful: you can link a file
from someone else's project into your own project. THen in your project, you
pin it at some certain desired release. As a result, you will not pick up
changes made to that file in the original project or any other project where
it
is linked. By the same token, in your project, nobody can commit a new
revision
to the file either.

(In some ways, pinning is a solution to problems caused by sharing of files,
rather than sharing at the component level. It can be effectively emulated
by
CVS sticky tags; there is little trouble in arranging for your software team
to
use only known stable releases of some component produced by another team.)

10. Multiple commits

In CVS, you can perform operations on many files spanning multiple
directories.
For example, you can do edits in many places of a large directory tree, then
commit them in one operation.  To my knowledge, this is not possible in VSS.
The user interface allows you to select files only in one directory. You
can commit multiple files, but not in multiple directories.


Reply via email to