2009-09-21 23 views
9

Ho un setup di repository git remoto per lo sviluppo centralizzato all'interno del mio team. Tuttavia, il server di produzione su cui installiamo le nostre applicazioni attualmente non git in esecuzione su di esso. Vogliamo usare capistrano per implementare le nostre applicazioni come possiamo impostare le nostre ricette di distribuzione da "estrarre" dai repository git remoti durante la distribuzione?distribuzione con capistrano con remote git repo ma senza git in esecuzione sul server di produzione

In altre parole, posso fare qualcosa di simile?

set :repository, "myserver.com/git/#{application}.git" 
set :scm, "git" 
set :deploy_via, :copy 

risposta

16

La soluzione nella tua domanda è vicina alla corretta. Tuttavia, dovrai specificare un po 'diversamente il tuo repository git. Quello che vi serve è:

set :repository, "[email protected]:/home/myproject" 
set :scm, "git" 
set :deploy_via, :copy 

C'è ulteriori esempi di come impostare la distribuzione git nel vostro gioiello Capistrano sotto lib/capistrano/recipes/deploy/scm/git.rb.

Cosa succede quando si utilizza la strategia copy Deploy è che Capistrano clona il tuo repo git a /tmp sul computer locale, catrami & cerniere il risultato, e poi lo trasferisce al server via SFTP. La strategia di copia supporta anche la copia via scp, ma non c'è modo di dirlo per farlo senza un po 'di hacking.

0

Hai provato qualcosa di simile

set :repository, "myserver.com/git/#{application}" 
set :scm, :none 
set :deploy_via, :copy 

ho mai provato questo, ma questo sembra essere il tipo di approccio si avrebbe bisogno di andare su come utilizzare. Un po 'più di approfondimento nel Capistrano RDocs.

+0

Lo dico. Utilizzo: la copia è l'unica opzione disponibile a meno che non si installi un client git sul proprio server. –

+0

Se si imposta 'scm' su none, verrà semplicemente compressa una copia di quello che si trova sulla macchina locale e trasferito sul server invece di fare un clone git localmente e trasferirlo. – Emily

+3

In realtà, al secondo sguardo, questo fallirà. Quando si imposta 'scm' su none,' repository' dovrebbe essere un percorso di directory, non un URL. La tua soluzione cercherà la directory 'myserver.com' sul computer locale. Di solito, quando 'scm' è none, si imposta' repository' su ''.'' – Emily

Problemi correlati