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

$LastChangedDate$

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.apache.org/

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

         $ svn co http://svn.apache.org/repos/asf/subversion/trunk subversion



II.   DOCUMENTATION

      The main documentation is the Subversion Book - an on-line version
      can be found at:
      
         http://svnbook.red-bean.com/

      It is written in DocBook XML, and the sources can be found at:

         http://svnbook.googlecode.com/svn/trunk/
         
      If you wish to build the documentation from source, read the
      src/en/README file within the book source.



III.  PARTICIPATING IN THE SUBVERSION COMMUNITY

      First, read http://subversion.apache.org/docs/community-guide/
      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-dev.

      Read the FAQ:  http://subversion.apache.org/faq.html



IV.   QUICKSTART GUIDE

      See the final section of the first chapter of the Subversion Book.



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.tigris.org

      You can get the latest released version of the cvs2svn converter
      from the project downloads area:

         http://cvs2svn.tigris.org/servlets/ProjectDocumentList?folderID=2976

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

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

