2015-05-04 11 views
5

Muszę automatyzować klonowanie repozytorium i pobieranie wszystkich submodułów. Adresy URL submodułów repozytorium są określone na .gitmodules. Gdybym miał iść z domyślnych Chciałbym po prostu zrobićKlonowanie repozytorium z submodułami: zastępowanie poświadczeń

git clone --recursive https://username:[email protected] 

Problemem jest poświadczenia nie są wliczone w .gitmodules pliku i jestem poproszony o tych, kiedy sklonować. Muszę używać HTTPS zamiast SSH.

Próbowałem złożyć poświadczenia za pomocą git config:

git clone https://username:[email protected] my_repo 
cd my_repo 
git submodule init 
git config submodule.my_submodule.url "https://username:[email protected]/my_submodule.git" 
git submodule update 

ale zostanę poproszony o podanie poświadczeń w ostatnim etapie aktualizacji. Sprawdziłem, czy adres modułu podległego jest poprawny i ma odpowiednie poświadczenia w pliku .git/config.

+1

czy wypróbowałeś '' git submodule sync''? –

+1

Okazuje się, że nie używałem nazwy dla 'my_submole'. Wprowadzono w błąd przez ukończenie karty. Znalazłem właściwą nazwę w '.gitmodules'. – sakovias

Odpowiedz

3

Wygląda na to, że próbujesz użyć danych logowania git, ale nie masz szczęścia.

Wariant 1

Dodaj poświadczeń przy użyciu poświadczeń pomocnika:

git config credential.https://example.com.username myusername 
git config credential.helper "$helper $options" 

Sprawdź ~/.gitconfig i upewnić się, że odpowiedni wpis został dodany.

Dalsze czytanie: http://git-scm.com/docs/gitcredentials

Opcja 2

bym dokładnie sprawdzić zawartość swoich .git-poświadczeń złożyć i zrobić nowy wpis dla modułem jeśli nie jest obecny. Ten plik jest używany wewnętrznie przez pomocnika git credentials.

http://git-scm.com/docs/git-credential-store

Wariant 3

proste rozwiązanie w oknach jest usunięcie nazwę użytkownika, hasło z pliku modułów:

[submodule foo] 
    path = sub/foo 
    url = https://example.com/git/foo.git 

i utworzyć plik ~/.netrc.

machine example.com 
    login myusername 
    password areamandyingtotellsomeonehiscoolpassword 

Kudos na Git submodule URL not including username?.

7

Po editting plik .gitmodules trzeba zastosować zmiany używając

git submodule sync 

Przy następnym uruchomieniu git submodule update nowy adres URL będzie używany.