如何摆脱git中post-receive返回的每一行上出现的'remote:'消息?

时间:2010-07-03 04:41:39

标签: git git-post-receive

我在git中创建了一个post-receive钩子。钩子输出消息到屏幕,然后发送回git客户端进行推送,然后输出。

如何在每一行输出之前摆脱'remote:'文本?这令人分心。 (我知道这是可能的,因为我在实践中已经看过它,我只是不知道它是如何完成的。)

1 个答案:

答案 0 :(得分:3)

注意:前缀对于避免将来自远程系统的消息误认为来自本地系统的消息非常重要。

那就是说,没有办法关闭前缀,但它们都写入了stderr。你可以重定向/捕获/过滤 git push 的stderr来做你想做的事。

粗略的做法可能是这样的:

git push ... 2>&1 | sed -e 's/^remote: //'

它将stdout发送到管道并使stderr转到同一个地方。在管道的另一端, sed 读取组合输出并删除任何remote:前缀。这应该没问题,因为我们不太可能在stdout流中看到remote:前缀。像这样组合stdout和stderr对于交互式使用通常是可以接受的(因为他们可能会使用相同的tty设备),但在自动上下文(例如脚本)中使用它可能不是一个好主意。