2013-04-18 13 views
5

Używam git superproject pattern w dużym projekcie, który jest wdrażany przez agenta budującego Teamcity, który nie ma konta w repozytorium, jednak repozytorium jest skonfigurowane, aby umożliwić anonimowe klonowanie. Z tego powodu stworzyłem submulki z ich URL-em http://, zamiast ich URL-ami git. Problem polega na tym, że repozytorium odrzuca http popycha:różne adresy URL typu "push/pull" dla submodule git

Total 0 (delta 0), reused 0 (delta 0) 
error: RPC failed; result=22, HTTP code = 401 
fatal: The remote end hung up unexpectedly 
fatal: The remote end hung up unexpectedly 

Więc za każdym razem aktualizować submodules podczas przełączania oddziałów, muszę zrobić git remote add-url --push dodać git:// URL.

Czy istnieje sposób na skonfigurowanie submodułów w superprojektie w taki sposób, że używają już adresu URL http:// do przeciągania i adresu URL git:// do pchania?

+0

Może ustawić 'pushURL' w' .git/Submoduły//config'. – soulseekah

Odpowiedz

5

LibreOffice project also uses submodules i obejmuje:

Domyślnie jesteś Submoduły repozytorium jest w stanie zwanym „wolnostojący HEAD”, która oznacza, że ​​zobowiązują wyewidencjonowanym - który jest jeden, że super-projekt (rdzeń) need - nie jest związane z nazwą lokalnego oddziału.

Nie zapomnij dodać właściwego pushurla do modułu cząstkowego, nad którym pracujesz lub nie możesz go zatwierdzić.

$ editor .git/modules/submodule/config 

iw sekcji [remote "origin"] dodają:

pushurl = ssh://logerrit/submodule 

(podobny do soulseekah „s comment) (w przypadku, użyj git:// adres)

You może również zrobić to przez (w ramach modułu)

git config remote.origin.pushurl git://... 

Jeśli tego nie zrobisz, jak illulstrated w this project, byś dostać:

fatal: The remote end hung up unexpectedly 
+0

, więc kiedy już to zrobisz, czy istnieje jakiś sposób na przeniesienie tej konfiguracji do repozytorium, aby nowe klony ją dostały? – theheadofabroom

+0

@BiggAl nie jest to * lokalna * config, której nie można pchnąć. – VonC

+0

jako notatkę dla siebie, vime search and replace można wykonać jako 'g: url =: s:^\ (. \ + \) Url = http \ (. \ + \)/\ (Qa /. \ + \) $: \ 1url = http \ 2/\ 3 \ r \ 1pushurl = git \ 2 \: \ 3: 'w .submodules lub' g: url =: s:^\ (. \ + \) Url = http \ (. \ + \)/\ (qa /. \ + \) $: \ 1url = http \ 2/\ 3 \ r \ 1pushurl = git \ 2 \: \ 3: 'in .git/config – theheadofabroom