|  | 
 |                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.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 the 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. |