我正在为框架的命令行工具编写部署命令。它使用 git 进行部署。
我有一行我这样做:
exec("git push {$remote} {$branch}:{$branch}", $shell_output, $status);
我想将推送的输出放在$shell_output
内部,但它没有发生(输出只是显示在终端上)。我认为是因为git
是一个外部程序,因此创建了一个新的输出流?
我尝试使用此处描述的输出缓冲区无济于事。我确信SO上有一些东西可以回答这个问题,但经过大量挖掘后仍然无法找到它。
因此,任何帮助将不胜感激:)
git 将其输出发送到 STDERR 而不是 STDOUT,因此您需要使用如下所示的内容重定向它:
git push REPO --progress 2>&1
或文件:
git push REPO --progress > /path/to/file 2>&1