2012-01-24 3 views
3

Я хочу, чтобы иметь возможность выполнить php-крючок на крюке после приема, скопировать файлы из git-репо в веб-папку на том же сервере и только запустить, если он был нажат, был сделан на ведущая ветвь игнорирует другие ветви. Ниже приводится то, что у меня есть.git post-receive hook в php

!/usr/bin/php 
<?php 

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

?> 

В принципе, я не уверен, как получить доступ к аргументам git, используя php.

+0

+1 потому что мерзавец является Удивительно, и я не чувствую, что разбираюсь в деталях. надеюсь, кто-то еще позаботится об этом быстро, и мы сможем все умнее :) – rdlowrey

+0

a) возьмите библиотеку git по вашему выбору b) узнайте немного bash – Reactormonk

+0

Ok. Id нравится использовать php, если все это для вас. – madphp

ответ

0

Не забудьте взять крюк после приема doesn't take arguments: он считывает данные по stdin.

Сценарий «после получения» запускается после приема пакета pack, и репозиторий был обновлен. Он передается аргументы через стандартный ввод в виде:

<oldrev> <newrev> <refname> 

Так что вам нужно будет прочитать указанные аргументы extract the branch (пример в Баш, но вы можете адаптировать его)

+0

Чтение из stdin из скрипта php: http://stackoverflow.com/questions/554760/php-standard-input или http://stackoverflow.com/questions/2390604/how-to-pass-variables-as -stdin-in-command-line-from-php, если 'php: // stdin' не является правильным потоком для чтения. – VonC