Pull Request w Git

Dzisiaj słowo o tym, jak pracuje się wspólnie nad projektami i wprowadzaniem zmian do kodu. Z oczywistych względów do kodu programu nie mogą być wprowadzone żadne zmiany dokonane przez dowolną osobę. Zmiany takie muszą być zatwierdzone przez właściciela projektu lub osoby przez niego wyznaczone. Niemniej ważnym aspektem jest to, aby praca dwóch osób nie kolidowała ze sobą, a zaakceptowane zmiany na koniec były spójne. Służy temu mechanizm Pull Request.

Gdy osoba nieuprawniona próbuje dodać zmiany

Jak założyć projekt w GitHub pisałem w jednym ze swoich poprzednich artykułów. Nad moim programem CMLNetKit, jak na razie, pracowałem sam i byłem jego jedynym programistą. Wszystkie moje zmiany były wprowadzane bezpośrednio w do gałęzi (branch) master. 

Na potrzeby tego artykułu stworzyłem nowe repozytorium ProjektTestowy na GitHub, korzystając z mojego własnego konta WojciechowskiPiotr oraz konta organizacji SzkolaDevNet. Projekt jest dostępny TUTAJ. Ponadto utworzyłem nowe konto szkoladevnetstudent10. Możesz je podejrzeć TUTAJ. Korzystając teraz z tego nowego konta, próbuję wprowadzić zmiany w repozytorium, używając do tego wbudowanego w GitHub edytora. Chcę dodać nowy plik, ale tak naprawdę wybrana przeze mnie operacja nie ma znaczenia. Próba jakiegokolwiek działania kończy się wyświetleniem okna z następującą informacją:

GitHub - Próba zapisania zmian przy braku uprawnień do projektu
GitHub - Próba zapisania zmian przy braku uprawnień do projektu

Zgodnie z przewidywaniami nie mamy uprawnień do zapisu do tego projektu. Domyślnie ma je tylko użytkownik zakładający repozytorium. W związku z powyższym GitHub utworzył specjalny klon projektu, tak zwany fork. Jest to kopia projektu, która została utworzona w ramach konta użytkownika, który operację wykonał. Dlatego na koncie użytkownika szkoladevnetstudent10 pojawił się projekt ProjektTestowy, który jest kopią projektu z konta SzkolaDevNet. Znajduje się on pod adresem https://github.com/szkoladevnetstudent10/ProjektTestowy. Charakterystyczną cechą gałęzi fork jest to, że można je synchronizować z oryginalnym projektem.

Pull Request

Na czym zatem polega możliwość synchronizacji kodu między własną kopią a oryginalnym projektem? W tym artykule skupimy się na zmianach, które wprowadzamy w naszej kopii i chcielibyśmy, aby się znalazły. Jeżeli się nam one spodobają, to możemy zaproponować, aby zostały włączone do oryginalnego projektu. Propozycja taka nazywa się Pull Request. W propozycji wskazujemy branch, czyli wewnętrzne odgałęzienie w projekcie, zarówno po stronie głównego projektu, jak i naszej kopii. GitHub przedstawia nam to bardziej obrazowo:

GitHub - wybieramy branch tworząc Pull Request
GitHub - wybieramy branch tworząc Pull Request

Pull Request składa się z czterech parametrów. Aby dobrze zrozumieć kierunek proponowanych zmian, czytamy go od prawa do lewa, tak jak wskazuje strzałka. Po jej prawej stronie znajduje się nazwa klonu (fork) projektu oraz branch, w którym lokalnie wprowadziliśmy zmiany (GitHub nazwał ten branch jako patch-1). Po lewej zaś wybieramy główny projekt oraz branch, do którego chcemy zmiany zaproponować. Gdy ustawimy poprawnie parametry, klikamy Create pull request, wypełniamy formularz z opisem proponowanych zmian dla właściciela projektu i wysyłamy do akceptacji.

GitHub - Pull Request od strony właściciela projektu
GitHub - Pull Request od strony właściciela projektu

Wysłany Pull Request jest publiczny, czyli każdy może się do niego w komentarzach odnieść. Właściciel lub inna osoba dysponująca uprawnieniami do zapisu w repozytorium kodu, może zatwierdzić zmiany, odrzucić je lub poprosić nas o wprowadzenie dodatkowych poprawek. Proponowane zmiany mogą być niezgodne z innymi zmianami, które zostały wprowadzone od czasu wykonania kopii projektu, ale o tym, jak aktualizować własną kopię, opiszę następnym razem.

Klon projektu typu fork najwygodniej stworzyć jednym kliknięciem w GitHub. Następnie utworzony na naszym koncie sklonowany projekt edytujemy jak każdy inny projekt bezpośrednio edytorem na GitHub lub importując go do własnego IDE. Wiele narzędzi typu IDE, takich jak pyCharm, pozwala tworzyć Pull Request-y bezpośrednio z okna projektu. Ja jednak preferuję robić to z poziomu GitHub-a ze względu na przejrzystość całego procesu.


Subscribe
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments

ZdradziĆ Ci sekretY udanego projektu automatyzacji?

(link otwiera się w nowym oknie)