如何使用列分隔符查看git日志?

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等)。

1
似乎在Git中复制“column”的功能的痛苦/收益比可能有点高。 - jthill
2个回答

4

使用ASCII编码中的x1F作为列分隔符,然后将其传递到某些发行版上可用的Unix column命令进行处理的解决方案:

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

(请注意,格式字符串必须使用单引号,并且列分隔符必须以美元符号开头才能触发十六进制字符。)

另一种规避列问题的方法是使用 jot:………………………………………………….. column -s$( jot -c 1 12 ) -t - RARE Kpop Manifesto

1
任何纯git的解决方案都不需要使用Unix命令,如column、sed、awk、pr等。这将违反Unix哲学中“让每个程序做好一件事”的原则。在某种程度上,column、cut和pr是完成此任务的工具(接着是awk),正如您在答案中已经决定的那样。
然而,只是为了引起公众注意,git实际上确实有控制列宽的字符,因此您可以执行以下操作:
git log --oneline --pretty=format:'%<(25,trunc)%an %<(100,trunc)%s %<(25)%ad'

为了获得纯列格式。但是,格式将在必要时被“覆盖”--graph选项,因为遗憾的是,图形跟踪器和分隔符本身并不被视为一列。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接