带有tformat的git log中的额外换行符

时间:2014-09-02 18:34:24

标签: git git-log

当我使用git log --pretty=oneline --shortstat时,我得到了日志的简洁表示:

% git log --pretty=oneline --shortstat
73c6eecd930c2f66d5c1e87fcca7ca9b0e356809 doing stuff with things
 3 files changed, 134 insertions(+)
65b457d2e0e94e628e1b30204075540524c8a1d2 doing things with stuff
 2 files changed, 4 insertions(+), 1 deletion(-)
...
375531279297af3c787855b0848b400f1c40b638 things with stuff doing
 1 file changed, 2 insertions(+)
5501964b19815a07b64e1cd391e032147af33b8f with things doing stuff
 25 files changed, 6746 insertions(+)

但如果我尝试使用tformat等效的oneline,我会在统计数据之前获得额外的换行符:

% git log --pretty="%C(yellow)%H%Creset %s" --shortstat
73c6eecd930c2f66d5c1e87fcca7ca9b0e356809 doing stuff with things

 3 files changed, 134 insertions(+)
65b457d2e0e94e628e1b30204075540524c8a1d2 doing things with stuff

 2 files changed, 4 insertions(+), 1 deletion(-)
...
375531279297af3c787855b0848b400f1c40b638 things with stuff doing

 1 file changed, 2 insertions(+)
5501964b19815a07b64e1cd391e032147af33b8f with things doing stuff

 25 files changed, 6746 insertions(+)

没有--shortstat标志(或--stat)标志,两个命令的输出是相同的,所以它是关于添加这些标志的。

我可以用grep修复此问题:

[alias]
  x-skip-empty-lines="!f(){ git $* --color=always | grep -vE '^(\\|{0,1}|\\e\\[[^m]*m)[[:space:]]*$' | less ;}; f"
  logpatch= !git x-skip-empty-lines log --pretty='%C(yellow)%H%Creset %s' --shortstat 

但有没有办法避免首先产生换行?

(git 1.8.3和2.0.1)

1 个答案:

答案 0 :(得分:5)

我担心你无能为力。在log-tree.c中,git具有oneline格式的特殊情况,如果未使用,则始终在shortstat之前输出两个空行。

(我尝试编译git-log而没有突出显示的行 - 原始--pretty=oneline命令然后还输出两个空行)