Git pull / clone branch al server web sin historial

Mi objective es clonar / extraer / lo que sea una copy de la última versión de una twig de mi repository en mi server web de testing, para probar antes de la producción.

Nota: me doy count de que hay un montón de preguntas similares aquí, pero las que he estudiado eran lo suficientemente diferentes de mi situación que todavía me salió un poco confundido.

No estoy muy bien versado en git en la línea de command (tiendo a usar herramientas de GUI), así que no estoy seguro si tengo este derecho. Lo que he logrado hasta ahora funciona, pero el tirón inicial parecía bastante grande, así que me pregunto si estoy obteniendo toda la historia, o solo la última versión.

No quiero hacer cambios en vivo en el server ni regresar al origen. Esto solo tiene que ser una calle de sentido único.

Digamos que tengo una twig llamada test , que es lo que cargaré en el server web de testing. Sin embargo, no queremos el directory raíz del repository, porque hay algo defectuoso allí. Solo queremos el directory /sub y todo a continuación. La configuration inicial en mi server:

 $ cd ~/webapps/test_dir $ git init $ git remote add origin https://github.com/user/repository.git $ git config core.sparseCheckout true $ echo "sub/*" >> .git/info/sparse-checkout 

Luego, cada vez que deseo actualizar el código en el server, esto es lo que ejecutaré:

 $ git pull --depth=1 origin test 

¿Es correcto este command para replace lo que está en el server con solo el código más reciente, sin historial? ¿Hay un command más eficiente para lograr lo que quiero?

Actualizar

A la luz de la falta de soporte de Github para el git archive (que parece ser el path a seguir), estoy tratando de encontrar una solución para get un file utilizando su APIv3 , que sugirieron en una respuesta de correo electrónico de soporte.

He llegado a get un file descargado de la twig correcta de mi repository:

 $ curl -L --user "username" https://api.github.com/repos/<username>/<reponame>/tarball/<branchname> > example.tar.gz 

Pero eso me da todo desde la raíz de la twig. Lo que realmente quiero es solo una subcarpeta, pero todavía tengo que descubrir cómo filtrar para eso.

Actualizar actualización

Obtuve la confirmación de GitHub de que no hay forma de recuperar una subcarpeta a través de este método API. Entonces … de nuevo a la forma en que lo estaba haciendo, creo.

Probablemente desee considerar el uso de git archive lugar de un pull para renderizar datos sin historial adjunto. Los documentos formales para ese command están en https://git-scm.com/docs/git-archive .

Algo así como el nombre de git archive branchname | tar xf - git archive branchname | tar xf - debería ser más o less correcto volcar la confirmación en el encabezado de la twig relevante en el directory local.

Si quiere poner sus bits exportados en un subdirectory, puede usar algo como git archive foo --prefix branch/ | tar xf - git archive foo --prefix branch/ | tar xf - y eso pondrá todos los commits desde el HEAD de branch foo en la branch directory. También puede networkingirigir el command tar para moverlo a otro lugar, pero como está en el directory con su alistmiento de git, el directory local de la primera parte de este todavía tendrá un .git.

Al hacer reference a esta respuesta por Anthony Hatzopoulos , parece que la mejor manera de hacerlo es aprovechar la compatibilidad Subversion de GitHub, y hacer esto:

 $ svn export --force https://github.com/<user>/<repo>/branches/<branch>/<subfolder> 

Hace exactamente lo que yo quería que hiciera, sin ningún tipo de error.

La --force es para replace los files / carpetas actuales con los nuevos. Por supuesto, eso significa que estoy reemplazando todo en lugar de actualizaciones incrementales, pero … ¿compensaciones? ¯ \ _ (ツ) _ / ¯