2014-07-21 23 views
6

już widziany:Uruchamiaj polecenia git na pilocie?

Sądząc po tym, co chcę zrobić, muszę zalogować się przez ssh i uruchomić skrypt na zdalnym serwerze; ale miałem nadzieję na bardziej zintegrowane rozwiązanie, więc pozwól mi wyjaśnić, co chcę zrobić.

Mam zdalne repo, które jest git-svn; następnie mam repozytorium lokalnego git-only, które jest klonem pilota. Tak więc lokalny ma odniesienie do zdalnego adresu URL w remote.origin.url (widziana poprzez git config --list).

Co chcę zrobić, to uruchomić równowartość git svn log (być może z jakiegoś post-processing) na pilocie, ale z rozmowy zainicjowanej z lokalny maszyny/repo - i uzyskać wyniki, ponownie na lokalna maszyna/repo. Oczywiście, git-svn może nawet nie zostać zainstalowany na komputerze lokalnym, co oznacza, że ​​tylko pilot będzie w stanie zrozumieć takie polecenie.

Byłbym gotowy do zakodowania haka do zdalnego repo - ale o ile widzę, haki mogą działać tylko przy określonych zdarzeniach (tj. pull, update ...) - nie można tak naprawdę nazwać ich arbitralnie: Pamiętam, że kiedyś opracowałem skrypt post-update; i do debugowania, musiałem ustawić go tak, aby zawsze zwracał błąd, a następnie "naciskał" na "fałszywe" zatwierdzenie, które uruchamiało skrypt, a po otrzymaniu błędu, cofnął ponowne - Oczywiście nie tak wyobrażam sobie, że powinien działać zdalny skrypt.

Inną rzeczą, która może być możliwa, jest napisanie aliasu dla lokalnego repo, które następnie wywołuje SSH w odniesieniu do remote.origin.url - może to może sprawić, że działanie git svn log będzie nieco łatwiejsze?

W końcu, to jest moje pytanie - jakie opcje mam uruchomić stosunkowo zwyczaj git polecenia (jak git svn log lub git alias zdefiniowany zdalnie) na zdalnym repo, wykorzystując do największego możliwego już dane stopniu dostępne w lokalnym repozytorium (to znaczy, chcę uniknąć pisania skryptu bash, z powtarzającymi się zakodowanymi na stałe ścieżkami/adresami URL, które będą wywoływać ssh i robić wszystko, co konieczne na zdalnym) - prawdopodobnie w podobny sposób jak zdalny post-updategit hak zwraca stdout do lokalnego wywołującego, z prefiksem "remote:"?

Odpowiedz

2

Odpowiedź tutaj wydaje się być zasadniczo:

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

Możesz napisać trochę kodu, aby uzyskać server i /path/to/repo z git remote (zakładając, że pilot jest zdalny ssh typ). Żadne inne informacje kontekstowe nie powinny być potrzebne poza tym, co można łatwo znaleźć w lokalnym repozytorium git.

+0

Dziękuję za to, @GregHewgill - również moje podejrzenie, dobrze, że zostało potwierdzone; choć miałem nadzieję, że mógł istnieć mechanizm wywoływania, na przykład, wywoływania zdalnie definiowanych aliasów git, co uczyniłoby to zadanie znacznie bardziej zintegrowanym git/łatwiejszym. Twoje zdrowie! – sdaau

Powiązane problemy