Problema en la ejecución automática de post-commit en git hook para sincronizar el directory local y remoto

Tengo un server que tiene el repository de git desnudo, y me gustaría utilizar el enlace para sincronizar los contenidos con un funcionamiento para poder sincronizar mi directory local con el directory de trabajo en el server.

Googleando aquí y allá; esto es lo que he hecho hasta ahora.

ssh setup

De http://sofes.miximages.com/a/13542644/260127 y preguntas de Dummy sobre la configuration de git en amazon cloud ec2

local: ssh-keygen -t rsa -b 1024 y id_rsa_aws . Luego se id_rsa_asw files id_rsa_asw e id_rsa_aws.pub .

acceso al server: ssh -i amazon-generated-key.pem ubuntu@example.com

id_rsa_aws.pub key id_rsa_aws.pub generada en ~/.ssh/authorized_keys .

creando un repository git bare

server: mkdir -p ~/git/dumb.git; cd ~/git/dumb.git; git init --bare mkdir -p ~/git/dumb.git; cd ~/git/dumb.git; git init --bare

local: git clone ubuntu@example.com:git/dumb.git

  • ¿Qué significa la advertencia de "actualizar actualizando la ramificación" de git?

Empujar desde el directory de trabajo del server

server: git clone ~/git/dumb.git

Empujar desde el directory de trabajo local.

Haga algunos cambios en un directory local.

  • local: git add .; git commit -m "..."; git add .; git commit -m "...";
  • local: git push --set-upstream origin master
    • Esta es la única ejecución, entonces puedo usar git push
    • ¿Por qué no puedo presionar a este repository desnudo?

Crea un gancho

Haz un ~/git/dumb.git/hooks/post-commit , luego hazlo ejecutable con chmod a+x post-commit .

 #!/bin/bash unset GIT_INDEX_FILE git --work-tree=/home/ubuntu/dumb --git-dir=/home/ubuntu/git/dumb.git checkout -f 

PROBLEMA

Cuando presiono desde mi máquina local al server, no hay problema.

 dumb> git push Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 278 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To ubuntu@prosseek.com:git/dumb.git 5964789..b29c160 master -> master 

Sin embargo, la post-confirmación no se invoca automáticamente. Puedo iniciar session en el server y ejecutar el post-commit y el directory de trabajo está sincronizado.

¿Qué podría estar mal?

El gancho estaba mal, el script de gancho debería haber sido post-receive no post-commit . Sugerencias de https://www.digitalocean.com/community/tutorials/how-to-use-git-hooks-to-automate-development-and-deployment-tasks

Este es el contenido del gancho post-receive .

 #!/bin/bash unset GIT_INDEX_FILE while read oldrev newrev ref do if [[ $ref =~ .*/master$ ]]; then echo "Master ref received. Deploying master branch to production..." git --work-tree=/home/ubuntu/dumb --git-dir=/home/ubuntu/git/dumb.git checkout -f master echo "Ref $ref successfully received. Doing nothing: only the master branch may be deployed on this server." fi done