2014-07-21 14 views
6

Ho già visto:Esegui comandi git sul telecomando?

A giudicare da ciò, per quello che voglio fare, devo effettuare il login tramite ssh ed eseguire uno script sul server remoto; ma speravo in una soluzione più git-integrata, quindi lascia che ti spieghi cosa voglio fare.

Ho un repository remoto, che è git-svn; quindi ho un repository locale git-only che è un clone del telecomando. Pertanto, il locale ha un riferimento all'URL remoto in remote.origin.url (visto tramite git config --list).

Quello che voglio fare, è eseguire l'equivalente di git svn log (forse con un po 'di post-elaborazione) sul telecomando, ma con la chiamata avviata dal locale macchina/repository - e ottenere i risultati, ancora una volta sul macchina locale/pronti contro termine. Ovviamente, git-svn potrebbe non essere installato sulla macchina locale, il che significa che solo il telecomando sarebbe in grado di comprendere tale comando.

Sarei pronto a codificare un gancio per il pronti contro termine a distanza - ma per quanto posso vedere, ganci può essere eseguito solo in occasione di eventi specifici (ad esempio, pullupdate ...) - non si può davvero chiamarli arbitrariamente: Ricordo, una volta che stavo sviluppando uno script post-update; e per eseguirne il debug, ho dovuto impostarlo per restituire sempre un errore, e quindi "spingere" un commit "falso", che avrebbe eseguito lo script, e al ricevimento dell'errore, ripristinare il repository - Naturalmente, non è così che immagino debba essere eseguito lo script remoto.

Un'altra cosa che potrebbe essere possibile è quello di codificare un alias per il repo locale, che quindi chiama SSH rispetto al remote.origin.url - forse che renderebbe l'esecuzione di git svn log a distanza un po 'più facile?

Alla fine, questa è la mia domanda - quali opzioni devo eseguire un comando relativamente personalizzato git (come git svn log, o di un git alias definito da remoto) su un pronti contro termine a distanza, utilizzando per quanto possibile, i dati già disponibile nel repository locale (ovvero, voglio evitare di scrivere uno script bash, con percorsi/URL ripetuti codificati, che chiamerà ssh e fare tutto il necessario sul telecomando) - possibilmente, in modo simile a un telecomando post-updategit hook restituisce il suo stdout al chiamante locale, preceduto da "remote:"?

risposta

2

La risposta qui sembra essere essenzialmente:

ssh server 'cd /path/to/repo && git svn log' 

è possibile scrivere un po 'di codice per ottenere server e /path/to/repo da git remote (supponendo che il telecomando è un ssh tipo remoto). Non sono necessarie altre informazioni di contesto oltre a quelle che possono essere facilmente trovate nel repository git locale.

+0

Grazie per questo, @GregHewgill - anche il mio sospetto, bello averlo confermato; anche se speravo che potesse esistere un meccanismo per, diciamo, chiamare alias git remotamente definiti, il che avrebbe reso questo compito molto più integrato/più facile da git. Saluti! – sdaau