2011-01-24 24 views
5

Soy nuevo en git y unix, así que tenga paciencia. Intento crear un simple gancho post-recepción de git en un repositorio que configuré en ec2. En la carpeta hooks, tengo un archivo llamado post-receive que intenta actualizar el directorio de trabajo de un sitio público.Comprensión de los ganchos de git básicos

#!/bin/sh 

echo 'hi git' 
cd /home/www-data/web2py/applications/init 
sudo git checkout . 
sudo git pull 
echo 'done' 

Pero después de un empujón, nada parece suceder. El directorio de trabajo del sitio no se actualiza y cuando ejecuto git log no hay signos de errores ni mis declaraciones de eco. ¿Supongo que me estoy perdiendo algo? Gracias.

+1

Creo que quieres 'git fetch' en lugar de' git pull', ya que pull intenta fusionar el encabezado entrante con un encabezado local más nuevo, mientras que fetch solo obtiene los nuevos cambios. – Rudi

+0

@Rudi ¿Podría ampliar esto, quizás con algunos ejemplos? He estado usando git pull y parece funcionar de la manera que quiero, promovemos nuestros cambios y el sitio público se actualiza automáticamente, pero todavía no he usado git fetch o git branches en ninguna forma , entonces no entiendo muy bien los problemas involucrados. Soy parte de un equipo de dos personas y básicamente estamos usando git como sin sucursales-svn-with-hooks hasta el momento y hemos estado contentos con este flujo de trabajo, pero estoy muy abierto e interesado en sacar mejor provecho de git, pero todavía no asimilo el vocabulario. Gracias. – Dane

+0

git pull intenta fusionar los cambios locales con las nuevas cosas entrantes. Siempre que nadie haga commits en la carpeta web, esto no es problema. Pero cuando alguien comete algo allí, la próxima extracción intentará fusionar los cambios entrantes con la confirmación local. Cuando esta fusión falla debido a conflictos, la carpeta se deja en un estado con marcadores de conflicto en cada archivo en conflicto, que probablemente no sea lo que usted desea. – Rudi

Respuesta

4

Primero: el registro de git no es el registro del git binary. :) Se usa para ver los commits y sus revisiones.

¿Ve la salida "hi git" y "done" en alguna parte? Supongo que tu gancho no es ejecutable. Ejecute chmod +x your_hook - Esto lo hará ejecutable.

+0

Bingo. Muchas gracias. – Dane