Wpis z mikrobloga

#programowanie takie pytanie odnośnie #git

W jednej z aplikacji, które utrzymuję, upływa mnóstwo czasu - tygodnie lub nawet miesiące - zanim zadania zostaną zaakceptowane przez biznes. W dodatku biznesowi się marzy, żeby na produkcję wrzucać te feature'y, które oni zaakceptowali, bez wględu na kolejność developmentu.

Czyli historia w gicie wygląda tak: master|dev --- F1 --- F2 --- F3 --- F4, w pewnym momencie biznes akceptuje 2 i 4 i chciałby na produkcji master|dev --- F2 --- F4, lub co gorsza, nawet --- F4 --- F2, jeśli taka była kolejność akceptowania.

To wymagałoby osobnego środowiska do testów (bo z tego, że dev --- F1 --- F2 działało, nie oznacza wcale, że dev --- F2 też będzie działało), ale to jest jeszcze do ogarnięcia. Za to nie bardzo wiem, jak "wyciągać" tylko te zmiany, które są interesujące.

Jeden pomysł, który znam, to feature flagi. Nie bardzo wiem, jak one się mają do bugów. W dodatku nie jestem pewien, jak łatwo aplikowalne jest to podejście w projekcie, który już sobie długo żyje i jakość kodu jest przeciętna, ani jak to zaimplementować w bazie danych...

Znacie jakieś inne rozwiązania?
  • 4
Są zależności między tymi featurami? Jak nie, to można je pisać "zaczynając" każdy featur od czystego mastera na którym są tylko zaakceptowane rzeczy pomergowane, a nie od poprzedniego featura.

Czyli:

F1: master -> F1
F2: master -> F2
F3: master -> F3
F4: master -> F4

A potem możesz mergować w dowolnej kolejności jak poakceptują.

Z bazą danych i testami będzie problem tak czy inaczej. Generalnie takie podejście wymaga dużo dyscypliny od
@sasik520: Jak F nie są powiązane pomiędzy sobą, to bierzesz F1 z mastera, rozwijasz go sobie na oddzielnym branchu, wrzucasz to na dev. Jak zaakceptują to wrzucasz F1 na drugie środowisko (dev-2?), jeżeli wszystko jest ok, dorzucasz dev-2 do mastera i na produkcję.
via Wykop Mobilny (Android)
  • 1
@sasik520: najlepiej feature flagi. Inne podejście z jakim się spotkałem to branch na release, gdzie odpowiednie commity są cherry-pickowane z mastera ale tu masz problem z utrzymaniem alternatywnych wersji programu