如何在 git 命令后在寻呼机中显示输出?

Posted

技术标签:

【中文标题】如何在 git 命令后在寻呼机中显示输出?【英文标题】:How can I display output in a pager after a git command? 【发布时间】:2011-11-15 14:51:06 【问题描述】:

我构建了一个应该与 git 一起使用的脚本,以便在 git 命令之后将输出发送到寻呼机。我想用 Python 做到这一点。

我有一个写入标准输出的 python 脚本。现在我想在用户在 git 中设置的寻呼机中显示它的输出。

我知道我总是可以提供一个执行此操作的包装脚本:

git-whatever | less

有没有办法在 python 中做到这一点?

【问题讨论】:

【参考方案1】:

您甚至不必创建临时文件(使用管道代替):

import subprocess

proc=subprocess.Popen('less', stdin=subprocess.PIPE)
lines=(str(i) for i in range(1000))
proc.stdin.write('\n'.join(lines))
proc.stdin.close()
proc.communicate()

【讨论】:

【参考方案2】:

git 喜欢将东西写入临时文件,然后将文件名传递给 git 挂钩。因此,按照该模式,您可以将输出写入临时文件,然后使用 subprocess.Popen 调用 less

import subprocess
import tempfile

lines=(str(i) for i in range(1000))
f=tempfile.NamedTemporaryFile(mode='w')
f.write('\n'.join(lines))
f.flush()
proc=subprocess.Popen(['less',f.name])
proc.communicate()
f.close()  # deletes the temporary file

【讨论】:

这看起来很干净。我试试看。

以上是关于如何在 git 命令后在寻呼机中显示输出?的主要内容,如果未能解决你的问题,请参考以下文章

将`git difftool`管道传输到寻呼机时如何保留颜色

将“git difftool”传递给寻呼机时如何保持颜色

git 没有特定命令的寻呼机

如何在 `less` 中避免`Pattern not found` 消息和屏幕重绘(作为 Git 寻呼机)

Git grep 遍历所有分支中的所有提交并在寻呼机中打开?

如何使用寻呼机进行长 git add --patch hunks?