More about Subversion [was "Re: SourceSafe??? Recommendations needed"]
hedley.finger at myob.com
hedley.finger at myob.com
Sun Apr 23 16:44:44 PDT 2006
All:
Thought you might be interested in this summary of Subversion as an
alternative to VSS.
Hedley
----- Forwarded by Hedley Finger/AU/MYOB on 24/04/2006 09:46 AM -----
Zhi Qiang Wu <wuzhiq at cn.ibm.com>
Sent by: dita-users at yahoogroups.com
20/04/2006 04:30 PM
Please respond to dita-users
To: dita-ot-developer at lists.sourceforge.net,
dita-users at yahoogroups.com
cc:
Subject: [dita-users] Proposal for using subversion instead
of CVS
Dear all,
Due to some known limitations of CVS, to improve the productivity and
efficiency of the DITA-OT development process, we are now having a
proposal to use Subverion instead of CVS as our version control system in
SourceForge.net.
Below are some simple introduction about Subversion, would you please help
to have a review of this proposal and give us some comments about this
proposal? Any suggestions or comments are welcome! Thank you for your
kindly support!
1. About subversion
Subversion is a free/open-source version control system. The goal of the
Subversion project is to build a version control system that is a
compelling replacement for CVS in the open source community. The software
is released under an Apache/BSD-style open source license.
2. Subversion's Features
# Most current CVS features.
Subversion is meant to be a better CVS, so it has most of CVS's features.
Generally, Subversion's interface to a particular feature is similar to
CVS's, except where there's a compelling reason to do otherwise.
# Directories, renames, and file meta-data are versioned.
Lack of these features is one of the most common complaints against CVS.
Subversion versions not only file contents and file existence, but also
directories, copies, and renames. It also allows arbitrary metadata
("properties") to be versioned along with any file or directory, and
provides a mechanism for versioning the `execute' permission flag on
files.
# Commits are truly atomic.
No part of a commit takes effect until the entire commit has succeeded.
Revision numbers are per-commit, not per-file; log messages are attached
to the revision, not stored redundantly as in CVS.
# Apache network server option, with WebDAV/DeltaV protocol.
Subversion can use the HTTP-based WebDAV/DeltaV protocol for network
communications, and the Apache web server to provide repository-side
network service. This gives Subversion an advantage over CVS in
interoperability, and provides various key features for free:
authentication, path-based authorization, wire compression, and basic
repository browsing.
# Standalone server option.
Subversion also offers a standalone server option using a custom protocol
(not everyone wants to run Apache 2.x). The standalone server can run as
an inetd service, or in daemon mode, and offers basic authentication and
authorization. It can also be tunnelled over ssh.
# Branching and tagging are cheap (constant time) operations
There is no reason for these operations to be expensive, so they aren't.
Branches and tags are both implemented in terms of an underlying "copy"
operation. A copy takes up a small, constant amount of space. Any copy is
a tag; and if you start committing on a copy, then it's a branch as well.
(This does away with CVS's "branch-point tagging", by removing the
distinction that made branch-point tags necessary in the first place.)
# Natively client/server, layered library design
Subversion is designed to be client/server from the beginning; thus
avoiding some of the maintenance problems which have plagued CVS. The code
is structured as a set of modules with well-defined interfaces, designed
to be called by other applications.
# Client/server protocol sends diffs in both directions
The network protocol uses bandwidth efficiently by transmitting diffs in
both directions whenever possible (CVS sends diffs from server to client,
but not client to server).
# Costs are proportional to change size, not data size
In general, the time required for a Subversion operation is proportional
to the size of the changes resulting from that operation, not to the
absolute size of the project in which the changes are taking place. This
is a property of the Subversion repository model.
# Choice of database or plain-file repository implementations
Repositories can be created with either an embedded database back-end
(BerkeleyDB) or with normal flat-file back-end, which uses a custom
format.
# Versioning of symbolic links
Unix users can place symbolic links under version control. The links are
recreated in Unix working copies, but not in win32 working copies.
# Efficient handling of binary files
Subversion is equally efficient on binary as on text files, because it
uses a binary diffing algorithm to transmit and store successive
revisions.
# Parseable output
All output of the Subversion command-line client is carefully designed to
be both human readable and automatically parseable; scriptability is a
high priority.
# Localized messages
Subversion uses gettext() to display translated error, informational, and
help messages, based on current locale settings.
3. SVN Limitations
Case Sensitivity in File and Directory Names: The SVN server stores files
in a way that is case sensitive. That is, a file with the name 'FILE' is
distinctly separate from a file with the name 'File'. Developers who have
a potential audience using Operating Systems that are case-insensitive
should be aware of this, and select case-insensitive filenames. The case
insensitive hook script may be useful to check for this.
Speed: While we are taking all efforts to ensure our infrastructure is
configured optimally, SVN is not as fast as CVS. This difference shouldn't
affect most users doing normal daily operations in any meaningful way.
File and Directory Removal: Files and directories cannot be removed in
their entirety from a SVN repository. This limitation is documented in
Version Control with Subversion. To remove a file from a SourceForge.net
Subversion repository, one would have to:
1. Get a copy of their repository backup
2. Create a SVN dump file from the repository backup
3. Filter out the undesirable data
4. Import the resulting SVN dump file back into the project's SVN
repository, replacing its existing content.
File Naming Limitations: File and directory names should not contain
spaces; not all platforms handle spaces well. Commonly-reserved filenames
should also be avoided. Some reserved filenames follow (treat all as if
they are case insensitive, don't use them with a different case):
* Windows: con, aux, com, com1 - com9, prn, lpt1 - lpt3, nul, a: - z:,
clock$, _svn
* All: .svn
Regards,
DITA-OT Development Team
YAHOO! GROUPS LINKS
Visit your group "dita-users" on the web.
More information about the framers
mailing list