La mia configurazione è un server XAMPP di Windows, con cURL abilitato e Git e Hudson installati. Hudson interroga Git ogni minuto per cercare le modifiche e, se le trova, crea una build. Io uso questa build come mio server di test. Funziona beneGit post-ricezione non funzionante
Vorrei installare un hook di post-ricezione sul mio repository centrale remoto che esegue la funzione di build forzata di Hudson.
Ho creato un file di post-ricezione chiamato "post-receive" nella directory hooks nel mio repository Git centrale, quello che viene inviato dai rami locali degli sviluppatori. Ciascuno spinge al proprio ramo nel repository centrale. Voglio eseguire la build post-ricezione immediatamente dopo ogni push, invece di avere il sondaggio Git Hudson ogni minuto.
Quando apro una shell al server remoto ed eseguo "post-receive" nella cartella hooks, viene eseguito. Semplicemente non viene chiamato quando le persone lo spingono dalle copie del repository locale a quella centrale.
Forse non sto spiegando questo, ma è come capisco Git.
Il post-codice ricevuto è di due linee:
#!/bin/sh
curl http://myserver.com:8080/hudson/job/myjobname/build?token=mytoken
nuovo, quando apro una shell ed eseguire questo, funziona, ma quando qualcuno spinge ad esso, non succede nulla, finché un minuto o meno va da, Hudson si rende conto che Git è stato cambiato, e poi si costruisce.
Sono felice di chiarire se necessario. Qualsiasi aiuto è molto apprezzato.
EDIT: Dopo aver giocato con esso, ho l'impressione che forse la post-ricezione non è in esecuzione perché gli aggiornamenti non vengono aggiornati di qualcosa? La documentazione git dice
Esegue sul repository remoto una volta che tutti gli aggiornamenti sono stati aggiornati.
Significa che se non si aggiorna nulla, non verrà eseguito? E se è così, sono abbastanza sicuro che le cose si stanno aggiornando comunque, quindi non dovrebbe applicarsi.
Ecco il mio processo: Apporta le modifiche localmente. Applica modifiche. Spingere dal mio HEAD al ramo remoto chiamato 'mybranch' (non il ramo principale, che è estratto) Questo è il punto in cui voglio eseguire il mio hook.
L'utente vostro demone git è in esecuzione ha permesso di eseguire quello script? – jweyrich
Non sicuro. Lo esegue quando lo eseguo tramite Git Bash, ma non quando lo spingo. Come dovrei controllare quelle autorizzazioni? – spanky
l'autorizzazione corretta dipende dal modo in cui si condivide il repository e dalle configurazioni effettive. Tuttavia, msquared ti dice il modo di dare l'autorizzazione eseguibile a tutti gli utenti/gruppi, quindi dovrebbe funzionare se il problema è davvero così. – jweyrich