Ich bin schockiert - und in der Tat entsetzt - über die Anzahl der Antworten, die hier lauten: "Nicht aktualisieren, es sei denn, Sie müssen". Ich habe das getan, und obwohl es kurzfristig einfacher ist, brennt es auf lange Sicht höllisch. Häufigere, kleinere Updates sind sehr viel einfacher zu verwalten als gelegentlich größere, und Sie profitieren früher von neuen Funktionen, Fehlerkorrekturen usw.
Ich kaufe nicht die Idee, dass Bibliotheksänderungen schwieriger zu testen sind als Codeänderungen. Es ist genau das Gleiche - Sie nehmen eine Änderung an der Codebasis vor und müssen diese validieren, bevor Sie ein Commit durchführen und bevor Sie sie freigeben. Dafür müssen Sie jedoch bereits über Prozesse verfügen, da Sie Codeänderungen vornehmen!
Wenn Sie in zwei bis vier Wochen dauernden Iterationen arbeiten, empfehle ich, die Aktualisierung von Bibliotheken einmal pro Iteration vorzunehmen, und zwar so bald wie möglich nach dem Start, wenn die Dinge etwas entspannter sind als kurz vor einer Iteration Abgabetermin und das Projekt hat mehr Kapazitäten, um Veränderungen zu absorbieren. Lassen Sie jemanden (oder ein Paar, wenn Sie Pair-Programmierung durchführen) sich hinsetzen, schauen Sie sich an, welche Bibliotheken aktualisiert wurden, und versuchen Sie, alle neu zu erstellen und zu testen. Etat vielleicht einen halben Tag bis einen Tag für jede Iteration. Wenn es funktioniert, überprüfen Sie die Änderungen (ich gehe davon aus, dass Sie die Bibliotheken in der Quellcodeverwaltung behalten, wie wir es tun; ich bin nicht sicher, wie Sie die Änderung auf kontrollierte Weise verbreiten würden, wenn nicht). Dies ist natürlich viel einfacher, wenn Sie automatisierte Tests durchführen, als wenn die Tests vollständig manuell durchgeführt werden.
Die Frage ist nun, was Sie tun, wenn ein Update Probleme verursacht. Nehmen Sie sich Zeit, um diese zu beheben, oder lassen Sie es weg? Ich würde vorschlagen, sich zu letzterem zu neigen; Wenn es in einer Stunde behoben werden kann, tun Sie es, aber wenn ein Update einen erheblichen Integrationsaufwand erfordert, dann erhöhen Sie es als Ihre eigene Entwicklungsaufgabe, die wie jede andere geschätzt, priorisiert und geplant werden muss. Die Chancen stehen gut, dass die Priorität niedrig ist, wenn dies keine entscheidenden Korrekturen oder Verbesserungen mit sich bringt, und Sie werden nie daran vorbeikommen. Sie werden jedoch nie wissen, dass sich das Problem zu dem Zeitpunkt, zu dem der nächste iterative Aktualisierungstag beginnt, möglicherweise selbst behoben hat. Auch wenn nicht, zumindest wissen Sie jetzt, dass der Update-Pfad eine Straßensperre enthält, die Sie nicht überrascht.
Wenn Sie keine Iterationen dieser Länge durchführen, würde ich eine Art eigenständigen Zeitplan für Updates einrichten - nicht länger als monatlich. Gibt es einen anderen Projektrhythmus, an den Sie ihn binden könnten, wie eine monatliche Statusüberprüfung oder ein Architekturratstreffen? Zahltag? Pizza Nacht? Vollmond? Was auch immer, Sie müssen etwas finden, das viel kürzer ist als ein herkömmlicher Veröffentlichungszyklus, da der Versuch, alle 6 bis 18 Monate alles auf einmal zu aktualisieren, schmerzhaft und demoralisierend sein wird.
Wenn Sie vor der Veröffentlichung Stabilisierungszweige ausführen, wenden Sie diese Richtlinie nicht auf diese an. Dort würden Sie nur Bibliotheken aktualisieren, um wichtige Korrekturen zu erhalten.