为什么';svn diff--diff cmd=diff';输出内部差异格式?
当我设置为什么';svn diff--diff cmd=diff';输出内部差异格式?,svn,diff,Svn,Diff,当我设置--diff cmd=diff时,我发现diff输出很奇怪 ➜ svntest svn diff --diff-cmd=diff -x '' #The cmd `diff` cann't output this format, so strange Index: a.c =================================================================== --- a.c (revision 1) +++ a.c (working c
--diff cmd=diff
时,我发现diff输出很奇怪
➜ svntest svn diff --diff-cmd=diff -x '' #The cmd `diff` cann't output this format, so strange
Index: a.c
===================================================================
--- a.c (revision 1)
+++ a.c (working copy)
@@ -0,0 +1 @@
+teste
➜ svntest svn diff --diff-cmd=diff -x '-i'
Index: a.c
===================================================================
0a1
> teste
我认为上面的两个命令本质上是如下的,我错了吗
➜ svntest diff -L 'a.c(revision 1)' -L 'a.c(working copy)' '/Users/hilojack/www/svntest/.svn/pristine/da/da39a3ee5e6b4b0d3255bfef95601890afd80709.svn-base' '/Users/hilojack/www/svntest/a.c'
0a1
> teste
➜ svntest diff -i -L 'a.c(revision 1)' -L 'a.c(working copy)' '/Users/hilojack/www/svntest/.svn/pristine/da/da39a3ee5e6b4b0d3255bfef95601890afd80709.svn-base' '/Users/hilojack/www/svntest/a.c'
0a1
> teste
我从svn help diff
-x [--extensions] ARG : Default: '-u'. When Subversion is invoking an external diff program, ARG is simply passed along to the program.
subversion会将默认参数-u
传递给外部差异程序
➜ svntest svn diff --diff-cmd=echo
Index: a.c
===================================================================
-u -L a.c (revision 1) -L a.c (working copy) /Users/hilojack/www/svntest/.svn/pristine/da/da39a3ee5e6b4b0d3255bfef95601890afd80709.svn-base /Users/hilojack/www/svntest/a.c
Subversion将以下参数传递给外部diff命令:
-u
或用户通过-x>指定的标志。如果
-x为空,则仍会传递
-u`
-L
- 基本标题
-L
- 工作副本标题
- 基本文件
- 工作副本文件
摆脱-u
的唯一方法是传入另一个参数。我编写了一个Perl脚本,用于进行解析,然后将VIM用于diff:
#! /usr/bin/env perl
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;