Wenn Sie die Funktion zur Verfolgung von Zusammenführungen in Subversion 1.5 verwenden, aktualisiert SVN die Eigenschaft mergeinfo des übergeordneten Ordners, um die zusammenzuführenden Revisionen zu verfolgen. Wir haben eine große Anzahl von Entwicklern (>500), die an unserem Repository arbeiten, und es ist nicht ungewöhnlich, dass bei Abgabeterminen eine große Anzahl von Entwicklern versucht, alle zur gleichen Zeit zu committen. Wenn ein anderer Entwickler seit Ihrer letzten Aktualisierung eine Übergabe in denselben Ordner vorgenommen hat, sind Sie aufgrund der Änderung in der Mergeinfo gezwungen, vor der Übergabe zu aktualisieren. Wie kann man also verhindern, dass ein Entwickler gezwungen ist, seine Arbeitskopie wiederholt zu aktualisieren, weil jedes Mal, wenn er aktualisiert, jemand anderes vor ihm in diesen Ordner eingreift? Oder ist diese Situation so selten, dass man sich damit abfindet?
Antworten
Zu viele Anzeigen?Wir verwenden SVN-Melder (nur Windows), das sich in Ihrer Taskleiste befindet und Sie benachrichtigt, sobald sich ein überwachtes Repository ändert. Dies ist der beste Weg, um Alptraum-Zusammenführungen zu vermeiden - wenn Sie aktualisieren, sobald eine andere Person Änderungen vornimmt, sollten Zusammenführungen recht einfach sein
Arbeiten Sie an der Zergliederung Ihres Projekts. Teilen Sie das System in Subsysteme und Komponenten auf und geben Sie jeder Komponente einen eigenen Ordner in der Quellcodeverwaltung.
Hunderte von Entwicklern, die in demselben Ordner arbeiten, scheinen ein Alptraum für das Management zu sein, nicht nur wegen dieser svn-Probleme.
@CtrlAltDel, ich glaube nicht, dass ein DVCS, egal welcher Art, ein Allheilmittel für dieses Problem ist. In diesem Fall ist alles, was Sie erreichen könnten, die Verlagerung der Merge-Belastung von der Commit-Zeit auf die Integrationszeit, die wohl weitaus größere Kopfschmerzen bereitet. Anstatt Konflikte in Echtzeit in einem zentralen Repository zu erleben, arbeiten die Entwickler nun an immer weiter voneinander abweichenden Codebasen in ihren eigenen verteilten Repositories. Diese zu einem einzigen kohärenten (und funktionierenden) Produkt zusammenzufügen, ist nicht trivial.
Ich denke, dass die Lösung, die Entwickler über Repository-Commits zu benachrichtigen, wirklich gut ist. Wenn Sie nicht mit Windows arbeiten (und SVN Notifier nicht verwenden können, wie Mark vorschlägt), empfehle ich, jedes Mal, wenn eine Übertragung stattfindet, einen RSS-Feed zu aktualisieren. Sie können dies über einen Post-Commit Repository Hook machen - Beispiele gibt es im Internet zuhauf.
Allerdings wird man benachrichtigt, wenn sich etwas ändert überall im Repository kann schnell zu einer Ablenkung werden. Für feinkörnigeres RSS verwende ich WebSVN (Sie müssen RSS aktivieren). Grundsätzlich können Sie einen RSS-Feed anfordern für beliebiger Repository-Pfad (Datei oder Verzeichnis) und sie wird dynamisch für Sie erstellt/aktualisiert. Sie können die RSS so oft aktualisieren, wie Sie möchten - die letzte Version wird zwischengespeichert, bis eine neue Version veröffentlicht wird. Es gibt eine Reihe von RSS-Readern auf allen Plattformen, die einen Entwickler über Änderungen informieren können.