7

我正在寻找一种git-commit等待标准输入的方法。我正在对此进行编码PHP,因为我的bash技能不存在,所以我想经常做

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

会做的伎俩,并等到我写东西继续,但它只是继续并继续执行我的PHP脚本。

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

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

谢谢你的帮助!

4

2 回答 2

4

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

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

于 2009-07-01T20:57:48.937 回答
3

我需要用户在我的合并后挂钩中输入(用 PHP 编写)。

我用这段代码解决了它:trim(exec('exec < /dev/tty && read input && echo $input'))

不要问,它有效;)

于 2014-11-05T10:42:00.463 回答