Check diff against file on the server

I have a working copy of a repository on my machine, and I know that it has been updated on the server. I would like to know how to get the difference between the new version and the version in my working copy by using svn command line arguments.

Is there a way for me to do this?


Solution 1:

The working copy is revision BASE. The latest copy from the repository is revision HEAD. This will compare your working copy against the HEAD revision:

svn diff -r HEAD <file>

Actually that'll spit the changes out in reverse, i.e. it tells you how to go from HEAD to BASE. So technically you want:

svn diff -r BASE:HEAD <file>

Can you spare the keyboard strokes? Only you and your deity know that answer.

Solution 2:

The difference between working copy and HEAD; the changes which would need to be made to what is now in the repository (HEAD), to produce your working copy:

svn diff -r HEAD --old=<file>

Of possible interest, the difference between BASE and HEAD; changes that have been checked into the repository since you last updated working copy:

svn diff -r BASE:HEAD <file>

And of course the difference between BASE and working copy; the changes you have made since you last updated working copy:

svn diff <file>


There are three versions being discussed: BASE, working copy, and HEAD.

  • BASE: <file> as last checked out / updated. What working copy would revert to after using svn revert
  • working copy: local modifications to <file> which has been checked out / updated as recently as BASE
  • HEAD: latest modifications in repository. Equivalent to BASE iff no changes have been committed since <file> was checked out / updated as working copy.