php - 从 Git 预提交 Hook 上的 STDIN 读取(使用 PHP)

标签 php git stdin hook

我正在寻找一种方法让 git-commit 等待标准输入。我在 PHP 中编写代码,因为我的 bash 技能不存在,所以我想做一个常规的

<?php
$input = trim(fgets(STDIN));
fscanf(STDIN, "%d\n", $line);
?>

可以解决这个问题,等到我写入内容后再继续,但它会继续执行并继续执行我的 PHP 脚本。

这背后的想法是,在我标记发布后,git 会将 HEAD 推送到测试网络服务器,发送几条推文,并让我在 CHANGELOG 中写下有关发布的一些细节.

虽然我可以实现写入文件(使用 exec('mate -w')),但我希望它能挂起,直到我在服务器上进行快速测试。如果我发现任何错误(懒惰,我知道),这将使我能够回滚。

感谢您的帮助!

最佳答案

大多数 git 钩子(Hook)要么将一些特殊的东西提供给标准输入,要么将标准输入与终端分离。它们都被设计为以非交互方式运行,所以我不认为一个钩子(Hook)适合你想做的事情。当然,您可以手动与 /dev/tty 对话,但我认为这不是一个好主意。

我也不认为“预提交” Hook 适合您的任务,肯定不是您所做的每一次提交都会是某种形式的发布?测试网络服务器机器上的“接收后” Hook 听起来更合适。

关于php - 从 Git 预提交 Hook 上的 STDIN 读取(使用 PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1067874/

相关文章:

Haskell 读取前 n 行

php - 如何在 PHP 中删除空格后的所有内容?

php解码base 64非常大的文件,而不是字符串

php - propel 2,mysql - 反向没有错误,没有创建 schema.xml

PHP/CSS 随机背景

git - 为什么 Git 只将分支存储在 refs/remotes/origin 下?

python - 如何从 python 中的 stdin 读取最新行

javascript - 从 Node 产生时ffmpeg缓冲标准输入

git - repo sync 命令的替代方案是什么?

GitHub: merge 后更改提交