2014-10-28 11 views
36

Obecnie pracuję nad naprawdę dużym zapotrzebowaniem na pull. Aby zachować przegląd kodu w pewnym sensie, chodziło o podzielenie całego żądania ściągania w odizolowanych częściach, które jednak zależą od siebie nawzajem.Czy możliwe są zależne od pobrania żądania w Github?

Przykładem może być:

  • Pull żądanie 1: Tworzenie interfejsów: interfejs & B i restrukturyzacji kod
  • prośba Pull 2 ​​: Interface implementacji i testów (w zależności od ciągnącej pytanie1)
  • Żądanie pobrania 3: Implementacja interfejsu i testy (w zależności od żądania pobrania2)
  • Pull prośba 4: Mieszany Test wdrożeń (zależy od 2 + 3)

Czy istnieje sposób w Github złożyć wszystkie cztery wnioski ciągnąć tym samym czasie z zależnościami?

+0

Zazwyczaj po prostu odwołuję się do zależności, następnie PRy będą połączone, a recenzenci będą wiedzieć. Dodaj PR 1. Dodaj PR 2, użyj oddziału PR 1 jako bazy i powiedz "to zależy od # 1". I tak dalej. Nie ma potrzeby, aby je wszystkie jednocześnie. – Schwern

Odpowiedz

29

O ile widzę, jest to niemożliwe, i moim zdaniem jest to jeden z głównych wad GitHub w porównaniu z innymi narzędziami do przeglądu kodu. Gerrit automatycznie ustawia zależne od sprawdzenia kodu, gdy naciskasz zatwierdzenia, które zależą od siebie nawzajem, a w Phabricator jest to bardziej ból, ale nadal możliwe.

Warto również pamiętać, że ludzie używają GitHub PRs na wiele sposobów. Normalny sposób współpracy oparty na otwartym kodzie źródłowym polega na rozwidleniu repozytorium i przesłaniu żądania przeniesienia transakcji typu cross-repo, ale w innych przypadkach (np. W organizacji) możesz wysyłać żądania pobrania dla plików różnic w tym samym repozytorium. Myślę, że w jednym repozytorium rozsądniej jest uzyskać coś na podstawie zależnych żądań ściągania, ponieważ możesz skonfigurować strukturę commit/branch w ramach tego repozytorium.

Oto blogu, który opisuje w jaki sposób, aby uzyskać pewne zalety zależnych wniosków pull, które myślę, że wymaga od wszystkich zobowiązuje się znajdować w tym samym repo: http://graysonkoonce.com/stacked-pull-requests-keeping-github-diffs-small/

Podsumowanie:

  • do przedłożenia 5 zależnych żądań ściągnięcia, utwórz hierarchię oddziału o głębokości 5 poziomów i prześlij każdy PR jako gałąź w oparciu o poprzednią gałąź.
  • Aby zaktualizować recenzję 2 z 5, przepchnij aktualizację do oddziału 2, a następnie wykonaj 3 operacje scalania, aby zintegrować zmiany z recenzjami 3, 4 i 5.
  • Musisz wprowadzić wszystkie zmiany na raz, ponieważ GitHub robi wspiera aktualizowanie docelowej gałęzi PR. W tym przykładzie wszystkie 5 recenzji kodu zostało wyładowanych jako pojedyncze zatwierdzenie.

Takie podejście wydaje się działać ok olbrzymich zmian, które są najlepiej oceniane w mniejsze kawałki (choć utrzymanie n-level-głębokie hierarchii oddział jest ból w porównaniu z czymś git rebase -i), ale to naprawdę nie pozwala dla "potoku przeglądu kodu", w którym możesz mieć zależne różnice na różnych etapach sprawdzania i możesz wylądować wcześniej, gdy są sprawdzane.

niektórych innych zasobów internetowych, które wydają się również wywołać ograniczenie:

https://www.quora.com/Is-there-a-good-system-for-adding-multiple-pull-requests-to-GitHub

https://muffinresearch.co.uk/how-do-you-deal-with-dependent-branches-on-github/

moim rozumieniu jest to, że osoby korzystające GitHub PRS ogólnie po prostu spróbować zorganizować ich obieg, aby nie polegać na recenzje zależnych kodów. Kilka przykładów:

  • Zamiast rozbijania zmiany na kroki przyrostowe, które można niezależnie odnawiać, zgłoś to jako monolityczną recenzję kodu, która wyląduje naraz. GitHub wciąż pozwala podzielić recenzje kodu na wielokrotne zatwierdzenia, które może przeglądać recenzent, ale nie można ich zatwierdzić/wyładować samodzielnie.
  • Spróbuj uporządkować swoją pracę, aby wprowadzić zmiany w niepowiązanych częściach kodu i umieścić je w niezależnych oddziałach, które można wykorzystać do przesyłania niezależnych raportów. Nadal możesz zachować lokalny oddział ze wszystkimi zmianami wprowadzonymi przy użyciu metody wybierania wiśni lub innych podejść.
  • Jeśli masz zmianę zależną od zaległego PR, po prostu poczekaj, aż PR zostanie przyjęty i scalony przed wysłaniem nowego PR. Mógłbyś wspomnieć gdzieś, że masz inny PR, który zależy od tego, i może to zmotywuje recenzenta kodu, aby dostać się do tego wcześniej.
Powiązane problemy