2011-02-08 13 views
10

utilicé esta guía para utilizar git a PUBLIAUTO mis cambios en mi sitio web cuando empujo al mando a distancia repositorio de origen git:Usando git para publicar en una página web

http://www.lwp.ca/james/2010/03/using-git-to-manage-online-website-projects/

Aquí está mi/ganchos/post- archivo de actualización:

cd ../../public_html/dir/wbg 
env -i git pull 

Aquí está mi estructura de directorios:

/home/git/wbg.git < - mi repositorio git remoto

/home/public_html/dir/GBM < - mi carpeta web

Cuando corro

git push origin master 

Las actualizaciones del repositorio pero mi carpeta web sigue vacío. ¿Algunas ideas?

Editar: si el tráfico en el futuro ve esto, mi verdadero problema fue que tanto su origen remoto y el directorio de su sitio web de destino deben ser repositorios git. No puede configurarlo para copiar su proyecto a una nueva carpeta a menos que esa carpeta también sea un repositorio git.

+0

¿Hiciste también el 'chmod + x' como se sugiere en el artículo? – eckes

+0

el enlace proporcionado en esta pregunta está muerto –

Respuesta

6

No hay mucho por lo que desahogarse aquí, pero puedo informar que utilizo con éxito un método para esto.

Para mis propósitos, llamo a mi repositorio de servidor desnudo el "Hub" y mi repositorio orientado a la web el "Prime". Asegúrese de haber inicializado correctamente un repositorio git en el directorio htdocs del servidor (Prime) y de haber insertado los cambios en el repositorio vacío (Hub) o haberlos extraído.

Este es el gancho post-update que uso, que es en el directorio de anzuelos del depósito de mi concentrador:

#!/bin/sh 

echo 
echo "*** Pulling changes into Prime" 
echo 

cd /path/to/htdocs/ || exit 
unset GIT_DIR 
git pull hub master 

exec git-update-server-info 

¡Asegúrese de que sea ejecutable! En caso de duda, simplemente edite el archivo post-update.sample y elimine la extensión .sample cuando haya terminado. El texto repetido da buenos comentarios de que la copia está realmente teniendo lugar. Si no ve ese texto, entonces no está tirando de los cambios. Y si no va a llamar a su repositorio remoto "hub", reemplácelo con "origen" o lo que decida usar.

Como medida de precaución para que mis primos y locales repositorios no demasiado fuera de control, tengo esto como mi primer post-commit gancho:

#!/bin/sh 

echo 
echo "*** Pushing changes to Hub" 
echo 

git push hub 

Entonces puede simplemente tirar de los cambios de Hub en mi repositorio local

+0

Lo probé y me dio este mensaje: remoto: remoto: *** Tirando cambios en el primer remoto: remoto: fatal: No es un repositorio git (o cualquiera de las directorios padre): .git remote: fatal: No es un repositorio de git (ni ninguno de los directorios principales): .git – Citizen

+0

Ok, lo resolví. Parece que el directorio de su sitio web también debe ser un repositorio git. Lo hice pero ahora recibo el error: remote: fatal: 'origin' no parece ser un repositorio de git remote: fatal: el extremo remoto colgó inesperadamente – Citizen

+0

No está desactivado GIT_DIR va a causar que mi origen no sea capaz de actualizar? – Citizen

1

Puede que empiece obteniendo la actualización posterior para repetir algunas de las salidas de depuración. Tanto la salida estándar como la salida de error estándar se envían a git send-pack en el otro extremo, por lo que simplemente puede hacer eco de los mensajes y verá estos en el cliente que hizo git push. Supongo que seguiste la guía de la palabra, hiciste el script post-actualización ejecutable, cloné el repositorio en la carpeta web, etc.

14

Puede encontrar una mejor alternativa en http://toroid.org/ams/git-website-howto que solo usa un repositorio de git y permite que todos los metadatos y el historial anterior permanezcan fuera de DocumentRoot.

Se basan en la guía que usó y en la que vinculé la referencia a otro artículo, pero la que he vinculado parece ser la preferida para dirigir a nuevos usuarios en el canal #git IRC.

+0

Gracias por eso. ¡Útil! – Jacob

Cuestiones relacionadas