2010-09-21 6 views
5

Dire che ho un repository su un'altra macchina la cui intera cronologia è troppo grande da clonare localmente. Se non ho intenzione di inviare modifiche a quel repository, non c'è motivo per cui non dovrei essere in grado di scattare semplicemente un'istantanea del suggerimento. C'è un modo per farlo, o sto andando a trovarmi a lavorare su questo con un hack rsync o qualcosa di simile?Posso ottenere un'istantanea tip di un repository mercurial, senza fare un clone completo?

Se aiuta, nel mio caso, il repository remoto è fornito da mercurial-server attraverso un tunnel ssh.

+0

La mia soluzione finale era che il server mantenesse sempre aggiornata la sua vista del repository facendo un hook con un 'hg update' Da lì, è abbastanza semplice fare un rsync, escludendo il. directory di hg. Subisce il potenziale che qualcuno potrebbe effettuare il check-in mentre rsync è in esecuzione, ma i dettagli del mio caso aziendale rendono questo incredibilmente improbabile e facilmente rilevabile. – Sniggerfardimungus

risposta

2

È possibile utilizzare hg archive per creare un archivio non modificato per qualsiasi revisione. Non funziona con ssh URL, quindi dovresti eseguirlo sull'host remoto e quindi scpare l'archivio.

+0

Penso che terrò un servizio sul server che creerà un archivio su richiesta e lo renderà disponibile tramite scp. – Sniggerfardimungus

3

Lo script CGI standard per Mercurial consente di scaricare zip e tarball per qualsiasi revisione. Vedi lo web.allow_archive setting. Puoi anche vederlo con hg serve, che esegue lo stesso codice dello script CGI sottostante.