首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么“svn- diff = diff”输出内部diff格式?

为什么“svn- diff = diff”输出内部diff格式?
EN

Stack Overflow用户
提问于 2014-05-09 15:33:06
回答 1查看 1.7K关注 0票数 0

当我设置--diff-cmd=diff时,我发现diff输出很奇怪。

代码语言:javascript
复制
➜  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

我认为上面的两个命令本质上是非常好的,我错了吗?

代码语言:javascript
复制
➜  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那里得到的

代码语言:javascript
复制
-x [--extensions] ARG    : Default: '-u'. When Subversion is invoking an external diff program, ARG is simply passed along to the program.

subversion将将默认参数-u传递给外部diff程序。

代码语言:javascript
复制
➜  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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-09 17:56:49

Subversion将下列参数传递给外部diff命令:

  • -u或用户通过-x'. If-xis null, the-u`指定的标志无论如何都会传递。
  • -L
  • 基本标题
  • -L
  • 工作副本标题
  • 基文件
  • 工作拷贝文件

摆脱-u的唯一方法是传入另一个参数。我编写了一个Perl脚本,用于进行解析,然后使用VIM作为diff:

代码语言:javascript
复制
#! /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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23568549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档