<> = URL = {{{ svn co https://svnsrv.desy.de/desy/openafs-osd }}} = Common usage = '''Updating local copy''' before starting to work {{{ cd openafs-osd/trunk svn up}}} To find out about '''local modifications''': {{{ svn status -q }}} To see '''recent changes''' {{{ svn log --limit=10 }}} '''Check in''' quickly {{{ svn ci -m "my comment" }}} Check in thoroughly {{{ svn ci }}} Opens an $EDITOR for you to input a comment. (!) Shows a list of changed files and allows you to abort by leaving the editor without saving. = Other uses = == Viewing the log == `svn` 1.4.2 has been known to create insufficient log output in cases. Apparently it helps then to specify the (default) revision range: {{{ svn log -r HEAD:1 }}} == Creating a branch == {{{ svn mkdir branches/new-branch svn copy trunk/openafs-1.4.7 branches/new-branch/ svn ci -m "created new-branch" }}} It is often desirable to branch an earlier revision of the trunk or another branch: {{{ svn copy -r 12 trunk/openafs-1.4.7 branches/newer-branch }}} == Including changes into branches == {{{ svn merge -r 12:15 trunk/ branches/newer-branch/ }}} which can alternatively be written as {{{ svn merge trunk@12 trunk@15 branches/newer-branch }}} and that's more intuitive at times. Don't forget {{{ svn ci -m "+ merged in changes between 12:15" }}} (keywords like "merge" or ":" in log messages can help later when grepping can become necessary, but not to my personal experience.) == Rolling back to earlier revisions == {{{ svn merge -r 15:12 . . }}} or {{{ svn merge .@15 .@12 . }}} which in both cases means "compare . in revision 15 with . in revision 12 and apply the changes to file/directory ." == When commit fails == ...because some files are outdated, it can be harmful to just "svn up" because that may bring files into conflict states that are difficult to resolve, and `svn` cannot automatically undo that. You can undo all local changes, but you would-be checkin is lost then, too: {{{ svn revert . -R }}} It can be wise to back up local changes before updating: {{{ svn export . /tmp/my-checkout }}} If things go haywire, use `revert` and then copy your files back from the export. You cannot `svn import` them, as that servers a different purpose. === Resolving conflicts === Should conflicts occur, after resolving them (as in CVS), one must tell SVN that they are in order again: {{{ svn resolve openafs-1.4.7/src/fsint/afsint.xg }}} Only then will `svn commit` be allowed.