Ich bin überrascht, wie lange es dauert, eine sehr kleine Änderung von einem bestimmten Zweig in einen Stamm zu verschmelzen; 1-2 Minuten, um einige Textzeilen zusammenzuführen, die sich in einer einzelnen Textdatei geändert haben, die nur 2 km lang ist.
Ich möchte, wenn möglich, eine Menge schneller machen, aber ich weiß nicht, wo ich anfangen soll. Ich habe eine schnelle Google gemacht und die möglichen Gründe für langsame Zusammenführungen scheinen alle und alle der folgenden enthalten: -
Ich denke, ich möchte wirklich wissen, wie ich herausfinden kann, welche der oben genannten Punkte die Verschmelzung so langsam machen.
Im Moment bin ich im Unklaren darüber, ob es auf dem Client arbeitet oder auf dem Server arbeitet, der am meisten Zeit beansprucht (ich vermute, es ist der Client, da die CPU-Auslastung auf dem Server nicht groß ist). Ich dachte, dass es die riesige Menge an Mergeinfo sein könnte, die über 100 Merges angehäuft hat, aber ich habe einen Test durchgeführt, bei dem ich alle Merge-Informationen aus ein paar Branches gelöscht habe und dann eine Merge-Operation durchgeführt habe und die gleiche Langsamkeit gefunden habe / p>
Was ich also fragen möchte ist: - * Wie würde man die SVN-Aktivität diagnostizieren / profilieren? * Basierend auf den unten stehenden Informationen, gibt es etwas wirklich Offensichtliches, das die schlechte Leistung verursacht?
Danke
Chris
Hier sind einige Fakten / Zahlen über unser SVN-Setup
Bearbeiten
Es könnte sich lohnen, hinzuzufügen, dass wenn wir verzweigen / zusammenführen, wir von trunk abzweigen und immer den gesamten Zweig zurück in trunk zusammenführen. Also alle Mergeinfo ist auf dem Stamm (und Filialen) Ordner.
Schlussfolgerungen
In meinem Fall schien es der Plattenzugriff zu sein, der den Engpass im Zusammenführungsprozess darstellte - wenn ich meinen Quellbaum von meiner Festplatte auf meine SSD verlagerte, ging die gleiche Zusammenführung von 50 +/- 5s auf 7 + / - 1s.
Die Beobachtung des Tortoise-SVN-Prozesses im Prozess-Explorer während der Zusammenführung war ziemlich bezeichnend: Während der Zusammenführung auf meiner Festplatte lagen die I / O-Bytes für die meiste Zeit zwischen 500 kb / s und 3 mb / s. Auf der SSD waren die E / A-Bytes bis zu 10-20 MB / s. [Etwas verwirrenderweise waren einige Zusammenführungen auf meiner HDD von vergleichbarer Geschwindigkeit (und E / A-Bytes waren ähnlich hoch) wie auf meiner SSD - in diesen Fällen nehme ich an, dass viele der gelesenen Dateien bereits im Windows-Dateicache waren ].
Ich fand die folgende erhöhte Mischgeschwindigkeit
Sie können auch versuchen, in einem kürzeren Baum zusammenzuführen, um festzustellen, ob es schneller zurückkehrt, um zu sehen, ob der kleinere Baum einen Unterschied macht.
Hinweis: In der letzten Version gab es eine Menge von Merge-bezogenen Verbesserungen, siehe untenstehenden Link
Aktualisieren auf die letzte Hilfe möglicherweise.
Eine Sache, die ich beim Zusammenführen bemerkt habe, ist, dass Zusammenführungen, die das Verzeichnis der obersten Ebene verwenden, sehr schnell sind. Das Zusammenführen eines Feature-Zweiges zurück zum Trunk oder das Zusammenführen eines Revisionsbereichs von Trunk zu Feature-Zweig ist also schnell. Die Änderungen an einer bestimmten Datei in der Arbeitskopie sind jedoch extrem langsam. Aus diesem Grund verzweige ich immer den gesamten Stamm und ändere dann die Dateien, die ich brauche, um das Ganze zusammenzufügen. Wenn Ihre Verzweigung also aus dem Unterverzeichnis eines Trunks erstellt wurde, ist dies möglicherweise der Grund, warum sie sehr langsam ist.
Ein weiterer Faktor ist das relative Delta zwischen den beiden Zweigen. Wenn Sie zum Beispiel einen Zweig von der Amtsleitung abzweigen und dann einen Monat später die Amtsleitung in die Zweigniederlassung zusammenführen, wird dies relativ lange dauern. Auf der anderen Seite, wenn Sie jeden Tag aus Stamm in Ihre Branche zusammenführen, wird dies relativ schnell sein.
Tags und Links merge svn performance