Ho già visto:Esegui comandi git sul telecomando?
- How to run GIT commands on remote repository - "SSH nel server" o "
git fetch
;gitk --all
" - Run git commands on remote working tree (GIT_WORK_TREE=/path) - la risposta è di circa
git push --tags
- How to "git show" on a remote repo? - "Usare git fetch per ottenere il telecomando cronologia, quindi estrarre il file dall'archivio oggetti locale. "
- How to run git command remotely? - "
ssh [email protected] "cd my/repo/path && git show"
" - How can I manually run the hook post-receive on git? "Un gancio è uno script di shell eseguibile È possibile eseguirlo dalla riga di comando, se è necessario eseguire a mano, anche se la costruzione del inuput standard input atteso è un po 'noioso se il repo. ha più di una testa (cioè, usi i rami). "
- Detecting changes to remote branch - "Non monitorare i file nei meccanismi interni di git manualmente utilizzare git per controllare le cose per te In questo caso
git rev-parse --verify origin/master
vi mostrerà il CSA della vostra copia locale di origine/master, egit ls-remote origin master
per ottenere il.. SHA dal telecomando. " - Commit history on remote repository - "
git log remotename/branchname
- Non è possibile connettersi direttamente al server per controllare il registro, ciò che si fa è scaricare lo stato del server congit fetch
e quindi localmente visualizzare il registro dei rami remoti."
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, pull
update
...) - 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-update
git
hook restituisce il suo stdout al chiamante locale, preceduto da "remote:"?
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