post-commit.php
Con questo script potete intercettare i web-hooks inviati da google-code e far applicare le modifiche ai vostri files sul webserver! E’ molto utile per i programmatori web, che hostano le loro applicazioni su google-code!
E’ una buona cosa perchè le applicazioni hostate su google-code devono essere free ed open source!
Ulteriori descrizioni a breve (vista l’ora mi perdonerete…)
With this script you can catch web-hooks sent by google-code and have your file on the webserver updated.
It’s very useful for web programmers that hosts their web-application on google-code.
It’s a good thing because google-code’s hosted application must be free and opensource!
< ?php
$url_repository="http://PROGETTO.googlecode.com/svn";
$chiave="";
$dest_dir=""; //directory di destinazione
$data=file_get_contents("php://input");//recupero i dati trasmessi da google!
$digest=hash_hmac("md5", $data, $chiave); //hash
$hook=$_SERVER["HTTP_GOOGLE_CODE_PROJECT_HOSTING_HOOK_HMAC"]; //l'header inviato da google
$log_file = "post/file.txt";//percordo del file di log.
if ($hook && $hook==$digest){
$connect = fopen($log_file, "a");
fputs($connect,$data."\n");
fputs($connect, "\n---------\n");
fclose($connect);
//fine file di log!
//inizio a determinare i files modificati!
$via_iniz=strstr($data,'modified":["');
$via_iniz=substr($via_iniz,12);
$fine_files=strpos($via_iniz,'"],"path_count');
$elenco=substr($via_iniz,0,$fine_files);
$datam=explode('","',$elenco);
//ho l'elenco di files modificati in $datam
//inizio l'elenco di files aggiunti
$via_iniz=strstr($data,'added":["');
$via_iniz=substr($via_iniz,9);
$fine_files=strpos($via_iniz,'"],"au');
$elenco=substr($via_iniz,0,$fine_files);
$dataa=explode('","',$elenco);
$datas=array_merge($dataa,$datam);
foreach ($datas AS $dato){
$source=$dato;
$dest=str_replace("/trunk","./".$dest_dir,$dato);
if (function_exists('curl_init')) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url_repository.$source);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
$lettura = curl_exec($ch);
curl_close($ch);
}
file_put_contents($dest,$lettura);
chmod($dest,0777);
}
//trovo i file rimossi!
$via_iniz=strstr($data,'removed":["');
$via_iniz=substr($via_iniz,11);
$fine_files=strpos($via_iniz,'"],"rev');
$elenco=substr($via_iniz,0,$fine_files);
$datar=explode('","',$elenco);
foreach ($datar AS $dato){
$dest=str_replace("/trunk","./".$dest_dir,$dato);
unlink("./".$dest);
}
}else{
echo "Errore, Hutch è pazzo"; //citazione da scrubs!
}
?>
Faccio presente a chiunque che il codice è ancora in Alpha,deve venire usato a proprio rischio e pericolo!
THIS SCRIPT IS PROVIDED “AS IS” AND WITHOUT ANY WARRANTY.
Ringrazio Josh Reisner da cui ho preso spunto per questo script.
Thanks Josh Reisner from which I took inspiration for this script.
Prossimo passo sarà la possibilità di creare un pacchetto compresso contenente la versione aggiornata del codice.

questo è molto utile. ben fatto, grazie!
Thank you!
Let me know your feedback, comments or anything.