2013-10-11 26 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時,這多少能工作。