
               Subversion, a version control system.
               =====================================

$LastChangedDate: 2004-04-16 14:18:58 -0400 (Fri, 16 Apr 2004) $

Contents:

     I. A FEW POINTERS
    II. DOCUMENTATION
   III. PARTICIPATING IN THE SUBVERSION COMMUNITY
    IV. QUICKSTART GUIDE
     V. CONVERTING FROM CVS


I.    A FEW POINTERS

      For an overview of the Subversion project, visit

         http://subversion.tigris.org/

      Once you have a Subversion client you can get the latest version
      of the code with the command:

         $ svn co http://svn.collab.net/repos/svn/trunk subversion



II.   DOCUMENTATION

      The main documentation is the Subversion Book, written in
      DocBook XML, which lives in the doc/ tree.  If you wish to build
      the documentation from source, read doc/book/README.  Otherwise,
      an on-line version of the book can be found at
      http://svnbook.red-bean.com.

      See COPYING for copyright information.
      See HACKING for development information.
      See INSTALL for installation information.



III.  PARTICIPATING IN THE SUBVERSION COMMUNITY

      First, read the HACKING file!  It describes Subversion coding and
      log message standards, as well as how to join discussion lists.

      Talk on IRC with developers:  irc.freenode.net, channel #svn.

      Read the FAQ:  http://subversion.tigris.org/project_faq.html



IV.   QUICKSTART GUIDE

      Please note that this section is just a quick example for people
      who want to see Subversion run immediately.  It's not an excuse
      to ignore the book!

      The Subversion client has an abstract interface for accessing a
      repository.  Three "Repository Access" (RA) implementations
      currently exist as libraries:

      libsvn_ra_dav:   accesses a networked repository using WebDAV.
      libsvn_ra_local: accesses a local repository using Berkeley DB.
      libsvn_ra_svn:   accesses a remote repository using a custom protocol.

      You can see which methods are available to your 'svn' client by
      running 'svn --version'.  The following example assumes that
      ra_local is available to your client.  (If you don't see
      ra_local, it probably means that Berkeley DB wasn't found when
      compiling your client binary.)


     1.  svnadmin create /path/to/repos    
  
          - this creates a new directory, 'repos'.  Make sure that
            /path/to/repos/ is on local disk, NOT a network share.
 
          - make SURE you have complete recursive read/write access to
            the newly created 'repos' directory.

          - understand that the repository is mainly a collection of
            BerkeleyDB files;  you won't actually see your versioned
            data if you peek in there.

     2.  svn import /tmp/project file:///path/to/repos -m "Initial import"

          - /tmp/project is a tree of data you've pre-arranged.
            If you can, use this layout, as it will help you later on:

               /tmp/project/branches/
               /tmp/project/tags/
               /tmp/project/trunk/
                               foo.c
                               bar.c
                               baz.c
                               etc.

     3. svn checkout file:///path/to/repos/trunk project

          - this creates a 'project' directory which is a working copy of
            the /trunk directory in the repository.

     4. Try using the repository:

          - edit a file in your working copy.
          - run 'svn diff' to see the changes.
          - run 'svn commit' to commit the changes.
          - run 'svn up' to bring your working copy up-to-date.

        Be sure to read chapters 2 and 3, they're a critical
        introduction to the svn commandline client.

     5. Get a real server process running (either apache or svnserve)
        so that your repository can be made available over a network.
        Read chapters 5 and 6 to learn about how to administer a
        repository and how to set up a server process.

      *** NEWBIES BEWARE:

      The absolute most common stumbling block for newbies is problems
      with permissions and ownership on the repository.  Any process
      that opens the repository must have complete read/write access
      to it.  This goes for any tool ('svnadmin', 'svnlook') or any
      server process (apache, svnserve), or your own svn client, if
      it's accessing via file:///.

      Look at the last section in chapter 6 to understand how to tweak
      repository ownership and permissions for multiple users and
      processes.



V.   CONVERTING FROM CVS

     If you're a CVS user trying to move your CVS history over to
     Subversion, then be sure to visit the 'cvs2svn' project:

          http://cvs2svn.subversion.org

     You can get the latest version of the cvs2svn converter by doing
     an svn checkout:

          svn checkout http://svn.collab.net/repos/cvs2svn/trunk cvs2svn

     Please note that the cvs2svn project is a *separate* project from
     Subversion.  If you have problems with cvs2svn or are confused,
     please email cvs2svn project's mailing lists, not the Subversion
     lists.

     Finally, be sure to see Appendix A in the Subversion book.  It
     contains a very quick overview of the major differences between
     CVS and Subversion.
