Git: auto tirare dal repository?

C’è un modo per impostare git tale che è in attesa di aggiornamenti da remoto repo e tirare ogni volta che cambi qualcosa? Il caso d’uso è voglio distribuire un’applicazione web utilizzando git (in modo da ottenere il controllo di versione dell’applicazione distribuita), ma vuoi mettere la “centrale” git repository su Github, piuttosto che sul server web (Github interfaccia è solo mooolto bello).

Qualcuno ha ottenuto questo lavoro? Come Heroku farlo? Il mio Google-fu non mi dà alcun risultato rilevante.

InformationsquelleAutor Li Haoyi | 2012-04-02

 

5 Replies
  1. 41

    Git ha “agganci”, azioni che possono essere eseguite dopo altre azioni. Che cosa ti sembra di essere alla ricerca di è “post-ricevere gancio”. In github, admin, è possibile impostare un post-ricevere url che verrà colpito (con una capacità di carico contenenti i dati relativi a ciò che è stato appena spinto) ogni volta che qualcuno spinge per la vostra repo.

    Per quello che vale, non credo che l’auto-pull è una buona idea, — che cosa se qualcosa di sbagliato è stato spinto alla tua filiale ? Mi piacerebbe utilizzare uno strumento come capistrano (o equivalente) per queste cose.

    • Il mio uso programmato caso era di una separata repo/ramo dev “test e spippolare” un palcoscenico, e dispone di una speciale “push per la produzione di” repo che ho premuto solo una volta sono sicuro che tutto funziona. Praticamente sto usando Git a che fare con rsync può fare, se si mantiene un registro di tutte le versioni che distribuiti, e mi piacerebbe essere facilmente in grado di eseguire il rollback a una versione precedente. Il vantaggio rispetto a qualcosa di più hardcore come capistrano è io non avrei dovuto imparare un nuovo strumento per quello che è (come ora) un piccolo progetto.
  2. 16

    Unix-calibro è possibile creare un cron job che chiama “git pull” (ogni giorno o ogni settimana, o quello che è) sulla vostra macchina. Su windows si può utilizzare l’utilità di pianificazione o di comando “AT” per fare la stessa cosa.

    • Non è un modo corretto di usare Git.
    • Perché no? Immaginate di avere un po ‘ di Rasperry Pi in casa e senza un indirizzo IP statico disponibile. Quale altra opzione hai quindi l’esecuzione di un cron o runwhen lavoro?
    • La sua non è una buona idea. Egli vuole che le modifiche da applicare immediatamente dopo la spinta.
    • L’OP è specificamente chiedendo un metodo che ascolta per gli aggiornamenti da remoto repo e tirerà ogni volta che qualcosa cambia. Questa soluzione sarebbe solo tirare dal repository ogni tanto, così, per essere efficace l’intervallo dovrebbe essere molto breve, che porta a un gran numero ridondante di tirare le richieste.
    • Un modo rapido per fare questo senza cambiare cron scheda: while true; do git pull; sleep 10; done. Questo farà un git pull ogni 10 secondi…
  3. 3

    Ci sono continue integrazioni programmi come Jenkins o di Bambù, che può rilevare impegna e operazioni di attivazione come costruire, di prova, l’imballaggio e la distribuzione. Essi fare quello che vuoi, ma sono pesanti con le dipendenze, difficile da configurare, e alla fine si può utilizzare il controllo periodico contro il repository git, che vorresti avere lo stesso effetto come la chiamata di git pull da cron ogni minuto.

  4. 1

    Si potrebbe scrivere uno script per raggiungere questo facendo le seguenti cose:

    1. remota TESTA commettere id
    2. confrontare l’id con il responsabile locale
    3. se sono diversi, utilizzare git pull e utilizzare il comando deploy
    4. se stesso, passare
    5. scrivere un job di cron per eseguire lo script (NOTA : evitare la duplicazione di esecuzione.)

Lascia un commento