Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get NO context when using svn diff

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?

like image 260
DaveBurns Avatar asked Oct 16 '09 13:10

DaveBurns


3 Answers

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'
like image 126
DaveBurns Avatar answered Oct 31 '22 10:10

DaveBurns


The suggestion above still produces the context format, but with 0 lines of context. This is still not the traditional diff output from before subversion.

What works for me is: svn di --diff-cmd=diff -x --normal

The --normal option (in the diff that ships with OSX) gives the traditional format that some folks prefer.

like image 36
Brian Willoughby Avatar answered Oct 31 '22 11:10

Brian Willoughby


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".)

like image 3
Babak Avatar answered Oct 31 '22 09:10

Babak