When I use 'svn diff' from the command line, it prints out the lines that have changed but also the 3 unchanged lines before and after for context. I much prefer seeing only the changed lines with no context. I haven't been able to determine any command line options that will let me make it behave this way. Standard 'diff' and 'cvs diff' do what I want by default. Surely 'svn diff' can do this but I'm missing something. Anyone know how?
This thread seems to come to the conclusion that you should use an external diff command in order to control the amount of context.
I prefer unified diffs, so my fingers always type
svn diff -x -u
Which implies that an external (GNU diff) command is used, I think.
You could pipe the results of 'svn diff' to grep and write a regular expression to get what you want. For example, try this:
svn diff | grep "^[+-\]"
The above command gets you all lines that begin with a '+' or a '-' or a '\'. (You need the '\' if you want to see differences such as "\ No newline at the end of the file".)
After looking into the useful link given above by unwind, the short answer is that svn's built-in diff can't do what I want. You can tell it to use the standard external diff though and pass arg's to that to tell it that you want no context. I put the following alias in my .bashrc and all now works well if I use that instead:
alias svndiff='svn diff --diff-cmd=diff -x -U0'