2013-10-11 25 views
4
$svn diff my.object 
-  <description>reverse reference to the Update Center Enrollment Application task. 
+  <description>reverse reference to the Update Center Enrollment Application task. 

它必须是白色空间/隐藏的字符或行结束的问题....但我怎么弄出来的?如何查看svn diff中的空白字符?

回答

1

您可以使用第三方差异程序。 svn diff有一个--diff-cmd参数,它允许您使用我使用的工具,如gvimdiff

我有一个相当简单的脚本,它将参数SVN传递到第三方diff程序中,并显示差异在哪里。

#! /usr/bin/env perl 
# mydiff 

use strict; 
use warnings; 

use constant DIFF => qw(mvim -d -f); 

my $parameters = $#ARGV; 
my $file1 = $ARGV[$parameters - 1]; 
my $file2 = $ARGV[$parameters]; 
my $title1 = $ARGV[$parameters - 4]; 
my $title2 = $ARGV[$parameters - 2]; 

$ENV{TITLE} = "$title1 - $title2"; 
system DIFF, '-c', 'let &titlestring=$TITLE', $file1, $file2; 

如果我需要使用它:

$ svn diff --diff-cmd mydiff 

而且,我会看到这样的事情:

enter image description here

你可以看到线#158已经空白的区别。使用GVIM,您也可以过滤差异中的空白 - 就像大多数差异程序一样。

+0

酷,它显示新的线字符? – Joelio

+0

我猜...如果你使用':set list',你会看到制表符和'$'标记EOL,所以你可以在一行的末尾看到额外的空白。如果你有':set fileformat = unix',如果在末尾有一个Windows EOL字符,你会在行尾看到'^ M'。请记住,我恰好使用GVIM。几乎可以使用任何***程序***编辑器(而不仅仅是文本编辑器)并获得类似的结果。 –

2

好吧,我想出了一个简单的解决办法

svn diff my.object > foo.txt

然后使用:

od -c foo.txt

它显示了新行字符,我发现一个有\n和其他有\r\n

1

只是管道输出到首选程序。例如。

$ svn diff my.object | OD -c

0

更可读的办法可以是:

svn diff myfile --diff-cmd colordiff | less -R 

使用colordiff时,这多少能工作。