How to get NO context when using svn diff

六月ゝ 毕业季﹏ 提交于 2019-12-23 06:57:00

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!