Usando 'git checkout -f' para implementar files desde un repository de git al descubierto en Gitlab

Estoy en el process de implementar Gitlab en mi lugar de trabajo y hacer la transición a todos para get mejores revisiones de códigos, administración de problemas directamente vinculada a las confirmaciones e integración con historias de usuarios en el rastreador de Pivotal.

Mi configuration actual para una aplicación de testing es como tal:

  1. Tengo un repository simple con todo el código de mi aplicación web basada en PHP que se encuentra en: /var/opt/gitlab/git-data/repositories/git/test-app.git

  2. El directory de implementación es: / var / www / test-app

En el directory de repo de Git, hice lo siguiente:

export GIT_WORK_TREE=/var/www/test-app git checkout -f master 

Esto funcionó como un encanto y todos los files están accesibles en / var / www / test-app como se esperaba.

Aquí es donde estoy perplejo. Quiero que el server de Gitlab SÓLO aloje los repositorys desnudos de Git y no los directorys de implementación. El directory de implementación debe estar alojado en un server separado.

¿Hay alguna manera de tener una configuration de server diferente como GIT_WORK_TREE? Intenté poner los detalles de mi server allí, como:

 GIT_WORK_TREE=git@devserver.mydomain.com:/var/www/test-app 

pero no dados

¿Es esto posible o estoy ladrando el tree equivocado aquí? Me encantaría un consejo.

Gracias.

En lugar de intentar pagar en un server distante, en lugar de eso (en el mismo anzuelo post-recepción) debe enviarlo a ese server distante.

Desde Git 2.3.3 y 2.4.0 , usando un push-to-deploy , usando la configuration receive.denyCurrentBranch = updateInstead en el lado del server git.
Tenga en count que hay algunas advertencias a este enfoque.

  • Su server contendrá un directory .git contiene todo el historial de su proyecto. ¡Es probable que desee asegurarse de que no pueda ser servido a los usuarios!
  • Durante las implementaciones, los usuarios podrán encontrar momentáneamente el sitio en un estado incoherente, con algunos files en la versión anterior y otros en la nueva versión, o incluso files medio escritos. Si esto es un problema para su proyecto, push-to-deploy probablemente no sea para usted.
  • Si su proyecto necesita un paso de "compilation", tendrá que configurarlo explícitamente, tal vez a través de githooks.