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.