2012-11-14 8 views
6

Ho problemi eseguendo il-ricevere posta gancio come segue:git gancio post-ricevere disattivato bundle install

#!/bin/sh 
unset $(git rev-parse --local-env-vars) 
cd ~/commodity 
git pull origin master 
bundle install 
bundle exec rake assets:precompile 
thin restart 

sto spingendo da locale a remoto e sto ottenendo questo errore:

Counting objects: 5, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (3/3), done. 
Writing objects: 100% (3/3), 319 bytes, done. 
Total 3 (delta 2), reused 0 (delta 0) 
remote: From /var/www/html/test 
remote: * branch   master  -> FETCH_HEAD 
remote: Updating a06129c..c3c3da3 
remote: hooks/post-receive: line 19: bundle: command not found 
remote: hooks/post-receive: line 20: bundle: command not found 
remote: hooks/post-receive: line 21: thin: command not found 
error: cannot run hooks/post-receive: No such file or directory 

Quando clono il mio repository sul server e spingo, l'hook gira e tutto è ottimo. Qualche idea sul perché la spinta non attiva i comandi del bundle quando si spinge dalla mia macchina locale?

Grazie!

+0

Quando si clona sul server, si sta utilizzando un file system o un percorso SSH? Questo è probabilmente qualcosa a che fare con il $ PATH che ottiene il tuo utente SSH. forse prova 'echo $ PATH' in' post-receive' e confrontalo con 'echo $ PATH' che vedi in una shell. –

+0

Ciao Ben, sto clonando il filepath, non SSH. Ho provato a clonare usando SSH e ora si rompe sul server. Ecco il mio $ PATH:/usr/libexec/git-core:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin – pudding

+0

Sono i tuoi 'bundle' e binari 'sottili' in quel percorso? Passa all'utente nel percorso SSH, ad es. per git @ hostname: repo.git, fai 'su git'. Quell'utente può vedere i comandi 'bundle' e' thin'? Cosa succede quando provi a eseguirli? Se necessario, modifica 'PATH' nello script di post-ricezione in modo che i comandi possano essere trovati, come' PATH = $ PATH:/path/to/bundle' –

risposta

4

tenta di aggiungere questa linea al vostro gancio post-ricezione (almeno prima della prima chiamata bundle ...):

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Sui sistemi Unix, rvm aggiunge questa riga automaticamente alla ~/.bash_profile. In qualsiasi contesto non bash (crontab, git hooks) devi aggiungerlo manualmente.

+2

remote: hook/post-receive: 2: [[: non trovato – jakxnz

+0

comando di origine non trovato – juanpastas

+1

è forse questo http://stackoverflow.com/a/5829823/1197775 – juanpastas