Cómo implementar un proyecto usando Git

Descubrí una solución, pero creo que debe haber una forma más simple de implementación, usando Git. La solución es esa

  1. desarrollar aplicaciones con Git localmente
  2. configurar el server de Git
    • clonar el repository local localmente como un repository simple
    • copyr el repository desnudo al server remoto
    • establecer el repository desnudo como un repository remoto
  3. clonar un repository desde el repository simple al server (para tener un repository con el directory de trabajo)
  4. actualice el repository desnudo presionando los cambios comprometidos localmente.
  5. actualizar el directory de trabajo al sacar los cambios del repository simple

No es una solución simple, puede haber mejores forms de usar Git para el deployment. Traté de usar el repository simple solo en el server, y establecí la variable del tree de trabajo en el file de configuration de git en otro directory, pero no funcionó: después del primer pago, cuando actualicé el repository simple e intenté echa un vistazo a los cambios, parecía que todo estaba bien, pero no pasó nada en el directory de trabajo. Luego decidí clonar el repository desnudo, por lo que el repository clonado tiene un directory de trabajo, y puede actualizarse mediante un git pull (esto extrae los cambios del repository simple como su repository remoto de origen).

La gran ventaja de esta solución es que también puede corregir el código en el server, confirmar estos cambios, actualizar el repository simple y luego simplemente actualizar el repository local. Otra ventaja es que puede clonar el proyecto desde el repository simple, y más participantes pueden participar en el desarrollo si tienen acceso al server.

¿Conoces una manera más simple que tiene las ventajas anteriores?

Voy a describirte lo que hago para lograr eso, por lo que puede ser útil para ti. También voy a dar algunos detalles para que los nuevos commers puedan ser ayudados en el futuro.

Tengo un server donde me gusta ejecutar algunos experimentos personales y utilicé git para implementarlo de la manera más sencilla que encontré. Se hace usando los ganchos que funcionan con git y muy poco script de shell.

Aquí vamos:

Primero: inicialice un repository vacío en el server. La diferencia de un repository de git normal es la falta de un tree de trabajo (los files del proyecto y cosas comunes). Solo tienes el tree de repository.

git init --bare 

Si miras la estructura desnuda, verás algo como esto:

 › git init --bare Initialized empty Git repository in /home/git/mysite/ › ls branches config description HEAD hooks info objects refs 

Si observa detenidamente la carpeta de ganchos , puede encontrar algunas cosas interesantes:

 daniel at heavens-empire into /home/git/mysite/hooks › ls applypatch-msg.sample post-update.sample pre-commit.sample pre-push.sample update.sample commit-msg.sample pre-applypatch.sample prepare-commit-msg.sample pre-rebase.sample 

Cada uno de esos files es un ejemplo de una secuencia de commands que se puede activar después de algunos events. Hoy estamos viendo el evento posterior a la recepción (no aparece en esta versión … no sé por qué). Sucede cuando presionamos a ese repository desnudo. Puedes crearlo y ponerle un poco de belleza de concha:

 #shows file content daniel at heavens-empire into /home/git/mysite/hooks$ cat post-receive #!/bin/sh GIT_WORK_TREE=/home/www/site git checkout -f 

El GIT_WORK_TREE va a determinar dónde van a estar los files del tree de trabajo que he enviado. Es como si tuviera el repository en una carpeta y dice que el tree está en otro.

Copié esas secuencias de commands de mi server de juguetes, así que podría decir que deberían trabajar contigo, cambiando la variable del tree de trabajo apropiado.

En mi repository local , simplemente agrego esa carpeta desnuda como un repository remoto. Usaré ssh para simplificar las cosas. En ese caso, asegúrese de que el usuario que utiliza para acceder tiene los permissions adecuados en la carpeta del tree de trabajo:

 git remote add mygitserver daniel@heavensempire.com:/home/git/mysite 

Cada vez que haces un push, tu git local enviará los commits. Cuando el server git repo los recibe y los acepta, activará el script posterior a la recepción. Con el tree de trabajo configurado y los permissions otorgados, se realizará un pago simple en la carpeta donde se supone que se ejecutará la aplicación.

Espero que esto sea útil para usted y pueda ser para otros. Personalmente evito editar cosas en el server. Si le parece útil tener un repository completo reflejado en el server, también puede usar el post-recibo para hacer un clon / push y get un checkout para usted en otro repository. Algo como:

 cd /home/mysite git pull repo/folder masterOrOther