问题
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?
回答1:
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'
回答2:
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.
回答3:
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".)
回答4:
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.
来源:https://stackoverflow.com/questions/1577921/how-to-get-no-context-when-using-svn-diff