Duane Whitty <email@example.com> writes:
> IANAE on VCSs but I have been doing a lot of reading of late
> concerning the differences between VCSs. I really believe SVN has
> some extremely compelling features but the way it does/does not do
> its tagging is, I believe, an important concern. If I understand
> correctly it is the whole repository that gets a version number and
> not individual files.
That is also the case for Perfoce.
> Here is one of the URIs I used for information which is a feature
> summary and comparion (by no means exhaustive) between CVS and SVN.
The author's claim that Subversion does not have tags is incorrect.
Subversion implements tags in the same manner as it implements
branches: through namespace operations. A tag is actually a branch
which the developers agree not to commit to; this may seem strange,
but can actually be advantageous in the rare-but-not-unheard-of case
where we need to "slide" a tag, since Subversion will maintain a
history of that slide.
The author also does not understand the point of Subversion's file
properties. Subversion has a single, consistent mechanism for storing
metadata, and unlike CVS, those metadata are versioned. The types of
metadata stored by Subversion include:
- execute bit (svn:special) which is not well supported in CVS
- mime type (svn:mime-type) and character set (svn:charset) which CVS
does not support at all. Subversion uses a file's mime type to
determine if it is text or binary; CVS uses an unversioned flag (b)
in the ,v file.
- ignored files in a directory (svn:ignore) for which CVS relies on a
special file called .cvsignore.
- any other information you which to place there; for instance, SVK
uses svk:merged to keep track of which revisions have already been
merged when you merge changes between branches.
Dag-Erling Smrgrav - firstname.lastname@example.org