Git spingere per implementare la tecnica [duplicato]

1

Sto adottando un metodo git push per implementare un metodo in cui ho impostato un repository sul server live su cui applico le modifiche locali. Usando un hook post-update, eseguito dopo che ho spinto, estro le mie modifiche alla directory che ospita il sito live.

Questo metodo funziona molto bene, ma dato che stiamo usando server virtuali a volte lo spazio su disco può essere un problema, specialmente per i siti più grandi. La mia preoccupazione è che il repository e il repository in cui il sito risiede effettivamente e sia accessibile significano due (forse grandi) repository sul server, no?

Posso forse alleggerirlo un po '? Nel mio hook post-aggiornamento, è possibile solo estrarre le ultime modifiche e sovrascrivere i file precedenti. Oppure, dovrei usare "cp" invece di "git pull" per questo? Suppongo che dopo ogni commit potrei semplicemente rimuovere tutti i file nella directory del sito e quindi fare un pull, quindi eliminare la directory .git?

In ogni caso apprezzerebbe sapere da chiunque come questo è gestito al meglio. Grazie

    
posta Martyn 12.11.2014 - 02:24
fonte

2 risposte

2

"git clone" ha un paio di opzioni che potrebbero aiutare:

  • "git clone --local" tenta di risparmiare spazio mediante il collegamento di file se si sta clonando un repository sulla stessa macchina
  • "git clone --shared" punta il tuo repository clonato sul punto da cui lo hai clonato (sullo stesso computer) ed evita di copiare gli oggetti. C'è un serio avvertimento su questo, leggi "man git-clone"
  • "git clone --reference" è simile a "--shared"

git prova ad usare "clone --local" di default se stai clonando un repository situato sulla stessa macchina, quindi potresti già trarne vantaggio.

    
risposta data 12.11.2014 - 02:49
fonte
0

Ecco altre due opzioni.

Invece di premere su un repository intermedio, avere il repository che si preme per essere la directory per il sito live. Qui puoi semplicemente creare un hook post-aggiornamento che chiama git checkout HEAD . In questo modo, il repository viene memorizzato una sola volta.

Una seconda opzione, se non riesci a cambiare dove si preme, è usare git archive . Questo comando esporta il contenuto di un commit come un file tar o ZIP. Se leggi git help archive , ha il seguente esempio, che potrebbe essere pertinente al tuo caso d'uso:

git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)

Create a tar archive that contains the contents of the latest commit on the current branch, and extract it in the /var/tmp/junk directory.

Puoi collegare qualcosa di simile per esportare il commit HEAD nella directory del tuo sito live.

    
risposta data 12.11.2014 - 05:35
fonte

Leggi altre domande sui tag