在Git pre-commit Hook上读取STDIN(使用PHP)

Rob*_*rto 5 php git hook stdin

我正在寻找一种git-commit等待标准输入的方法.我正在编写这个PHP,因为我的bash技能是不存在的,所以我会做一个常规的

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

会做的伎俩,等到我写东西继续,但它只是继续执行我的PHP脚本无论如何.

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

虽然我可以实现对文件的写入(使用exec('mate -w')),但我希望它能在我对服务器进行快速测试之前保持不变.如果我发现任何错误(懒惰,我知道),这将使我能够回滚.

谢谢你的帮助!

CB *_*ley 4

大多数 git hook 要么有一些特殊的东西输入到标准输入,要么有从终端分离的标准输入。它们都被设计为非交互式运行,所以我不认为钩子适合您想要做的事情。当然,您可以手动交谈,/dev/tty但我认为这不是一个好主意。

我也不相信“预提交”挂钩适合您的任务,当然不是您所做的每个提交都会是某种形式的发布?测试网络服务器机器上的“接收后”挂钩听起来更合适。