2010-08-05 12 views
16

Ho gitosis in esecuzione sul mio server. Il mio sistema di compilazione ha bisogno di ottenere una copia del codice dalla gitosi. In questo momento clonato l'intero repository, che richiede molto tempo.Come ottengo solo la testa dalla gitosi?

Come ottengo solo la testa di una filiale? (Ho provato l'archivio git, ma non riesco a ottenere un archivio dalla gitosi.)

Posso creare un archivio da un repository nudo?

+0

Possibile duplicato di [Utilizzo di git per ottenere solo l'ultima revisione] (http://stackoverflow.com/questions/1209999/using-git-to-get-just-the-latest-revision) – radistao

risposta

26

Passare il flag --depth=1 a git clone per ottenere il commit HEAD. Questo crea un "clone superficiale". Nota che ci sono limitazioni con un clone poco profondo: non puoi ottenere la cronologia completa (ovviamente), non puoi clonarla o tirarla via e non puoi spingerti da essa.

+1

Questo funziona, ma se pull non funziona come sincronizzare con il repository principale senza rm e clonare di nuovo? – Antonello

+0

@Antonello: se è necessario mantenere la sincronizzazione, è necessario clonare l'intero repository. – mipadi

0

Ho appena creato un repository test bare e sì, è possibile creare un archivio da un repository nudo.

$ cd /tmp/foo.git/ 
$ git archive --output=/tmp/foo.tgz HEAD 
0

A seconda che lato remoto abilitato il supporto dell'archivio, si può provare:

git archive --remote=git://git.example.com/repo.git --output=repo.zip HEAD 

Ma si deve essere sia in grado di accedere repository tramite protocollo SSH, o il supporto per questo deve essere abilitato in modo esplicito in git daemon, quindi è raro.

+0

Come abilitare il supporto archivio sul lato remoto. E perché è abilitato di rado, c'è qualche pericolo con esso? – ablerman

+0

Per l'accesso tramite il protocollo 'git: //', la riga di comando che richiama 'git daemon' (in inetd, xindetd, ecc.) Deve contenere' --enable = upload-archive'; puoi anche provare a configurare 'daemon.uploadarch' su true in ** repository remoto ** –

+0

gitosis supporta git: //? – ablerman

2

gitosis non supporta ancora git-archive, AFAIS. Il ramo corrispondente a http://eagain.net/gitweb/?p=gitosis.git;a=commitdiff;h=refs/heads/remote-archive non è stato unito.

Quindi non è possibile utilizzare "git archive --remote = git: //git.example.com/repo.git ..." con gitosi ancora.

+0

Si noti che la patch che si menziona è molto semplice da applicare. L'ho fatto sul mio server Ubuntu e funziona come un fascino. Posso 'git-archive --remote' tutto quello che voglio ora! :) –

Problemi correlati