Jestem zszokowany - i naprawdę przerażony - liczbą odpowiedzi tutaj: „nie aktualizuj, chyba że musisz”. Zrobiłem to i chociaż na krótką metę jest to łatwiejsze, na dłuższą metę pali się jak diabli. Częstsze, mniejsze aktualizacje są znacznie, znacznie łatwiejsze do zarządzania niż sporadyczne duże, a Ty zyskujesz korzyści z nowych funkcji, poprawek błędów i tak dalej.
Nie kupuję tego, że zmiany w bibliotece są trudniejsze do przetestowania niż zmiany w kodzie. Tak samo jest - wprowadzasz zmiany w bazie kodu i musisz je zweryfikować przed zatwierdzeniem i głębiej przed wydaniem. Ale musisz już mieć do tego odpowiednie procesy, ponieważ wprowadzasz zmiany w kodzie!
Jeśli pracujesz w iteracjach, trwających od dwóch do czterech tygodni, sugerowałbym, aby aktualizować biblioteki raz na zadanie iteracji, aby było to zrobione jak najszybciej po rozpoczęciu, gdy sprawy są nieco bardziej zrelaksowane niż tuż przed iteracją termin, a projekt ma większą zdolność do wchłaniania zmian. Poproś kogoś (lub parę, jeśli wykonujesz programowanie w parach), aby usiadł, sprawdź, które biblioteki zostały zaktualizowane, i spróbuj uruchomić każdą z nich i uruchomić przebudowę i test. Być może przeznaczasz na to od pół do jednego dnia na każdą iterację. Jeśli coś działa, sprawdź zmiany (zakładam, że utrzymujesz biblioteki pod kontrolą źródła, tak jak my; nie jestem pewien, jak propagowałbyś zmianę w kontrolowany sposób, jeśli nie). Będzie to oczywiście o wiele łatwiejsze, jeśli masz zautomatyzowane testy, niż jeśli testy są całkowicie ręczne.
Pytanie brzmi, co robisz, jeśli aktualizacja psuje rzeczy - czy poświęcasz czas na ich naprawianie, czy pomijasz? Sugerowałbym pochylenie się w tym drugim; jeśli można to naprawić w ciągu godziny, zrób to, ale jeśli aktualizacja będzie wymagała znacznej pracy, aby ją zintegrować, to podnieś ją jako własne zadanie programistyczne, które ma być oszacowane, uszeregowane według priorytetów i zaplanowane tak jak każde inne. Szanse są takie, że jeśli nie wprowadzi jakiejś bardzo istotnej poprawki lub poprawy, priorytet będzie niski i nigdy się do tego nie obejdziesz. Ale nigdy nie wiadomo, zanim nadejdzie kolejna iteracyjna aktualizacja dnia, problem mógł się rozwiązać; nawet jeśli nie, przynajmniej teraz wiesz, że na ścieżce aktualizacji jest blokada i nie zaskoczy Cię.
Jeśli nie wykonujesz iteracji o takiej długości, skonfigurowałbym jakiś autonomiczny harmonogram aktualizacji - nie dłużej niż raz w miesiącu. Czy jest jakiś inny rytm projektu, z którym możesz go powiązać, na przykład comiesięczny przegląd statusu lub spotkanie rady architektury? Dzień wypłaty? Noc pizzy? Pełnia księżyca? Cokolwiek, musisz znaleźć coś znacznie krótszego niż tradycyjny cykl wydawniczy, ponieważ próba aktualizacji wszystkiego za jednym razem co 6-18 miesięcy będzie bolesna i demoralizująca.
Nie trzeba dodawać, że jeśli wykonasz gałęzie stabilizacji przed wydaniami, nie zastosujesz wobec nich tej polityki. Tam można tylko aktualizować biblioteki, aby uzyskać krytyczne poprawki.