有一台服务器在运行并且有一个git实例。我希望每次用户执行git push到服务器时都运行一个脚本。我希望我的脚本被执行然后git push继续。 有什么工作吗?
答案 0 :(得分:4)
我不确定你是否想在推或之前运行一个scipt。所以这是我对推前的回答。但是如果你想推后推(即推后),你必须相应地更改 $total_amount ='';
foreach ($rows AS $row) {
if ($row['id_supplier'] == $id_supplier)
{
$qtys = $row['qtys'];
$unit_rm = $row['unit_rm'];
$total = $row['total'];
$total_amount += $total;
echo '<em>'. htmlentities($qtys, ENT_COMPAT, 'UTF-8').'</em><br> ';
echo '<em>'. htmlentities($unit_rm, ENT_COMPAT, 'UTF-8').'</em><br> ';
echo '<em>'. htmlentities($total, ENT_COMPAT, 'UTF-8').'</em><br> ';}}
foreach ($name_items AS $name_item) {
echo $name_item;
echo '<em>'. htmlentities($name_item, ENT_COMPAT, 'UTF-8').'</em><br> ';
}
echo '<em>'. htmlentities($inc_number, ENT_COMPAT, 'UTF-8').'</em><br> ';
echo '<em>'.htmlentities($cur_yr, ENT_COMPAT, 'UTF-8').'</em><br> ';
echo '<em>'. htmlentities($total_amount, ENT_COMPAT, 'UTF-8').'</em><br> ';
echo '<em>'. htmlentities($name_employee, ENT_COMPAT, 'UTF-8').'</em><br> ';
echo '<em>'. htmlentities($autoid, ENT_COMPAT, 'UTF-8').'</em><br> ';?> <div class="form-group">
<input type="hidden" id="inc_number" name="inc_number[]" value="<?php echo $inc_number;?>"/>
<input type="hidden" id="autoid" name="autoid[]" value="<?php echo $autoid;?>"/>
<input type="hidden" id="year" name="year[]" value="<?php echo $cur_yr;?>"/>
<input type="hidden" id="name_employee" name="name_employee[]" value="<?php echo $name_employee;?>"/>
<input type="hidden" id="status_po" name="status_po[]"/>
<input type="hidden" id="date" name="date[]"/>
<input type="hidden" id="id_submit" name="id_submit[]"/>
<input type="hidden" id="id_supplier" name="id_supplier[]" value="<?php echo $id_supplier; ?>"/>
<input type="hidden" id="name_item" name="name_item[]" value="<?php echo $name_item; ?>"/>
<input type="hidden" id="request_number" name="request_number" value="<?php echo $request_number;?>"/>
<input type="hidden" id="unit_rm" name="unit_rm[]" value="<?php echo $unit_rm; ?>"/>
<input type="hidden" name="qty[]" id="qty" value="<?php echo $qtys; ?>" class="form-control input-sm">
<input type="hidden" name="total_amount[]" id="total_amount" value="<?php echo $total_amount; ?>" class="form-control input-sm">
<input type="hidden" name="amount[]" id="amount" value="<?php echo $total; ?>" class="form-control input-sm">
</div><?php} } }?> <input type="submit" name="submit_autoid" id="submit_autoid" value="Submit Order"
class="btn pull-right btn success"/></a>
</form>
<?php
if (isset($_POST['submit_autoid'])){
$request_number=$_POST['request_number'];
$inc_number=$_POST['inc_number'];
$autoid=$_POST['autoid'];
$name_item=$_POST['name_item'];
$year=$_POST['year'];
$name_employee=$_POST['name_employee'];
$status_po=$_POST['status_po'];
$date=$_POST['date'];
$id_supplier=$_POST['id_supplier'];
$qtys=$_POST['qty'];
$unit_rm=$_POST['unit_rm'];
$total=$_POST['amount'];
$total_amount=$_POST['total_amount'];
$id_submit=$_POST['id_submit'];
for($i=0; $i<count($inc_number); $i++){
mysql_query("INSERT INTO tbl_autoid (request_number,inc_number,autoid,year,name_employee,status_po, date, id_supplier, total_amount, id_submit)
VALUES ('$request_number', '".$inc_number[$i]."', '".$autoid[$i]."','".$year[$i]."','".$name_employee[$i]."','In Process',now(), '".$id_supplier[$i]."','".$total_amount[$i]."', '1')") or die('Error'); }
for($m=0; $m<count($name_item); $m++){
mysql_query("INSERT INTO tbl_purchase_order (autoid,request_number,id_supplier,name_item,qty,unit_rm,amount, status, date, name_employee)
VALUES ('".$autoid[$m]."','$request_number', '".$id_supplier[$m]."', '".$name_item[$m]."','".$qtys[$m]."','".$unit_rm[$m]."','".$total[$m]."','Done', NOW(),'".$name_employee[$m]."')") or die('Error'); }
?>
<script>
window.location="record.php?request_number=<?php echo $request_number; ?>";
</script>
挂钩以检查是否成功推送,然后你可以做推后推送。
根据@Travis的建议,pre-push
是您正在寻找的。因此,要预推执行脚本,您必须在git hooks
中创建pre-push
文件。因此,在这种情况下,将您的一堆代码放在帖子前脚本文件.git/hooks
中并保存。然后通过.git/hooks/pre-push
使其可执行。成功完成此操作后,您将能够在每次运行push命令时看到脚本执行。
简而言之,假设您(Linux用户)位于项目目录中
chmod +x .git/hooks/pre-push
答案 1 :(得分:2)
您已对此GitHub进行了标记,因此我假设您指的是公共GitHub,而不是GitHub企业。
您无法运行脚本&#34;服务器端&#34;在GitHub的服务器上,因为这显然是一个巨大的漏洞,但您可以设置一个Web挂钩来触发另一台服务器上的脚本。
基本上每当有人进行推送时,都会向特定的URL发送有关推送的数据。然后,您可以从中触发脚本。有关Web挂钩的更多信息,请参阅GitHub API docs。
答案 2 :(得分:1)