我正在寻找一种方法让 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/