Revisionsgraphen

Abbildung 4.64. Ein Revisionsgraph

Ein Revisionsgraph


Manchmal möchten Sie wissen, wann Zweige oder Marken vom Stamm abgespalten wurden. Der ideale Weg, um dies zu untersuchen, ist ein Graph oder eine Baumstruktur. Dafür gibt es den TortoiseSVNRevisionsgraph

Dieser Befehl analysiert die Revisionsgeschichte und versucht, eine Baumstruktur mit den Zeitpunkten darzustellen, in denen Kopien oder Zweige/Marken erstellt bzw. gelöscht wurden.

Wichtig

Um den Revisionsgraphen zu erzeugen, muss TortoiseSVN alle Logmeldungen von der Basis des Projektarchivs holen. Überflüssig zu sagen, dass diese Aktion in Abhängigkeit von Netzwerk- und Servergeschwindigkeit bereits bei wenigen tausend Revisionen mehrere Minuten in Anspruch nehmen kann. Wenn Sie sich den Revisionsgraphen des Apache-Projektes mit derzeit über 500.000 Revisionen anzeigen lassen, sollten Sie sich auf eine längere Wartezeit einstellen.

Die gute Nachricht ist, dass Sie diese Wartezeit nur einmal ertragen müssen, wenn Sie den Log-Puffer benutzen. Danach werden die Logdaten lokal vorgehalten. Der Log-Puffer wird in den TortoiseSVN-Einstellungen aktiviert.

Knoten des Revisionsgraphen

Jeder Knoten des Revisionsgraphen entspricht einer Revision im Projektarchiv, in dem sich etwas in dem von Ihnen betrachteten Baum geändert hat. Verschiedene Knotentypen können anhand ihrer Form und Farbe unterschieden werden. Die Formen sind fest vorgegeben, die Farben können über TortoiseSVNEinstellungen geändert werden.

Hinzugefügte oder kopierte Objekte

Elemente, die hinzugefügt oder durch Kopieren erstellt wurden, werden als abgerundetes Rechteck dargestellt. Die Standardfarbe ist grün. Marken und der Stamm werden als Sonderfall behandelt und in einer anderen Schattierung dargestellt, die Sie in TortoiseSVNOptionen anpassen können.

Gelöschte Objekte

Gelöschte Elemente wie z. B. ein Zweig, der nicht länger benötigt wird, werden als Achteck dargestellt. Die Standardfarbe ist rot.

Umbenannte Objekte

Umbenannte Objekte werden ebenfalls als Achteck angezeigt, aber die Standardfarbe ist blau.

Spitze eines Zweiges

Der Graph beschränkt sich normalerweise darauf, die Verzweigungspunkte anzuzeigen. Manchmal ist es aber auch nützlich, die entsprechenden HEAD-Revisionen jedes Zweiges zu sehen. Wenn Sie Zeige HEAD-Revisionen aktivieren, wird jede HEAD-Revision als Ellipse angezeigt. Beachten Sie bitte, dass HEAD sich in diesem Fall auf die zuletzt übertragene Revision des Zweiges und nicht des gesamten Projektarchivs bezieht.

Revision der Arbeitskopie

Wenn Sie den Revisionsgraphen aus einer Arbeitskopie heraus aufgerufen haben, können Sie sich die BASE-Revision der Arbeitskopie durch eine fette Umrandung anzeigen lassen, indem Sie Zeige Revision der Arbeitskopie aktivieren.

Veränderte Arbeitskopie

Falls Sie den Revisionsgraphen aus einer Arbeitskopie heraus aufgerufen haben, können sie sich den Änderungsstatus Ihrer Arbeitskopie mit Änderungen in Arbeitskopie anzeigen in einem zusätzlichen Knoten anzeigen lassen. Dieser Knoten ist standardmäßig rot mit fettem Rand.

Normale Objekte

Alle anderen Elemente werden durch ein einfaches Rechteck dargestellt.

Beachten Sie, dass in der Standardansicht der Graph nur die Punkte zeigt, an denen Elemente hinzugefügt, kopiert oder gelöscht wurden. Alle Revisionen eines Projektes anzuzeigen würde in nicht-trivialen Fällen einen riesigen Graphen erzeugen. Wenn Sie wirklich alle Revisionen sehen wollen, können Sie dies über einen Schalter in der Werkzeugleiste oder im Menü Ansicht aktivieren.

Die Standardansicht (Gruppierung aus) platziert die Knoten so, dass die vertikale Position strikt der Revisionsreihenfolge entspricht, sodass Sie einen Hinweis auf die Abfolge der Ereignisse haben. Befinden sich zwei Knoten in derselben Spalte, ist die Reihenfolge offensichtlich. Bei benachbarten Spalten ist der Versatz viel kleiner und die Reihenfolge weniger offensichtlich, da nicht darauf geachtet werden muss, dass die Knoten sich nicht überlappen. Solche Optimierungen sind nötig, um komplexe Graphen auf eine vertretbare Größe zu reduzieren. Bitte beachten Sie, dass diese Ordnung die Kante des Knotens auf der älteren Seite als Referenz verwendet, d. h., die untere Kante des Knotens, wenn der Graph mit dem ältesten Knoten unten angezeigt wird. Die Referenzkante ist wichtig, weil die Formen der Knoten nicht alle dieselbe Höhe haben.

Die Ansicht ändern

Da ein Revisionsgraph häufig sehr komplex ist, stehen einige Funktionen zur Verfügung, mit denen Sie die Ansicht an Ihre Wünsche anpassen können. Diese stehen im Menü Ansicht sowie in der Menüleiste zur Verfügung.

Zweige zusammenfassen

Die Vorgabe (Gruppieren aus) sortiert alle Zeilen strikt nach der Revisionsnummer. Dadurch belegen langlebige Zweige selbst mit nur wenigen Änderungen eine ganze Spalte und der Graph wird sehr breit.

Dieser Modus gruppiert Änderungen in Zweigen, sodass es keine globale Sortierung nach Revisionen gibt. Aufeinanderfolgende Revisionen eines Zweiges werden (häufig) in aufeinanderfolgenden Zeilen angezeigt. Unterzweige hingegen werden so angeordnet, dass spätere Zweige in derselben Spalte über früheren liegen, um den Graphen schmal zu halten. Als Folge kann eine Zeile Änderungen aus verschiedenen Revisionen enthalten.

Älteste nach oben

Normalerweise zeigt der Graph die ältesten Revisionen unten und der Revisionsbaum wächst nach oben. Mit dieser Option lassen Sie den Graphen von oben nach unten wachsen.

Bäume oben ausrichten

Wenn ein Graph in mehrere kleine Bäume aufgespalten wird, werden diese je nachdem, ob Sie Zweige zusammenfassen aktiviert haben, in der natürlichen Revisionsreihenfolge oder an der Unterkante des Fensters angezeigt. Mit dieser Option werden die Bäume von der Oberkante aus aufgebaut.

Überschneidungen reduzieren

Diese Option ist normalerweise aktiviert und vermeidet, dass der Graph viele sich überschneidende Linien enthält. Das kann jedoch dazu führen, dass manche Spalten im Layout an unlogischen Positionen erscheinen und dass der Graph mehr Platz zur Darstellung benötigt. Wenn dieses Problem auftritt, können Sie die Option im Menü Ansicht deaktivieren.

Differenzielle Pfadnamen

Lange Pfadnamen brauchen viel Platz und machen die Knoten unnötig breit. Mit dieser Option werden nur die unterschiedlichen Teile des Pfades angezeigt und die übereinstimmenden Teile durch Punkte ersetzt. Wenn Sie z. B. /branches/1.2.x/doc/html aus /trunk/doc/html erstellen, kann der Zweig in der kompakten Form als /branches/1.2.x/.. angezeigt werden, weil die zwei Ebenen doc und html sich nicht geändert haben.

Alle Revisionen zeigen

Diese Funktion zeigt jede Revision des Graphen, in der sich etwas geändert hat, als separaten Knoten an. Bei älteren Projekten mit vielen Revisionsnummern kann das zu einem riesigen Graphen führen.

HEAD-Revisionen zeigen

Diese Option stellt sicher, dass immer die neuesten Revisionen aller Zweige im Graphen angezeigt werden.

Exakte Quellen der Kopien

Wenn eine Verzweigung/Markierung angelegt wird, ist das Standardverhalten, den Zweig so anzuzeigen, als sei er vom letzten geänderten Knoten abgeleitet. Genau genommen ist das inkorrekt, da Zweige häufig von der HEAD-Revision und nicht einer bestimmten Revision erstellt werden. Hiermit ist es möglich, die korrektere (aber weniger nützliche) Revision anzuzeigen, aus der der Zweig wirklich angelegt wurde. Beachten Sie bitte, dass diese Revision jünger als die HEAD-Revision des Quellzweiges sein kann.

Marken zusammenklappen

Wenn ein Projekt viele Marken enthält, würde es viel Platz beanspruchen, alle diese Marken darzustellen und wichtigere Teile der Verzweigungsstruktur verschleiern. Gleichzeitig möchten Sie einfach auf die Marken zugreifen können, um Revisionen zu vergleichen. Diese Option verbirgt die Knoten für Marken und zeigt sie stattdessen im Hinweistext des Knotens an, von dem aus sie erstellt wurden. Ein Symbol am rechten Rand des Quellknotens zeigt an, dass eine Marke erstellt wurde. Dies vereinfacht die Anzeige erheblich.

Beachten Sie, dass, wenn eine Marke selbst als Quelle für eine Kopie dient, vielleicht ein neuer Zweig, der auf einer Marke basiert, diese Marke als separaten Knoten und nicht zusammengeklappt dargestellt wird.

Gelöschte Pfade verbergen

Blendet Pfade aus, die in der HEAD-Revision des Projektarchivs nicht mehr existieren, z. B. gelöschte Pfade.

Wenn Sie die Option Marken zusammenklappen aktiviert haben, werden gelöschte Zweige, von denen Marken erstellt wurden, immer noch angezeigt, da andernfalls die Marken ebenfalls verschwinden würden. Die letzte Revision der Marke wird, statt einer separaten Revision, in der Farbe für gelöschte Knoten angezeigt.

Wenn Sie die Option Marken verbergen wählen, werden diese Zweige wieder verschwinden, da sie zum Anzeigen der Marken nicht mehr erforderlich sind.

Ungenutzte Zweige verbergen

Blendet Pfade aus, in denen keine Änderungen an dem gewählten Objekt in das Projektarchiv übertragen wurden. Das bedeutet nicht, dass der Zweig nicht benutzt wurde, sondern dass dieser Teil des Zweiges nicht verändert wurde.

Arbeitskopie-Revisionen anzeigen

Hebt die Revision im Graphen hervor, die der Revision des Objekts entspricht, für das Sie den Graphen anzeigen. Wenn Sie gerade Ihre Arbeitskopie aktualisiert haben, wird das HEAD sein. Wenn aber andere nach der Aktualisierung noch Änderungen übertragen haben, kann Ihre Arbeitskopie ein paar Revisionen niedriger sein. Der Knoten wird durch eine fette Umrandung gekennzeichnet.

Änderungen der Arbeitskopie zeigen

Wenn Ihre Arbeitskopie lokale Änderungen enthält, wird sie durch diese Option als ein zusätzlicher, elliptischer Knoten angezeigt, der mit der Revision verknüpft ist, zu der Ihre Arbeitskopie aktualisiert wurde. Sie müssen den Graphen unter Umständen mit F5 aktualisieren, um neuere Änderungen angezeigt zu bekommen.

Filter

Manchmal zeigt der Revisionsgraph mehr Details an, als Sie eigentlich sehen wollen. Diese Funktion öffnet einen Dialog, mit dem Sie den angezeigten Revisionsbereich einschränken oder bestimmte Pfade über ihre Namen ausschließen können.

Wenn Sie einen bestimmten Pfad ausblenden und dieser Knoten über Unterknoten verfügt, werden die Kinder als separater Baum angezeigt. Wenn Sie die Kinder ebenfalls verbergen wollen, aktivieren Sie die Option Den gesamten Teilbaum entfernen.

Baumstreifen

Wenn der Graph mehrere Bäume enthält, ist es oft nützlich, zur Unterscheidung der Bäume abwechselnde Farben im Hintergrund zu haben.

Gesamtübersicht anzeigen

Zeigt ein kleines Übersichtsbild des gesamten Graphen mit dem aktuellen Ausschnitt als Rechteck. Sie können dieses Rechteck verschieben, um einfach durch den Graphen zu navigieren. Beachten Sie bitte, dass die Übersicht bei sehr großen Graphen aufgrund der starken Verkleinerung nutzlos ist und in diesen Fällen nicht angezeigt wird.

Den Graphen verwenden

Um die Navigation durch einen großen Graphen zu vereinfachen, steht das Übersichtsfenster zur Verfügung. Darin wird der vollständige Graph sowie der aktuelle Ausschnitt hervorgehoben dargestellt. Sie können den aktuellen Ausschnitt verschieben, um den angezeigten Bereich zu verändern.

Das Datum, der Autor und die Logmeldung der Revision werden in einem Hinweistext angezeigt, sobald die Maus über ein Element bewegt wird.

Wenn Sie mit Strg-Linksklick zwei Revisionen markieren, können Sie sich über das Kontextmenü die Unterschiede zwischen diesen Revisionen anzeigen lassen. Sie können wählen, ob Sie die Unterschiede am Anfang oder am Ende der Zweige, sprich den HEAD-Revisionen, vergleichen wollen.

Sie können sich die Unterschiede im Standard-Diff-Format anzeigen lassen, das alle Unterschiede in einer einzelnen Datei mit minimalem Kontext zeigt. Wenn Sie KontextmenüRevisionen vergleichen wählen, wird Ihnen eine Liste der geänderten Dateien angezeigt. Mit einem Doppelklick auf einen Dateinamen werden beide Revisionen geholt und in Ihrem Diff-Betrachter angezeigt.

Mit einem Rechtsklick auf eine Revision können Sie sich per KontextmenüZeige Log die Historie anzeigen lassen.

Sie können die Änderungen der gewählten Revisionen auch in einer anderen Arbeitskopie zusammenführen. Ein Ordnerauswahldialog ermöglicht es Ihnen, eine andere Arbeitskopie als Ziel zu wählen, aber danach gibt es weder einen Bestätigungsdialog noch eine Möglichkeit für einen Testlauf. Es ist eine gute Idee, Änderungen in einer unmodifizierten Arbeitskopie zusammenzuführen, sodass Sie diese stets rückgängig machen können, wenn etwas nicht klappt! Dies ist eine nützliche Funktion, wenn Sie bestimmte Revisionen von einem Zweig in einen anderen übertragen wollen.

Lernen Sie, den Revisionsgraphen zu lesen

Neueinsteiger stehen unter Umständen vor dem Problem, dass der Graph nicht das anzeigt, was sie erwarten. Wenn zum Beispiel eine Revision mehrere Kopien oder Zweige einer Datei oder eines Ordners ändert, wird es mehrere Knoten für diese einzelne Revision geben. Es ist ratsam, mit der linken Option in der Werkzeugleiste zu beginnen und den Graphen schrittweise an die eigene Vorstellung anzupassen.

Sämtliche Filteroptionen versuchen, so viel Information wie möglich beizubehalten. Das kann unter anderem dazu führen, dass sich die Farbe einiger Knoten ändert. Wann immer ein Ergebnis unerwartet ist, nehmen Sie die letzte Filteroperation zurück und versuchen Sie herauszufinden, was das Besondere an dieser Revision oder diesem Zweig ist. In den meisten Fällen ist das zunächst erwartete Filterergebnis ungenau oder irreführend.

Die Ansicht aktualisieren

Wenn Sie den Server auf neue Informationen überprüfen wollen, können Sie die Sicht einfach per F5 aktualisieren. Falls Sie den Log-Puffer verwenden (standardmäßig aktiv), wird das Projektarchiv auf neue Übertragungen abgefragt und nur diese werden geholt. Wenn der Log-Puffer offline war, wird gleichzeitig versucht, ihn wieder online zu schalten.

Falls Sie den Log-Puffer verwenden und denken, dass sich der Inhalt oder der Autor einer Logmeldung geändert haben, sollten Sie den Log-Dialog aufrufen, um darüber die gewünschten Meldungen zu aktualisieren. Da der Revisionsgraph von der Wurzel des Projektarchivs ausgeht, müssten wir den gesamten Log-Puffer ungültig machen und erneut aufbauen, was sehr viel Zeit in Anspruch nehmen kann.

Zweige ausdünnen

Es kann schwierig sein, in einem großen Baum zu navigieren. Eventuell möchten Sie Teile ausblenden oder den Graphen in einen Wald aus kleineren Bäumen aufspalten. Wenn Sie mit der Maus über den Punkt fahren, an dem ein Verweis einen Knoten betritt oder verlässt, sehen Sie eine oder mehrere Schaltflächen mit den entsprechenden Funktionen.

Klicken Sie auf die Minus-Schaltfläche, um den angehängten Teilbaum zusammenzuklappen.

Klicken Sie auf die Plus-Schaltfläche, um den Baum aufzuklappen. Wenn ein Baum zusammengeklappt wird, bleibt diese Schaltfläche sichtbar, um den verborgenen Teilbaum anzuzeigen.

Klicken Sie auf die Kreuz-Schaltfläche, um den angehängten Teilbaum abzuspalten und als separaten Baum im Graphen anzuzeigen.

Klicken Sie auf die Kreis-Schaltfläche, um einen abgespaltenen Teilbaum wieder einzuhängen. Wenn ein Teilbaum abgespalten wurde, bleibt diese Schaltfläche sichtbar, um anzuzeigen, dass es einen separaten Teilbaum gibt.

Klicken Sie auf den Hintergrund des Graphen, um das Kontextmenü aufzurufen, dass die Funktionen Alle aufklappen und Alle verbinden bietet. Wenn noch kein Zweig zugeklappt oder aufgetrennt wurde, wird das Kontextmenü nicht angezeigt.