2014-05-14 24 views
2

如何使用色谱柱单元分离器打印git log --graph如何使用列单元分隔符查看git日志?

我希望消息垂直排列,而不是由图形缩进。

例命令打印分支图,作者姓名,和消息:

git log --graph --pretty=format:'%an %s' 

输出被缩进是这样的:

* Ann Merge ... 
|\ 
| * Bob Merge .. 
| |\ 
| | | Catherine Build feature 

我的目标是一列布局是这样的:

*  Ann  Merge ... 
|\ 
| * Bob  Merge .. 
| |\ 
| | | Catherine Build feature 

如果可能我想使用列单位分隔符,例如ASCII字符\031也被称为\x1F

我加入悬赏对于不需要管道Unix的任何解决方案,是纯的git,即命令,例如柱,用sed,AWK,Pr等

+1

好像在git中重复列功能的痛苦/增益比可能有点高。 – jthill

回答

4

使用ASCII x1F作为解列单元分离器,然后通过管道到Unix column命令适用于某些发行版:

git log --graph --pretty=format:'%x1F%an%x1F%s' | 
column -t -s $'\x1F' |more 

(请注意,格式字符串必须使用单引号,列隔板必须用一个美元符号被preceeded触发六角字符)

1

> ...任何解决方案,是纯GIT中的,即,不需要的配管内的Unix命令如柱,用sed,AWK,Pr等

这将是对Unix哲学“让每个程序都做好一件事”。在某种程度上,column,cutpr是工作的工具(其次是awk),正如您在答案中已经确定的那样。

然而,仅仅把这个公众关注,混帐但实际上确有列宽度控制字符,所以你可以做,

git log --oneline --pretty=format:'%<(25,trunc)%an %<(100,trunc)%s %<(25)%ad' 

,得到纯列格式。然而,在必要的情况下,格式化将被--graph选项“排除”,因为图表跟踪器和分隔符本身不被视为列。