2016-02-03 17 views
6

Sto usando overcommit gemma (https://github.com/brigade/overcommit) nel mio progetto, quando uso Github Desktop per OSX ottengo questi errori:errore quando si utilizza overcommit e Github Desktop

Questo repository contiene ganci installati da Overcommit, ma la overcommit gem non è installato. Installalo con gem install overcommit. (1)

La gemma è installata, funziona nel terminale. Immagino sia perché uso rvm e Github Desktop non sa di rvm. Qualcuno sa come risolvere questo?

risposta

5

Ok finalmente farlo funzionare! unito la risposta da @michelegera con commento da @rewritten

Fase 1:

sudo su - 
gem install bundler 
gem install overcommit 
gem install rubocop 

Fase 2: aggiunta command: ['bundle', 'exec', 'rubocop']-.overcommit.yml

Grazie per l'aiuto!

+1

Stessa situazione con Git Tower. Quanto sopra non ha funzionato per me fino a quando non ho lanciato Tower da Terminal usando i loro strumenti CLI. Immagino che GitHub per Desktop avrebbe lo stesso. https: //www.git-tower.it/help/mac/faq-and-tips/faq/hook-scripts – Craig

+0

risolve anche problemi simili in SourceTree su Mac. Grazie! – ludenus

0

Molto probabilmente è this line dove si verifica l'errore. Come puoi vedere il problema principale è che non è in grado di require 'overcommit'. Non conosco il client desktop GitHub così bene (forse c'è un modo per configurarlo al suo interno), ma una cosa che potresti fare è aggiungere il percorso assoluto in cui rvm memorizza i tuoi gem nel "percorso richiesto" nell'hook file. Questo potrebbe sembrare:

$: << "/home/user/.rvm/path/to/gems/dir" 

Lo svantaggio di questo è che si dovrebbe avere il vostro percorso assoluto nel file gancio e molto probabilmente non funzionerà per gli altri. Si potrebbe anche prendere in considerazione l'idea di installare la gemma globalmente per l'interprete ruby ​​che esegue lo script (vedere la riga Shebang nel file hook).

+0

grazie per la risposta, quindi ho installato overcommit a livello globale. Ora non riesce a trovare rubocop (questo è ciò che eseguo in un hook pre-commit). Questo è il prossimo passo. – Chris

+1

@Chris usa il comando ': ['bundle', 'exec', 'rubocop']' nella configurazione di overcommit in modo che rubocop venga eseguito dall'interno del bundle. – rewritten

0

Hai ragione, Github Desktop (o qualsiasi altra GUI) non è in esecuzione nel tuo ambiente terminale, quindi non sa nulla della tua specifica installazione RVM.

Una soluzione semplice è quella di installare overcommit ed eventuali altre gemme richiesti dai vostri ganci nel sistema Rubino:

sudo su - 
gem install bundler 
gem install overcommit 
gem install rubocop 
... 

Se è stato installato Git tramite Homebrew o altri mezzi, potrebbe essere necessario cambiare il Git binario utilizzato dalla GUI.

Ad esempio, in Tower, ho selezionato la versione di Homebrew anziché quella del sistema.

Tower for OS X Git Config

+0

Nessuna fortuna: '[RuboCop] FAILED 'rubocop' non è installato, non nel tuo PATH, o non ha permessi di esecuzione Installalo eseguendo: gem install rubocop' – Chris