2013-06-30 5 views
5

Mam następujący przykład z naszego działu IT, i chciałbym, aby zrozumieć, co ta komenda robi dokładnie:muszą zrozumieć polecenia Git/Gerrit (pobranie i wcisnąć)

git fetch origin +refs/changes/*:refs/remotes/origin/changes/* 

aby dać pewną ramę Odwołanie jest częścią narzędzia do ciągłej integracji (CI) i jest to część procesu sprawdzania kodu do przetestowania. Kompilacja CI jest wyzwalany przez popychanie do Gerrit z:

git push origin HEAD:refs/for/master 

I pytaniem wtórnym, jest gdybym chciał pchnąć zmiany w gałęzi rozwojowej mogę użyć:

git push origin HEAD:refs/for/development 
+0

Z którego narzędzia CI korzystasz? Jenkins? – uncletall

+0

Używam Teamcity – Plazgoth

Odpowiedz

0

nie wiem cokolwiek o gerrit. Ale mogę powiedzieć coś o pierwszym poleceniu git, o którym wspomniałeś.

Ostatnie części poleceń, które wymienisz, nazywają się refspecs. Możesz przeczytać o tym, co robią w Refspec chapter of the Pro Git book. W skrócie:

git fetch origin +refs/changes/*:refs/remotes/origin/changes/* 

Ten mówi, że dla origin zdalny, pobierać zobowiązuje oddziałów, że w repozytorium origin, znajdują się w katalogu w katalogu git (refs/changes tj .git/refs/changes/ w standardowym repozytorium i refs/changes w normalnym repozytorium gołym). Skopiuje te gałęzie do lokalnego katalogu .git/refs/remotes/origin/changes/. Wreszcie, zgodnie z normalnym zachowaniem pobierania, skopiuje on zatwierdzenia należące do tych gałęzi do katalogu .git/object.

Standardowy refspec to +refs/heads/*:refs/remotes/origin/*, więc refs/changes wygląda dla mnie trochę dziwnie. To nie jest standardowy katalog Git, ale być może jest to Gerrit. Struktura refs/remotes/origin/changes wygląda jak changes jest odgałęzieniem w lokalnym repozytorium.

0

Typowym przyciąganie patch będzie wyglądać następująco: git pull ssh://www.example/com:29418/project refs/changes/24/24/2

by to ciągnąć swój projekt plus drugi zestaw łat zmian 24. Więc można wyciągnąć wszystkie zmiany, które mogą być dużo.

Polecam używać Jenkins (CI) plus wtyczka Gerrit i upewnij się, że podałeś choosing strategy jako Gerrit Trigger. W ten sposób upewnisz się, że kompilacja przetestuje odpowiedni zestaw zmian.

Tak, możesz przejść do gałęzi rozwoju. Oczywiście musisz się upewnić, że masz odpowiednie prawa. Najlepiej jest najpierw utworzyć oddział w Gerrit, w ten sposób nie trzeba nadawać "Utwórz referencję" i zapobiegać tworzeniu oddziałów przez pomyłkę, na przykład przez pomyłkę w pisowni.