[svnbook] r4388 committed - Merge from ^/trunk/en r4387 (moderize the '... Right Tool?' section).

svnbook at googlecode.com svnbook at googlecode.com
Fri Feb 1 12:47:18 CST 2013


Revision: 4388
Author:   cmpilato at gmail.com
Date:     Fri Feb  1 10:44:07 2013
Log:      Merge from ^/trunk/en r4387 (moderize the '... Right Tool?'  
section).
http://code.google.com/p/svnbook/source/detail?r=4388

Modified:
  /branches/1.7/en
  /branches/1.7/en/book/ch00-preface.xml

=======================================
--- /branches/1.7/en/book/ch00-preface.xml	Sat Oct 29 21:37:07 2011
+++ /branches/1.7/en/book/ch00-preface.xml	Fri Feb  1 10:44:07 2013
@@ -121,43 +121,111 @@
          fantastic hammer, but be careful not to view every problem as
          a nail.</para>

-      <para>If you need to archive old versions of files and
-        directories, possibly resurrect them, or examine logs of how
-        they've changed over time, then Subversion is exactly the
-        right tool for you.  If you need to collaborate with people on
-        documents (usually over a network) and keep track of who made
-        which changes, then Subversion is also appropriate.  This is
-        why Subversion is so often used in software development
+      <para>As a first step, you need to decide if version control in
+        general is required for your purposes.  If you need to archive
+        old versions of files and directories, possibly resurrect
+        them, and examine logs of how they've changed over time, then
+        version control tools can do that.  If you need to collaborate
+        with people on documents (usually over a network) and keep
+        track of who made which changes, a version control tool can do
+        that, too.  In fact, this is why version control tools such as
+        Subversion are so often used in software development
          environments—working on a development team is an
-        inherently social activity, and Subversion makes it easy to
-        collaborate with other programmers.  Of course, there's a cost
-        to using Subversion as well: administrative overhead.  You'll
-        need to manage a data repository to store the information and
-        all its history, and be diligent about backing it up.  When
-        working with the data on a daily basis, you won't be able to
-        copy, move, rename, or delete files the way you usually do.
-        Instead, you'll have to do all of those things through
-        Subversion.</para>
+        inherently social activity where changes to source code files
+        are constantly being discussed, made, evaluated, and even
+        sometimes unmade.  Version control tools facilitate that sort
+        of collaboration.</para>

-      <para>Assuming you're fine with the extra workflow, you should
-        still make sure you're not using Subversion to solve a problem
-        that other tools solve better.  For example, because
-        Subversion replicates data to all the collaborators involved,
-        a common misuse is to treat it as a generic distribution
-        system.  People will sometimes use Subversion to distribute
-        huge collections of photos, digital music, or software
-        packages.  The problem is that this sort of data usually isn't
-        changing at all.  The collection itself grows over time, but
-        the individual files within the collection aren't being
-        changed.  In this case, using Subversion
-        is <quote>overkill.</quote><footnote><para>Or as a friend puts
+      <para>There is cost associated with using version control, too.
+        Unless you can outsource the administration of your version
+        control system to a third-party, you'll have the obvious costs
+        of performing that administration yourself.  When working with
+        the data on a daily basis, you won't be able to copy, move,
+        rename, or delete files the way you usually do.  Instead,
+        you'll have to do all of those things through the version
+        control system.</para>
+
+      <para>Even assuming that you are okay with the cost/benefit
+        tradeoff afforded by a version control system, you shouldn't
+        choose to use one merely because it <emphasis>can</emphasis>
+        do what you want.  Consider whether your needs are better
+        addressed by other tools.  For example, because Subversion
+        replicates data to all the collaborators involved, a common
+        misuse is to treat it as a generic distribution system.
+        People will sometimes use Subversion to distribute huge
+        collections of photos, digital music, or software packages.
+        The problem is that this sort of data usually isn't changing
+        at all.  The collection itself grows over time, but the
+        individual files within the collection aren't being changed.
+        In this case, using Subversion is
+        <quote>overkill.</quote><footnote><para>Or as a friend puts
          it, <quote>swatting a fly with a
          Buick.</quote></para></footnote> There are simpler tools that
          efficiently replicate data <emphasis>without</emphasis> the
          overhead of tracking changes, such as <command>rsync</command>
          or <command>unison</command>.</para>

-      <!-- TODO: Fill in the landscape with respect to DVCS -->
+      <para>Once you've decided that you need a version control
+        solution, you'll find no shortage of available options.  When
+        Subversion was first designed and released, the predominant
+        methodology of version control was <firstterm>centralized
+        version control</firstterm>—a single remote master
+        storehouse of versioned data with individual users operating
+        locally against shallow copies of that data's version history.
+        Subversion quickly emerged after its initial introduction as
+        the clear leader in this field of version control, earning
+        widespread adoption and supplanting installations of many
+        older version control systems.  It continues to hold that
+        prominent position today.</para>
+
+      <para>Much as changed since that time, though.  In the years
+        since the Subversion project began its life, a newer
+        methodology of version control called <firstterm>distributed
+        version control</firstterm> has likewise garnered widespread
+        attention and adoption.  Tools such as Git
+        (<ulink url="http://git-scm.com/" />) and Mercurial
+        (<ulink url="http://mercurial.selenic.com/" />) quickly rose
+        to the tops of the distributed version control system (DVCS)
+        ranks.  Distributed version control harnesses the growing
+        ubiquity of high-speed network connections and low storage
+        costs to offer an approach which differs from the centralized
+        model in key ways.  First and most obvious is the fact that
+        there is no remote, central storehouse of versioned data.
+        Rather, each user keeps and operates against very
+        deep—complete, in a sense—local version history
+        data stores.  Collaboration still occurs, but is accomplished
+        by trading <firstterm>changesets</firstterm> (collections of
+        changes made to versioned items) directly between users' local
+        data stores, not via a centralized master data store.  In
+        fact, any semblance of a canonical <quote>master</quote>
+        source of a project's versioned data is by convention only, a
+        status attributed by the various collaborators on that
+        project.</para>
+
+      <para>There are pros and cons to each version control approach.
+        Perhaps the two biggest benefits delivered by the DVCS tools
+        are incredible performance for day-to-day operations and
+        vastly better support for merging between branches.  The
+        downside is that distribute version control is an inherently
+        more complicated model, which can present a non-negligible
+        challenge to comfortable collaboration.  With centralized
+        version control, you may find a greater degree of control over
+        your versioned assets, especially as regards access control.
+        Fortunately, many wise organizations have discovered that this
+        needn't be a religious debate, and that Subversion and a DVCS
+        tool such as Git can be used together harmoniously within the
+        organization, each serving the purposes best suited to the
+        tool.</para>
+
+      <para>Alas, this book is about Subversion, so we'll not attempt
+        a full comparison of Subversion and other tools.  Readers who
+        have the option of choosing their version control system are
+        encouraged to research the available options and make the
+        determination that works best for themselves and their fellow
+        collaborators.  And if, after doing so, Subversion is the
+        chosen tool, there's <emphasis>plenty</emphasis> of detailed
+        information about how to use it successfully in the chapters
+        that follow!</para>

      </sect2>





More information about the svnbook-dev mailing list