Jack of all trades software developer, specialising in Web and Mobile development. Have been programming professionally for over 10 years. These days I mainly do Java and Objective-C, but over the years have developed software in C++, Perl, and Javascript. Tom is a DZone MVB and is not an employee of DZone and has posted 10 posts at DZone. You can read more from them at their website. View Full User Profile

Useful SVN Commands

05.03.2012
| 7553 views |
  • submit to reddit

I have been increasingly using command line SVN these days. Find it's just a bit quicker and more reliable than the GUI clients I had been using. I've mainly written this for myself, as a quick reference for the commands I use most frequently

svn help COMMAND
  • Displays help for a particular svn command.
  • Lists all available commands if none is specified

svn co URL[@REV]
  • Check out: Creates a local working copy of the repository found at the URL

svn log
  • Provides a log of commit messages
  • Use with -l 10 to limit to 10 most recent messages
  • Use -v for verbose output (lists changed files)
  • Use -r 12345 to get info on particular revision

svn info
  • Provides useful information about the current working copy, such as repository URL, and current revision

svn status
  • Provides a list of diffences between the working copy, and the repostory. Take a look at the help (svn help status to find out what the different column values mean)

svn diff
  • Displays local modifications
  • Use -r N:M to display differences between two revisions
  • Use -c to see the changes for a particular revision

svn revert PATH
  • Reverts the specified path to the contents of the repository. You will lost any local changes!
  • Not recursive by default, use -R to make recursive

svn add PATH
  • Adds the specified path the version control.
  • Note, this doesn't add the file to the repository yet, that doesn't happen till you commit.

svn copy SRC[@REV] DEST
  • Copies something from SRC to DEST.
  • SRC and DEST can both be either working copies paths, or URLS.
  • Usual usage would be WC -> WC, or URL -> URL.
  • URL -> URL is used for branching and tagging

svn delete TARGET
  • Deletes a file.
  • If TARGET is a working copy path, the file is scheduled for deletion on the next commit
  • If TARGET is a repository URL, it immediately deletes the file from the repository.

svn move SRC DST
  • Moves a the specified target.
  • Equivalent of a copy then a delete
  • Maintains history on the moved file.

svn commit -m MESSAGE
  • Commits the working copy changes to the repository

svn list TARGET
  • Provied a directory listing for the specified folder in the repository

svn mkdir TARGET
  • Creates a directory
  • TARGET can be working copy path or repository URL

svn merge -r N:M SOURCE@REV
  • Merges the range of revisions starting at N and ending at M from SOURCE into the current working copy
  • If N > M then it is a reverse merge, and can be used to undo the differences between N and M
  • Typically used to catch up a feature branch
  • Can use -c option to pick a single revision
  • Can supply multiple -c and -r options to cherry pick revisions

svn merge --reintegrate SOURCE@REV
  • Used to reintegrate a branch into it's parent branch
  • Working copy should be the parent branch (often trunk)
  • A branch cannot be reintegrated twice, so good practice to delete the branch afterwads
svn blame TARGET@REV
  • Outputs target, with author names, and revision numbers attached to changes
  • Use to see who broke what.
Published at DZone with permission of Tom Jefferys, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Jilles Van Gurp replied on Fri, 2012/05/04 - 1:53am

Use git as a svn client with git-svn.Git-svn is a tool that allows you to use subversion as a remote repository for your local git repositories. So basically you live in a git world except when you push/pull to and from your svn remote. Basically, git is a superior svn client. Faster & more clever merges & updates; less disk space wasted, less network traffic, full history locally, etc. Worth a try and chances are you won't look back.

Wujek Srujek replied on Fri, 2012/05/04 - 3:34am in response to: Jilles Van Gurp

I fully agree the previous commenter. Whereas I use hgsubversion (a mercurial scm counterpart of git-svn) I have used git-svn before and both are simply better. Start it at your company, love it, show it to your colleagues, let them try and love it. FInally, migrate ;d

Sylvain Leroy replied on Sun, 2012/05/06 - 4:23pm

Useful command

find . -name '.svn' | xargs rm -Rf
 
To detach/disconnect in a rude way, from svn.
 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.