Svn diff to output all lines from files

回眸只為那壹抹淺笑 提交于 2019-12-09 04:39:36

问题


I've been searching for a while and still can't find a simple solution to this problem I have. I want to produce a diff between two revisions of a file but I want the output to show all lines of my file.

By the way, I'm on an AIX 5.3 using svn 1.6.17.

Example: Comparing difference between revision 21 and 22 of my file "test_file"

% svn cat -r21 test_file 
My Test File

line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9

% svn cat -r22 test_file
My Test File

line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9

added after 1
added after 2
added after 3

% svn diff -r21:22 test_file
Index: test_file
===================================================================
--- test_file   (revision 21)
+++ test_file   (revision 22)
@@ -9,3 +9,7 @@
 line 7
 line 8
 line 9
+
+added after 1
+added after 2
+added after 3

Now this output shows the differences in the two revisions, but not all the file's lines are there, it only shows the previous 3.

So really my question is how do I get these lines in the output??

Is there some sort of svn diff config settings? I understand I can use external diff tools for svn, but which one gives me the output I would like? I want to try and avoid installing any diff tools as I'm on a corporate network.

Additional point: So far 'sdiff' with its 2 columns generated seems to be the closest I can get to my answer, but I would ideally want a single columned file with '+' and '-' showing added/deleted lines

Thanks in advance for any help! =)


回答1:


Perhaps the following is close to what you want:

First, create a diff script that will use the args received from svn appropriately:

#!/bin/sh
# file : /usr/local/bin/mydiff

# assumes less that 10,000 lines per file
/usr/bin/diff -U10000 $6 $7

And then diff with svn:

svn diff --diff-cmd /usr/local/bin/mydiff

If you want to more closely customize the diff output you need only modify your mydiff script.




回答2:


Yes, you can use external diff to accomplish this. I usually do it by command like this:

svn diff --diff-cmd diff -x "-U30" 

Here, -U30 is unified context size. You should make it big enough to include all lines from file. For example, if your longest file has 1000 lines, you'd use -U1000.



来源:https://stackoverflow.com/questions/7983669/svn-diff-to-output-all-lines-from-files

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