繁体   English   中英

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

[英]Read from STDIN on a Git pre-commit Hook (with PHP)

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

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

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

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

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

谢谢你的帮助!

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

我也不相信'pre-commit'钩子适合你的任务,当然不是你所做的每一个提交都是某种类型的释放? 测试网络服务器机器上的“接收后”挂钩听起来更合适。

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

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

不要问,它有效;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM