管道时如何配置git输出?

时间:2016-12-22 10:04:12

标签: git bash pipe

我注意到,如果你这样做

$ git diff -M --stat
out_of_the_water/out_of_itself => he_watches_my_gauze_dress/blowing_on_the_line | 0
1 file changed, 0 insertions(+), 0 deletions(-)

$ git diff -M --stat | cat 
.../out_of_itself => he_watches_my_gauze_dress/blowing_on_the_line        | 0
1 file changed, 0 insertions(+), 0 deletions(-)

输出不同,第一个文件名被截断。这是我的问题,因为我想隔离两个文件名:

$ git diff -M head~1 --stat | perl -ne 'print "$1 $2" if m/^\s*(.*?) => (.*?) \|/'

如果配置git以便在管道传输到另一个进程时提供相同的输出?

1 个答案:

答案 0 :(得分:2)

我很想说RTFM,但为了你的利益,我会在这里引用相关部分:

  

<强> - STAT [=&LT;宽度&GT; [,&LT;名称宽度&GT; [,&LT;计数&GT;]]]

     

生成diffstat。默认情况下,文件名部分将使用必要的空间,图形部分的其余部分将使用。最大宽度默认为终端宽度,如果未连接到终端,则为80列,可以由<width>覆盖。可以通过在逗号后面给出另一个宽度<name-width>来限制文件名部分的宽度。可以使用--stat-graph-width=<width>(影响生成统计图的所有命令)或设置diff.statGraphWidth=<width>(不影响git format-patch)来限制图形部分的宽度。通过提供第三个参数<count>,您可以将输出限制为第一个<count>行,如果还有更多,则后跟...

     

这些参数也可以使用--stat-width=<width>--stat-name-width=<name-width>--stat-count=<count>单独设置。

所以没有管道,w​​ith是你的终端宽度超过80个字符,管道没有终端宽度,因此宽度是80.所以只需使用--stat=99999,什么都不应该缩写。