2012-05-02 17 views
5

Próbuję znaleźć sposób, aby napisać skrypt bash, który będzie automatycznie pobierał z naszego prywatnego repozytorium Github co północ i aktualizował naszą stronę programistyczną.Skrypt Bash do Push/Pull z prywatnego repozytorium Git?

Nasze repozytorium jest prywatne z oczywistych względów, a wszystko, co znalazłem w pobliżu, zawsze zawiera prośbę o podanie hasła. Nasz serwer ma własne konto Github, które wykorzystuje do przesyłania i pobierania z repozytorium, ale po prostu nie wiem, jak to zrobić automatycznie.

Czy ktoś może wskazać mi właściwy kierunek?

Odpowiedz

7

Aby zautomatyzować funkcję push/pull, musisz skonfigurować uwierzytelnianie bez podawania hasła. Aby to zrobić, używaj ssh (zamiast https). Jeśli wcześniej nie korzystałeś z ssh z githubem lub wcale, musisz wykonać kilka czynności, aby je skonfigurować.

Na komputerze, generowanie klucza ssh:

$ ssh-keygen -t rsa 

Upewnij się opuścić polu Hasło puste. Pozostawia to lokalny klucz prywatny niezaszyfrowany, ale nie mniej bezpieczny dla rzeczywistej komunikacji przez Internet.

Następnie prześlij ~/.ssh/id_rsa.pub do github w Ustawieniach konta | Klucze SSH

Teraz powinieneś być w stanie naciskać i ciągnąć z tej maszyny bez hasła. Wypróbuj:

git clone [email protected]:user/repo.git 

Możesz wtedy umieścić te polecenia w swoim skrypcie basha. Jeśli musisz to zrobić na wielu komputerach, musisz przesłać każdy klucz lub skopiować klucz prywatny (~/.ssh/id_rsa) do każdego z nich.

Aby uzyskać więcej informacji, zobacz github help. Zobacz także stronę deploy keys, ponieważ może to zapewnić lepszą szczegółowość zabezpieczeń w Twojej sytuacji.

+0

Co powiesz na "git pull"? Sklonowałem, kiedy był publiczny, teraz jest prywatny i nie mogę go aktualizować. Dzięki! –

+1

'git pull' nie różni się od' git clone', ale możesz opcjonalnie skonfigurować [różne adresy URL typu "pull and push"] (https://www.kernel.org/pub/software/scm/git/docs/git- remote.html). Sugeruję, abyś sprawdził konfigurację 'git remote', aby upewnić się, że adres URL jest poprawnie skonfigurowany. – djs

Powiązane problemy