2012-08-08 16 views
5

Estoy tratando de averiguar cómo hacer lo siguiente (y averiguar si es posible).Git sparse-checkout en un control remoto con un script posterior a la recepción

Tengo un repositorio git local con varias carpetas para varias cosas, pero quiero poder implementar mi sitio web con git en mi servidor de desarrollo y realmente solo el contenido de una carpeta debe ir a la raíz web remota (solo el contenido de la carpeta, no la carpeta en sí, es la parte más difícil). Tengo el git push para el servidor de desarrollo yendo a un repositorio simple fuera de las carpetas accesibles de la web, y luego estoy usando una secuencia de comandos posterior a la recepción para colocar todos los archivos de trabajo en la raíz web. Sin embargo, esto copia todas las carpetas y, obviamente, solo quiero que el contenido de una carpeta específica se mueva después de que se complete la operación.

Haciendo un poco de investigación, parece que el pago escaso sería una buena opción. ACTUALIZACIÓN: Lo tengo funcionando ahora, donde se copiará solo una carpeta específica, pero todavía no he conseguido ignorar la carpeta en sí y simplemente extraer los contenidos. Me imagino que esto tiene que ver con las rutas/comodines que agrego a .git/info/sparse-checkout, pero no estoy seguro de cuál es el patrón para excluir un directorio pero sin excluir su contenido.

¿Hay una buena manera de hacerlo? ¿Debo usar el script posterior a la recepción para copiar manualmente los contenidos del directorio que quiero en lugar de intentar hacerlo directamente con el pago simplificado?

Estoy agradecido por cualquier ayuda que alguien esté dispuesto a dar. ¡Gracias!

+0

Después de revisarlo más a fondo, creo que no se puede extraer el contenido de un directorio mediante el uso de análisis disperso. Puedes elegir cosas dentro de un directorio, pero la estructura del directorio parece mantenerse intacta sin importar lo que hagas. Encontré una manera que me funciona en mi situación, pero por favor, si alguien se da cuenta de cómo hacerlo, responda a este hilo. ¡Gracias! – user1193694

Respuesta

0

Un enfoque más sencillo sería:

  • hacer el pago y envío escasa en un /tmp/YourRepo/Yourdirectory (con YourDirectory ser el que usted está tratando de pasar por alto, ya que sólo su contenido es de interés)
  • movimiento el contenido de /tmp/Yourdirectory en el directorio de destino correcto
+0

Pensé en eso, pero pensé que podría haber algún beneficio de velocidad de salida directamente a la webroot, aunque podría estar pensando en eso incorrectamente. Si ya tengo una colección de archivos en la raíz web y actualizo a la misma ubicación, ¿no estaría simplemente actualizando los archivos que habían cambiado en la raíz web de la confirmación, o básicamente estoy haciendo una copia de árbol completa con la publicación? -Recibir gancho de todos modos? (GIT_WORK_TREE =/mi/directorio). Supongo que si voy a/tmp, siempre estaría haciendo una copia completa de árbol en lugar de simplemente actualizar los archivos que han cambiado? – user1193694

Cuestiones relacionadas