【问题标题】:How to view git log using column unit separators?如何使用列单位分隔符查看 git log?
【发布时间】:2014-07-01 23:07:04
【问题描述】:

如何让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 等。

【问题讨论】:

  • 似乎在 git 中复制 column 的功能的痛苦/收益比可能有点高。

标签: git logging git-log ifs


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-06
      • 2014-11-17
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 2010-12-15
      • 1970-01-01
      相关资源
      最近更新 更多