2012-04-06 13 views
6

Sto cercando di comprendere Git e distribuire i siti Web con (o senza) esso. Sono stato su Google a cercare e leggere, ma non riesco a trovare una risposta al mio caso o alle mie preoccupazioni specifiche. Sono ancora in fase di pianificazione per farlo, ma vorrei farlo subito dall'inizio e trovare un flusso di lavoro che funzioni per me. Cercherò di spiegare la situazione il più chiaro possibile:Distribuzione del sito Web PHP dal repository Git

Ho un VPS remoto che esegue il mio sito web in diretta su www.example.com e la versione di sviluppo su dev.example.com (risiedono in/var/www/example/htdocs/e/var/www/example/sottodomini/dev /).

Lo sviluppo viene eseguito da un repository nudo in /opt/git/example.git/. C'è un ramo master e di sviluppo nel repository nudo. Io e gli altri sviluppatori abbiamo entrambi un clone di questo repository sul nostro computer locale. Tiriamo fuori dal ramo di sviluppo e lavoriamo da lì. L'idea è che dev.example.com abbia un codice aggiornato dal ramo di sviluppo e una volta che è stato testato correttamente, ci uniamo al master, aggiungiamo un tag e aggiorniamo example.com (in pratica, questo git flow).

Il primo approccio che ho trovato sul canale Git IRC utilizza gli hook per aggiornare i repository, ma questo sembra molto limitante e talvolta anche indesiderato, vorrei eseguire un comando sul server stesso dopo aver premuto, che aggiorna l'ambiente di sviluppo . Un altro comando (o script di shell) aggiornerebbe il sito live dal ramo master dopo che lo sviluppo è stato unito). Ho trovato anche Capistrano, ma al momento mi sembra un po 'esagerato.

Durante la lettura, ho trovato molte persone che suggerivano di creare altri due cloni sul telecomando: uno per il sito live e uno per il sito di sviluppo, inserendo rami quando necessario. Ciò tuttavia lascia i file di controllo della versione accessibili tramite il web, che è qualcosa che non voglio. Idealmente, voglio una copia "pulita" senza file git o cartelle.

Ho anche trovato un approccio utilizzando git archive, ma l'esecuzione di git archive dal mio repository nudo mi consente solo di archiviare il ramo master. Lo faccio utilizzando il comando git archive --format=tar HEAD | (cd /var/www/example/htdocs/ && tar xf -) in /opt/git/example.git/.

Mi sembra che l'approccio git archive mi porti più vicino a una risposta, ma sono limitato dalla mia mancanza di conoscenza Git. Posso modificare il comando per usare un ramo invece di HEAD (quando ho provato ad usare Origin/Master invece di HEAD, ho ricevuto un errore)? C'è qualcuno che può indicarmi la giusta direzione?

risposta

4

È possibile utilizzare qualsiasi albero-ish (qualsiasi ramo, tag, hash sha1 ecc.) Come argomento per git archive. Non è possibile utilizzare l'origine/master poiché si è nel repository nudo e non ha un'origine. È necessario utilizzare i nomi delle filiali locali, ad es.

git archive --format=tar develop 
+0

Vorrei poter sopravvivere questo 5 volte. Così semplice ... così semplice. – Bram

+0

Hehehe ringrazia :) – ralphtheninja

+0

Un'ultima domanda prima di accettare finalmente questo: è possibile rimuovere i file .gitignore? – Bram

Problemi correlati