Stiamo usando git con un repository centrale (utilizzando Gitosis). Ho creato un hook di post-ricezione per generare un'e-mail alla mailing list dev ogni volta che vengono apportate modifiche al repository centrale e per generare documentazione dalla cartella della documentazione nel repository git.Git post-ricezione non funzionante
Pertanto, in ~ git/ho una directory, la chiameremo 'a' che contiene un clone del repository git. Il post-ricezione gancio assomiglia:
#!/bin/bash
cd ~git/repositories/a.git
. ~git/post-receive-email &> /dev/null
(cd ~git/a && git pull &> ~git/pull_log.log && php ~git/a/scripts/generate_markdown_documentation.php &> ~git/doc_log.log)
Lo script di posta elettronica è in funzione, ma la generazione di documentazione non è. Il contenuto di pull_log.log è:
fatal: Not a git repository: '.'
Il che mi fa pensare che non sta cambiando nella directory corretta in linea 5 dello script di cui sopra. Ho sbagliato? Come posso farlo funzionare?
Modifica: Ho aggiornato il gancio di post-ricezione come suggerito nelle risposte. Lo script è ora:
#!/bin/bash
function die {
echo "$*" >&2; exit 1
}
function checkgit {
[ -d "$1/.git" ] || die "$1 could not possibly be a git repo; $1/.git is not a dir"
}
cd ~git/repositories/a.git
. ~git/post-receive-email &> /dev/null
(set -x
checkgit ~git/a
cd ~git/a
checkgit .
pwd
git pull
php ~git/a/scripts/generate_markdown_documentation.php)
e ottengo il seguente output da git push:
+ checkgit /var/git/a
+ '[' -d /var/git/a/.git ']'
+ cd /var/git/a
+ checkgit .
+ '[' -d ./.git ']'
+ pwd
/var/git/a
+ git pull
fatal: Not a git repository: '.'
+ php /var/git/a/scripts/generate_markdown_documentation.php
Qualsiasi ulteriore aiuto?
Oh, e se faccio funzionare lo scritto io stesso, funziona (l'eseguo dicendo ganci/post-ricevono)
scoperto il problema, grazie alla serverfault - in pratica, le variabili di ambiente e GIT_DIR
GIT_WORK_TREE
sono impostati quando il gancio scorre, e questi influenzano il git tirare in modo negativo. Disattivare le variabili risolve il problema.
Cambia 'git pull' in' pwd' e guarda cosa appare nel registro. –
Oooh! Cattiva. +1 per rintracciare il problema e ucciderlo! –
Come hai trovato il file pull_log.log? Non so dove sono memorizzati i registri ... – munmunbb