开发者

How to get NO context when using svn diff

When I use开发者_JAVA技巧 '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?


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'


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.


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


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜