用PHP编写的Git post-receive钩子

3

我希望能够在post-receive钩子上执行php hook,将文件从git repo复制到同一服务器上的web文件夹中,并且仅在推送到主分支时运行,忽略其他分支。以下是迄今为止我所拥有的内容。

!/usr/bin/php
<?php

exec("git archive master | tar -x -C /var/www/", $output);

?>

基本上,我不确定如何使用PHP访问git参数。


+1 因为 Git 真的很棒,而且我不想去研究细节。希望有人能快速处理这个问题,这样我们就可以一起变得更聪明 :) - user895378
a) 获取您选择的Git库 b) 学习一些Bash - Reactormonk
好的。如果您不介意的话,我想使用PHP。 - madphp
我不确定的是如何访问参数,以便我可以忽略除主分支之外的所有分支。 - madphp
查看 man 页面或其他地方传递给钩子的参数,使用 $argv[] 访问它们。 - Timothy Meade
1个回答

0
不要忘记一个 post-receive 钩子不带参数:它从 stdin 读取数据。

"post-receive" 脚本在 receive-pack 接受包并更新存储库后运行。它通过 stdin 以以下形式传递参数:

<oldrev> <newrev> <refname>

因此,您需要阅读这些参数来提取分支(示例是在bash中,但您可以进行调整)


有关从php脚本读取stdin的问题:https://dev59.com/n3RB5IYBdhLWcg3wro2B,或者如果`php:// stdin`不是正确的流来读取,则可以参考https://dev59.com/s3E95IYBdhLWcg3wPrkI. - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接