3

如何git log --graph使用列单位分隔符进行打印?

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

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

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

输出缩进如下:

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

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

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

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

我正在为纯 git 的任何解决方案添加赏金,即不需要管道到 Unix 命令,如 column、sed、awk、pr 等。

4

2 回答 2

4

使用 ASCIIx1F作为列单位分隔符的解决方案,然后通过管道传输到column某些发行版上可用的 Unix 命令:

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

(注意格式字符串必须使用单引号,列分隔符前面必须加美元符号才能触发十六进制字符)

于 2014-05-14T04:13:56.627 回答
1

> ... 任何纯 git 的解决方案,即不需要管道到 Unix 命令,例如 column、sed、awk、pr 等。

这将违背“让每个程序做好一件事”的 Unix 哲学。column和在某种程度上是工作的工具(后面是cut),正如您在答案中已经决定的那样。prawk

但是,只是为了引起公众注意,git 实际上确实有列宽控制字符,所以你可以这样做,

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

获得纯列格式。然而,格式将--graph在必要时被选项“否决”,遗憾的是,图形跟踪器和分隔符本身不被视为列。

于 2014-05-23T12:12:09.777 回答