通过过滤器显示git的管道输出?

时间:2014-07-08 16:59:21

标签: git

我们使用Gerrit和Bugzilla,因此我们的提交消息具有页脚:

commit c557164627b6a53017a2b6ea5122393415445d43
Author: Tim Landscheidt <tim@tim-landscheidt.de>
Date:   Mon Jun 23 22:09:21 2014 +0000

    Tools: Install xsltproc

    Bug: 66962
    Change-Id: I01cfb2f72c3a7de39a5ac2b3439022122fdfbb15

在Gerrit的网络界面中,“Bug”和“Change-Id”页脚会自动链接到相应的Gerrit和Bugzilla页面。在命令行上,我必须复制&amp;粘贴&amp;而是搜索。

我想过滤提交消息,以便上述示例由git show(1.8.3.1)显示为:

commit c557164627b6a53017a2b6ea5122393415445d43
Author: Tim Landscheidt <tim@tim-landscheidt.de>
Date:   Mon Jun 23 22:09:21 2014 +0000

    Tools: Install xsltproc

    Bug: https://bugzilla.wikimedia.org/66962
    Change-Id: https://gerrit.wikimedia.org/r/#q,I01cfb2f72c3a7de39a5ac2b3439022122fdfbb15,n,z

允许我的Konsole窗口使这些链接可以点击。

但是看git show,那里的格式似乎不允许调用外部程序。

在内部没有办法在Git中这样做,所以我需要设置一个shell别名吗?

1 个答案:

答案 0 :(得分:1)

虽然您可以使用git show的{​​{1}}参数来更改字段的顺序并在它们之间添加额外的文本,但您无法修改字段的内容。 Gerrit和Bugzilla消息通过它的外观添加到提交消息中,因此您无法从Git中重新格式化它们。

但是,可以在Git中设置别名而无需单独的shell文件,如下所示:

--format

那么您就可以使用git config alias.shw '!git show | sed "s/Bug: /Bug: https:\/\/bugzilla.wikimedia.org\//" | sed "s/Change-Id: \(.*\)/Change-Id: https:\/\/gerrit.wikimedia.org\/r\/#q,\1,n,z/"' 代替git shw来获得调整后的输出。