Come posso utilizzare gli hook post-commit per copiare i file di commit in una directory web da SVN?

StackOverflow https://stackoverflow.com/questions/140614

  •  02-07-2019
  •  | 
  •  

Domanda

Sul mio server Ubuntu sono installati Apache e Subversion. Uso questo server come server di gestione temporanea, esclusivamente a scopo di test. Uso Apache per ospitare l'applicazione Web e Subversion per conservare copie con versione del codice sorgente.

Il mio flusso di lavoro attuale:

  • Apporta modifiche a un file
  • Salva il file nel repository Subversion
  • Carica il file nuovo su SFTP nella directory pubblica di Apache
  • Visualizza le modifiche nel mio browser web

Sarei molto più felice se il mio flusso di lavoro fosse così:

  • Apporta modifiche a un file
  • Salva il file nel repository Subversion
  • In background, Subversion mette una copia del file di commit nella directory pubblica di Apache
  • Visualizza le modifiche nel mio browser web

Ho pochissima esperienza di amministrazione del server e ogni aiuto o puntatore è apprezzato. Ho sentito che gli hook post-commit sono ciò di cui ho bisogno e che posso scrivere script bash per fare questo, ma non sono sicuro da dove cominciare e non ho davvero trovato nulla dopo parecchio Googling.

Grazie!

Altri suggerimenti

Può essere fatto, ma inviare automaticamente ogni commit al sito Web di produzione non è sempre una buona idea. A volte ci sono altre modifiche che devono andare avanti e la rottura del sito perché il nuovo codice è presente, ma lo schema del database non è stato ancora aggiornato, è solo imbarazzante.

Quello che tendo a fare invece è fare del checkout del server una copia di svn, quindi, una volta che sono pronto con tutto ciò che deve accadere, faccio un aggiornamento svn su di esso.

Ma se lo desideri davvero, puoi inserire i comandi nel trigger post-commit, che farà tutto automaticamente per te. Ciò potrebbe includere l'esecuzione di uno script di migrazione sul server (se ne esiste uno per questa modifica), per occuparsi di eventuali modifiche non di codice che devono avvenire.

Penso che la reale , domanda generale che dovresti porti --- che potresti averti ovviamente chiesto --- è questa: " come posso testare il mio codice più facilmente prima di distribuirlo? "

Penso che una buona risposta sia installare Apache sul tuo box di sviluppo ed eseguirlo come tuo utente, con percorso webroot e / o cgi su / home / richardhenry / src / mywebsite (o ovunque controlli il tuo codice).

In questo modo, puoi testare il tuo codice senza nemmeno impegnarti. Di conseguenza, non sporcherai il bagagliaio con impegni rotti o inutili. In generale, mantenere indipendenti le cose indipendenti tende ad essere una buona idea (TM).

In alternativa, sincronizza il web server con la tua directory di lavoro con rsync o scrivi uno script che invia i tuoi file dalla casella dev al tuo server di gestione temporanea e aggiungi una regola Makefile che esegue lo script (o richiama rsync) . Se vuoi essere davvero fantasioso, usa inotify o qualche altro monitor di notifica dei file per eseguire automaticamente il tuo script.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top