2010-08-05 10 views
16

Tengo gitosis ejecutándose en mi servidor. Mi sistema de compilación necesita una copia del código de gitosis. Ahora mismo clono todo el repositorio, lo cual lleva mucho tiempo.¿Cómo obtengo solo la cabeza de la gitosis?

¿Cómo obtengo solo la cabeza de una rama? (He intentado con git archive, pero parece que no puedo obtener un archivo de gitosis.)

¿Puedo crear un archivo desde un repositorio simple?

+0

Posible duplicado de [Usando git para obtener la última revisión] (http://stackoverflow.com/questions/1209999/using-git-to-get-just-the-latest-revision) – radistao

Respuesta

26

Pase el indicador --depth=1 al git clone para obtener solo el compromiso HEAD. Esto crea un "clon superficial". Tenga en cuenta que existen limitaciones con un clon superficial: no se puede obtener el historial completo (obviamente), no se puede clonar ni extraer de él, y no se puede extraer de él.

+1

Esto funciona, pero si el tirón no funciona, ¿cómo sincronizar con el repositorio principal sin rm y clonar nuevamente? – Antonello

+0

@ Antonello: si necesita mantenerse sincronizado, debe clonar todo el repositorio. – mipadi

0

Acabo de crear un repositorio de prueba y sí, puede crear un archivo desde un repositorio simple.

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

Dependiendo de si el lado remoto habilitado el soporte de archivo, puede intentar:

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

Pero tiene que ser capaz de acceso al repositorio a través del protocolo SSH, o soporte para esto tiene que ser explícitamente habilitado en git daemon, por lo que es raro.

+0

¿Cómo habilito el soporte de archivos en el lado remoto? ¿Y por qué rara vez se habilita? ¿Hay algún peligro con eso? – ablerman

+0

Para acceder a través del protocolo 'git: //', la línea de comando que invoca 'git daemon' (en inetd, xindetd, etc.) debe contener' --enable = upload-archive'; también puedes intentar configurar 'daemon.uploadarch' como verdadero en ** repositorio remoto ** –

+0

¿La gitosis admite git: //? – ablerman

2

gitosis aún no es compatible con git-archive, AFAIS. La rama correspondiente al http://eagain.net/gitweb/?p=gitosis.git;a=commitdiff;h=refs/heads/remote-archive no se ha fusionado.

Así que no puedes usar "git archive --remote = git: //git.example.com/repo.git ..." con gitosis todavía.

+0

Tenga en cuenta que el parche que menciona es muy fácil de aplicar usted mismo. Hice esto en mi servidor Ubuntu y funciona como encanto. ¡Puedo 'git-archive-remote' todo lo que quiero ahora! :) –

Cuestiones relacionadas