TortoiseSVN

Ein Subversion-Client für Windows

Version 1.14

Stefan Küng

Lübbe Onken

Simon Large

Stefan Küng

Übersetzung 

Lübbe Onken

Übersetzung 

2022/09/06 19:53:28 (r29447)


Inhaltsverzeichnis

Vorwort
Was ist TortoiseSVN?
Eigenschaften von TortoiseSVN
Lizenz
Entwicklung
Geschichte von TortoiseSVN
Danksagung
Lesetipps
In diesem Dokument verwendete Terminologie
1. Vorbereitungen
Installation von TortoiseSVN
Systemanforderungen
Installation
Grundlegende Konzepte
Machen Sie eine Testrunde
Erstellen eines Projektarchivs
Importieren eines Projekts
Eine Arbeitskopie auschecken
Änderungen vornehmen
Weitere Dateien hinzfügen
Die Projekthistorie betrachten
Änderungen rückgängig machen
Weiter geht’s ...
2. Grundlagen der Versionskontrolle
Das Projektarchiv
Versionierungsmodelle
Das Problem des gemeinsamem Dateizugriffs
Die Sperren-Ändern-Freigeben-Lösung
Die Kopieren-Ändern-Zusammenführen-Lösung
Was macht Subversion?
Subversion bei der Arbeit
Arbeitskopien
Projektarchiv-URLs
Revisionen
Wie Arbeitskopien das Projektarchiv verfolgen
Zusammenfassung
3. Das Projektarchiv
Projektarchiv erstellen
Ein Projektarchiv mit dem Kommandozeilen-Client erstellen
Erstellen eines Projektarchivs mit TortoiseSVN
Lokaler Zugriff auf das Projektarchiv
Projektarchiv auf einer Netzwerkfreigabe
Struktur des Projektarchivs
Projektarchiv sichern
Serverseitige Aktionsskripte
Auschecken aus Webseiten
Zugriff auf das Projektarchiv
4. Anleitung zum täglichen Gebrauch
Allgemeine Eigenschaften
Überlagerte Symbole
Kontextmenüs
Ziehen und Ablegen
Tastaturkürzel
Anmeldung
Fenster maximieren
Daten in ein Projektarchiv importieren
Import
Import an Ort und Stelle
Spezielle Dateien
Eine Arbeitskopie auschecken
Rekursionstiefe
Ihre Änderungen ins Projektarchiv übertragen
Der Übertragen-Dialog
Änderungslisten
Nur Teile von Dateien übertragen
Objekte vom Übertragen ausschließen
Logmeldungen
Fortschrittsdialog
Aktualisieren der Arbeitskopie mit Änderungen von anderen
Konflikte auflösen
Dateikonflikte
Eigenschaftskonflikte
Baumkonflikte
Statusinformationen anzeigen
Überlagerte Symbole
Detaillierter Status
Prüfe auf Änderungen
Unterschiede anzeigen
Änderungslisten
Zurückstellen
Log-Dialog
Den Log-Dialog starten
Aktionen im Revisionslog
Zusätzliche Informationen erhalten
Weitere Logmeldungen holen
Aktuelle Revision der Arbeitskopie
Datenintegration protokollieren
Ändern der Logmeldung und des Autors
Logmeldungen filtern
Statistiken anzeigen
Offline-Modus
Die Ansicht aktualisieren
Unterschiede anzeigen
Datei-Unterschiede
Zeilenende- und Leerzeichenoptionen
Ordner vergleichen
Bilder mit TortoiseIDiff vergleichen
Office-Dokumente vergleichen
Externe Programme
Neue Dateien und Ordner hinzufügen
Dateien oder Ordner kopieren/umbenennen/verschieben
Ignorieren von Dateien und Ordnern
Platzhalter in der Ignorierliste
Löschen, Verschieben und Umbenennen
Löschen von Dateien und Ordnern
Dateien und Ordner verschieben
Behandeln von Konflikten in der Groß-/Kleinschreibung
Externes Umbenennen reparieren
Nicht versionierte Dateien löschen
Änderungen rückgängig machen
Bereinigen
Projekt-Einstellungen
Subversion-Eigenschaften
TortoiseSVN-Projekteigenschaften
Eigenschaftseditoren
Externe Objekte
Externe Ordner
Externe Dateien
Externals per Ziehen und Ablegen erstellen
Verzweigen / Markieren
Einen Zweig oder eine Marke erstellen
Andere Wege, einen Zweig oder eine Marke erstellen
Auschecken oder Wechseln...
Zusammenführen
Einen Revisionsbereich zusammenführen
Zusammenführen zweier Bäume
Optionen beim Zusammenführen
Ergebnisse des Zusammenführens betrachten
Verfolgung der Datenintegration
Behandlung von Konflikten nach dem Zusammenführen
Wartung des Funktionszweiges
Sperren
Sperren von Dateien in Subversion
Eine Sperre erhalten
Eine Sperre freigeben
Den Sperrstatus prüfen
Nicht gesperrte Dateien mit Schreibschutz versehen
Aktionsskripte für Sperren
Erzeugen und Anwenden von Patches
Eine Patch-Datei erstellen
Eine Patchdatei anwenden
Wer hat welche Zeile geändert?
Annotieren für Dateien
Unterschiede annotieren
Projektarchivbetrachter
Revisionsgraphen
Knoten des Revisionsgraphen
Die Ansicht ändern
Den Graphen verwenden
Die Ansicht aktualisieren
Zweige ausdünnen
Eine Arbeitskopie exportieren
Eine Arbeitskopie aus der Versionskontrolle entfernen
Eine Arbeitskopie umplatzieren
Integration mit einem System zur Fehlerverfolgung
Eintragsnummern in Logmeldungen einfügen
Informationen vom Fehlerverfolgungssystem beziehen
Integration mit webbasierten Projektarchivbetrachtern
TortoiseSVN-Einstellungen
Allgemeine Einstellungen
Einstellungen des Revisionsgraphen
Überlagerte Symbole
Netzwerk-Einstellungen
Einstellungen für externe Programme
Gespeicherte Daten
Log-Puffer
Clientseitige Aktionsskripte
TortoiseBlame-Einstellungen
TortoiseUDiff-Einstellungen
Exportieren von TSVN-Einstellungen
Erweiterte Einstellungen
Letzter Schritt
5. Projektmonitor
Projekte zum Monitor hinzufügen
Monitordialog
Hauptaktionen
6. Das SubWCRev-Programm
Die SubWCRev-Kommandozeile
Schlüsselwortersetzung
Beispiele für Schlüsselwörter
COM-Schnittstelle
7. IBugtraqProvider-Schnittstelle
Namenskonventionen
Die IBugtraqProvider-Schnittstelle
Die IBugtraqProvider2-Schnittstelle
A. Häufig gestellte Fragen (FAQ)
B. Wie kann ich...
Viele Dateien auf einmal verschieben / kopieren
Anwender zwingen, eine Logmeldung einzugeben
Aktionsskript auf dem Server
Projekteigenschaft setzen
Gezielt Dateien aus dem Projektarchiv aktualisieren
Revisionen im Projektarchiv rückgängig machen
Mit Hilfe des Log-Dialogs
Mit Hilfe des Zusammenführen-Dialogs
Mit Hilfe von svndumpfilter
Zwei Revisionen einer Datei oder eines Ordners vergleichen
Ein gemeinsames Unterprojekt einbinden
Die Eigenschaft svn:externals
Verschachtelte Arbeitskopien
Relative Pfade
Das Projekt zum Projektarchiv hinzufügen
Eine Verknüpfung zu einem Projektarchiv erstellen
Dateien ignorieren, die bereits unter Versionskontrolle sind
Eine Arbeitskopie aus der Versionskontrolle nehmen
Eine Arbeitskopie löschen
C. Tipps für Administratoren
TortoiseSVN über Gruppenrichtlinien verteilen
Die Versionsprüfung umleiten
Die Umgebungsvariable SVN_ASP_DOT_NET_HACK setzen
Kontextmenüeinträge deaktivieren
D. TortoiseSVN automatisieren
TortoiseSVN-Befehle
Tsvncmd-URL-Behandlung
TortoiseIDiff-Befehle
TortoiseUDiff-Befehle
E. Befehle der Kommandozeile
Grundregeln und Konventionen
TortoiseSVN-Befehle
Auschecken
Aktualisieren
Aktualisieren zu Revision
Übertragen
Vergleich
Zeige Log
Prüfe auf Änderungen
Revisionsgraph
Projektarchivbetrachter
Konflikt bearbeiten
Konflikt aufgelöst
Umbenennen
Löschen
Änderungen rückgängig
Bereinigen
Sperre holen
Sperre freigeben
Verzweigen/Markieren
Wechseln
Zusammenführen
Export
Umplatzieren
Projektarchiv hier erstellen
Hinzufügen
Import
Annotieren
Zur Ignorierliste hinzufügen
Erzeuge Patch
Patch anwenden
F. Implementierungsdetails
Überlagerte Symbole
G. Sprachpakete und Rechtschreibprüfung
Sprachpakete
Rechtschreibprüfung
Glossar
Stichwortverzeichnis

Abbildungsverzeichnis

1.1. Das TortoiseSVN Menü für unversionierte Ordner
1.2. Der Import-Dialog
1.3. Dateiunterschiede betrachten
1.4. Der Log-Dialog
2.1. Ein typisches Client-Server-System
2.2. Das zu vermeidende Problem
2.3. Die Sperren-Ändern-Freigeben-Lösung
2.4. Die Kopieren-Ändern-Zusammenführen-Lösung
2.5. ...Kopieren-Ändern-Zusammenführen fortgesetzt
2.6. Das Dateisystem des Projektarchivs
2.7. Das Projektarchiv
3.1. Das TortoiseSVN Menü für unversionierte Ordner
4.1. Explorer mit überlagerten Symbolen
4.2. Kontextmenü für einen Ordner unter Versionskontrolle
4.3. Explorer-Kontextmenü für Verknüpfungen in einem versionierten Ordner
4.4. Rechts-Ziehen-Menü für einen Ordner unter Versionskontrolle
4.5. Anmeldedialog
4.6. Der Import-Dialog
4.7. Der Auschecken-Dialog
4.8. Der Übertragen-Dialog
4.9. Rechtschreibprüfung beim Eingeben einer Logmeldung
4.10. Eine laufende Übertragung im Fortschrittsdialog
4.11. Der Fortschrittsdialog nach Abschluss der Aktualisierung
4.12. Explorer mit überlagerten Symbolen
4.13. Explorer-Eigenschaftsseite, Subversion-Tab
4.14. Prüfe auf Änderungen
4.15. Der Übertragen-Dialog mit Änderungsliste
4.16. Zurückstellen-Dialog
4.17. Hervorholen-Dialog
4.18. Der Log-Dialog
4.19. Das Kontextmenü des Log-Dialogs
4.20. Der Code Collaborator-Einstellungsdialog
4.21. Kontextmenü des Log-Dialogs für zwei ausgewählte Revisionen
4.22. Kontextmenü der Dateiliste des Log-Dialogs
4.23. Der untere Bereich im Log-Dialog mit angezeigtem Kontextmenü, wenn mehrere Dateien ausgewählt sind.
4.24. Der Log-Dialog mit bereits zusammengeführten Revisionen
4.25. Übertragungen per Autor als Histogramm
4.26. Übertragungen per Autor als Tortendiagramm
4.27. Das Diagramm Übertragungen nach Datum
4.28. Der Dialog zum Offline gehen
4.29. Der Dialog zum Vergleichen von Revisionen
4.30. Ein Programm zum Vergleichen von Bildern
4.31. Explorer-Kontextmenü für nicht versionierte Dateien
4.32. Rechts-Ziehen-Menü für einen Ordner unter Versionskontrolle
4.33. Explorer-Kontextmenü für nicht versionierte Dateien
4.34. Explorer-Kontextmenü für Dateien unter Versionskontrolle
4.35. Rückgängig-Dialog
4.36. Der Aufräumen-Dialog
4.37. Subversion-Eigenschaftsseite
4.38. Eigenschaften hinzufügen
4.39. Eigenschaftsdialog für Aktionsskripte
4.40. Boolesche Benutzerdaten im Eigenschaftsdialog
4.41. Eigenschaftsseite svn:externals
4.42. Eigenschaftsseite svn:keywords
4.43. Eigenschaftsseite svn:eol-style
4.44. Eigenschaftsseite tsvn:bugtraq
4.45. Eigenschaften der Logmeldungen
4.46. Sprach-Eigenschaftsseite
4.47. Eigenschaftsseite svn:mime-type
4.48. Eigenschaftsseite svn:needs-lock
4.49. Eigenschaftsseite svn:executable
4.50. Eigenschaftsdialog Vorlage für Zusammenführen-Log
4.51. Der Verzweigen/Markieren-Dialog
4.52. Der Wechseln-Zu-Dialog
4.53. Der Assistent - Revisionsbereich wählen
4.54. Der Assistent - Zusammenführen von Bäumen
4.55. Der Zusammenführen-Konfliktdialog
4.56. Der Dialog zum Zusammenführen von Baumkonflikten
4.57. Der Alles-Zusammenführen-Dialog
4.58. Der Sperren-Dialog
4.59. Der Dialog Prüfe auf Änderungen
4.60. Der Erzeuge Patch-Dialog
4.61. Der Annotieren-Dialog
4.62. TortoiseBlame
4.63. Projektarchivbetrachter
4.64. Ein Revisionsgraph
4.65. Der Dialog für Exportiere von URL
4.66. Der Umplatzieren-Dialog
4.67. Der Dialog Bugtraq-Eigenschaften
4.68. Beispielabfrage des Fehlerverfolgungssystems
4.69. Der Einstellungsdialog, Allgemein
4.70. Der Einstellungsdialog, Kontextmenü
4.71. Der Einstellungsdialog, Seite 1
4.72. Der Einstellungsdialog, Seite 2
4.73. Der Einstellungsdialog, Seite 3
4.74. Der Einstellungsdialog, Farben
4.75. Der Einstellungsdialog, Revisionsgraph
4.76. Der Einstellungsdialog, Farben des Revisionsgraphen
4.77. Der Einstellungsdialog, Symbolauswahl
4.78. Der Einstellungsdialog, Symbolauswahl
4.79. Der Einstellungsdialog, verwendete Symbole
4.80. Der Einstellungsdialog, Netzwerkseite
4.81. Der Einstellungsdialog, externe Programme
4.82. Erweiterte Einstellungen für Vergleichs- und Konflikteditor
4.83. Der Einstellungsdialog, gespeicherte Daten
4.84. Der Einstellungsdialog, Log-Puffer
4.85. Der Einstellungsdialog, Log-Puffer-Statistiken
4.86. Der Einstellungsdialog, Aktionsskripte
4.87. Der Einstellungsdialog, Aktionsskripte einrichten
4.88. Der Einstellungsdialog, Integration eines Fehlerverfolgungssystems
4.89. Der Einstellungsdialog, TortoiseBlame
4.90. Der Einstellungsdialog, TortoiseUDiff
4.91. Der Einstellungsdialog, Synchronisation
4.92. Anwendungsleiste mit Standardgruppierung
4.93. Anwendungsleiste mit Gruppierung nach Projektarchiv
4.94. Anwendungsleiste mit Gruppierung nach Projektarchiv
4.95. Gruppierte Anwendungsleiste mit überlagerten Farben für die Projektarchive
5.1. Der Dialog zum Bearbeiten der Projekte
5.2. Der Hauptdialog des Projektmonitors
B.1. Das TortoiseSVN Rechts-Drag Kontextmenu um Dateien zu verschieben
C.1. Der Übertragen-Dialog mit der Aktualisierungsbenachrichtigung.

Tabellenverzeichnis

2.1. Zugriffs-URLs für das Projektarchiv
4.1. Fixe Revision
6.1. Liste der Kommandozeilenoptionen
6.2. Liste der SubWCRev-Fehlercodes
6.3. Liste verfügbarer Schlüsselwörter
6.4. Unterstützte COM-Automatisierungen
C.1. Menüeinträge und ihre Werte
D.1. Liste der Befehle und Parameter
D.2. Liste der Parameter
D.3. Liste der Parameter

Vorwort

Versionskontrolle ist die Kunst, die Kontrolle über Änderungen an Informationen zu behalten. Es ist seit langer Zeit ein unverzichtbares Hilfsmittel für Programmierer, die üblicherweise ihre Zeit damit verbringen, kleine Änderungen an Software vorzunehmen, um diese dann am nächsten Tag zurücknehmen oder zu prüfen. Stellen Sie sich ein Team von solchen Programmierern vor, die gleichzeitig am selben Projekt - und vielleicht sogar an denselben Dateien! - arbeiten und Sie können erkennen, warum ein gutes Versionskontrollsystem notwendig ist, um das mögliche Chaos im Griff zu behalten.

Was ist TortoiseSVN?

TortoiseSVN ist ein freies Open-Source-Programm für das Apache™ Subversion®-Versionskontrollsystem. Das heißt, TortoiseSVN verwaltet Dateien und Ordner im Laufe der Zeit. Dateien werden in einem zentralen Projektarchiv gespeichert. Das Projektarchiv entspricht einem normalen Dateiserver mit der Besonderheit, dass sämtliche Änderungen protokolliert werden. Dies erlaubt es, ältere Versionen von Dateien zurückzuholen und Änderungen mit der Zeit zu verfolgen. Aus diesem Grund kann man Subversion auch als eine Art Zeitmaschine betrachten.

Einige Versionskontrollsysteme sind zugleich Konfigurationsmanagementsysteme (Software Configuration Management Systems, SCM). Diese Systeme sind speziell dazu ausgelegt, mit Quelltextstrukturen umzugehen und haben viele Funktionen, die spezifisch für die Softwareentwicklung sind - z.B. bestimmte Programmiersprachen zu verstehen oder Hilfsmittel für die Erstellung von Programmen zur Verfügung zu stellen. Subversion ist jedoch kein solches System; es ist so allgemein gehalten, dass es für jede Ansammlung von Dateien nutzbar ist, einschließlich Quellcode.

Eigenschaften von TortoiseSVN

Was macht TortoiseSVN zu einem guten Subversion-Client? Hier eine Liste der herausragenden Eigenschaften:

Shell Integration

TortoiseSVN fügt sich nahtlos in die Windows Shell (z.B. den Explorer) ein. Das heißt, Sie können weiter mit den gewohnten Programmen arbeiten und müssen sich nicht an ein neues Programm gewöhnen. Und Sie brauchen auch nicht jedes mal erst in ein anderes Programm zu wechseln, wenn Sie Funktionen der Versionskontrolle benötigen.

Und dabei sind Sie nicht einmal gezwungen, den Windows Explorer zu benutzen. Auch in vielen anderen Dateimanagern stehen Ihnen ein Kontextmenü und die Funktionen von TortoiseSVN zur Verfügung, ebenso in den Standard-Datei-Dialogen, die von den meisten Windows-Anwendungen benutzt werden. Sie sollten dabei allerdings beachten, dass TortoiseSVN in der Absicht entwickelt wird, eine Erweiterung des Windows Explorers zu sein. So ist es möglich, dass in anderen Programmen die Integration nicht vollständig ist, also beispielsweise die überlagerten Symbole nicht angezeigt werden.

Überlagerte Symbole

Der Status von jeder Datei unter Versionskontrolle wird durch ein kleines überlagertes Symbol angezeigt. Auf diese Weise können Sie sofort den Zustand Ihrer Arbeitskopie erkennen.

Grafische Benutzeroberfläche

Wenn Sie sich die Änderungen an einer Datei oder einem Ordner anzeigen lassen, können Sie auf die Revision klicken um den Kommentar zu dieser Revision anzusehen. Zusätzlich werden die geänderten Dateien aufgelistet. Indem Sie auf eine Datei doppelklicken, werden die Änderungen an der Datei angezeigt.

Der Übertragen-Dialog listet alle zu übertragenden Objekte auf. Über die Ankreuzfelder können Sie festlegen, welche Objekte übertragen werden sollen. Nicht versionierte Objekte können ebenfalls angezeigt werden, so können Sie neue Dateien leicht zur Versionskontrolle hinzufügen, sollten Sie es zuvor vergessen haben.

Einfacher Zugriff auf Subversion-Befehle

Alle Subversion-Befehle sind über das Kontextmenü des Explorers zugänglich; TortoiseSVN fügt dort sein eigenes Untermenü ein.

Da TortoiseSVN ein Subversion-Client ist, möchten wir auch ein paar Features von Subversion selbst erwähnen:

Versionierung von Verzeichnissen

CVS speichert nur die Geschichte von einzelnen Dateien, aber Subversion implementiert ein virtuelles versioniertes Dateisystem, das auch Änderungen an Ordnern über die Zeit speichert. Dateien und Ordner werden versioniert. Daher gibt es clientseitige Befehle, die Verschieben und Kopieren von Dateien und Ordnern erlauben.

Atomare Übertragungen

Eine Übertragung von Änderungen geht entweder komplett in das Projektarchiv oder gar nicht. Das erlaubt es Entwicklern, Änderungen als logisch zusammenhängende Einheit zu erzeugen und zu übertragen.

Versionierte Metadaten

Jeder Datei und jedem Ordner ist ein unsichtbarer Satz von Eigenschaften zugeordnet. Sie können selbst neue Eigenschaften definieren und jede Art von Schlüssel-Wert-Paaren speichern. Änderungen an Eigenschaften werden versioniert, genauso wie der normale Dateiinhalt.

Auswahl an Netzwerkschichten

Subversion eine abstrakte Programmierschicht für Zugriff auf Projektarchive, die es leicht macht, neue Netzwerkschichten zu implementieren. Subversions fortgeschrittener Netzwerkserver ist ein Modul für den Apache-Webserver, der eine Variante von HTTP namens WebDAV/DeltaV nutzt. Das bringt Subversion einen Vorteil an Stabilität und Interoperabilität, verschiedene Schlüsselfunktionen kommen als kostenlose Zugabe dazu: zum Beispiel Anmeldung, Autorisierung, Netzwerkdatenkompression, Verschlüsselung via SSL und das Betrachten des Projektarchivs in einem Webbrowser. Ein kleinerer Subversion-Server ist ebenfalls vorhanden. Dieser Server nutzt ein eigenes Netzwerkprotokoll, das über SSH getunnelt werden kann.

Konsistente Datenhaltung

Subversion drückt Dateiunterschiede mit Hilfe eines binären Differenzalgorithmus aus, welcher identisch für Text- und Binärdateien arbeitet. Beide Dateiarten werden gleichermaßen komprimiert im Projektarchiv abgespeichert, und jeweils nur diese Differenz wird in beiden Richtungen übers Netzwerk übertragen.

Effizientes Verzweigen und Markieren

Die Kosten für Verzweigen und Markieren müssen nicht proportional zur Projektgröße sein. Subversion erstellt Zweige und Marken durch einfaches Kopieren des Projektes. Dabei wird ein Mechanismus ähnlich dem eines Verweises verwendet. Diese Operationen benötigen deshalb nur wenig Zeit und Speicherplatz.

Lizenz

TortoiseSVN ist ein Open Source Projekt, das unter der GNU General Public License (GPL) entwickelt wird. Es ist frei herunterzuladen und zu nutzen, sowohl privat als auch kommerziell auf einer beliebigen Anzahl von Computern.

Obwohl die meisten Leute den Installer benutzen, haben Sie auch vollen Zugang zum Quellcode des Programms. Sie können diesen mit dem Link https://osdn.net/projects/tortoisesvn/scm/svn/ ansehen. Die aktuelle Entwicklungsversion finden Sie unter /trunk/ und die veröffentlichten Versionen unter /tags/.

Entwicklung

Sowohl TortoiseSVN als auch Subversion werden von einer Gemeinschaft von Personen entwickelt. Diese Leute kommen aus vielen verschiedenen Ländern der Welt und arbeiten zusammen, um diese tollen Programme zu entwickeln.

Geschichte von TortoiseSVN

Tim Kemp fand im Jahr 2002, dass Subversion ein sehr gutes Versionskontrollsystem sei, aber es fehle eine gute grafische Oberfläche dazu. Die Idee einer Windows Shell-Integration wurde von dem Windows-Programm TortoiseCVS für das ältere CVS Versionskontrollsystem inspiriert. Tim studierte den Quellcode von TortoiseCVS und benutzte diesen als Basis für TortoiseSVN. Er startete dann das Projekt, registrierte die Domäne tortoisesvn.org und stellte den Quellcode online zur Verfügung.

Während dieser Zeit suchte Stefan Küng nach einem guten Versionskontrollsystem und fand Subversion und den Quellcode von TortoiseSVN. Da TortoiseSVN noch nicht für den normalen Gebrauch nutzbar war, fing er an, TortoiseSVN weiter zu entwickeln. Schon bald hatte er den größten Teil des Programmcodes neu geschrieben und fügte Funktionen und Befehle hinzu bis zu einem Punkt, wo von dem ursprünglichen Code nichts mehr übrig war.

Während Subversion immer stabiler wurde, zog es immer mehr Benutzer an, welche auch TortoiseSVN als ihren Subversion-Client verwendeten. Die Benutzerzahl wuchs schnell (und wächst täglich weiter). Zu dieser Zeit bot Lübbe Onken an, beim Design zu helfen und kreierte die Symbole und das Logo für TortoiseSVN. Er kümmert sich seitdem auch um die Webseite und betreut die vielen Übersetzer.

Mit der Zeit wurden für andere Versionskontrollsysteme ebenfalls Tortoise-Clients entwickelt, was zu Problemen im Windows Explorer führte. Die Anzahl der überlagerten Symbole im Windows Explorer ist beschränkt und selbst ein Tortoise-Client kann diese Grenze bereits überschreiten. Aus diesem Grund implementierte Stefan Küng die TortoiseOverlays-Komponente, die es allen Tortoise-Clients erlaubt, dieselben überlagerten Symbole zu benutzen. Mittlerweile verwenden alle Open-Source-Tortoise-Clients und selbst einige Nicht-Tortoise-Clients diese geteilte Komponente.

Danksagung

Tim Kemp

für das Starten des TortoiseSVN-Projekts

Stefan Küng

für die harte Arbeit an TortoiseSVN und die Leitung des Projekts

Lübbe Onken

für die schönen Symbole, das Logo, die Dokumentation und das Übersetzungsmanagement

Simon Large

für Erstellung der Dokumentation

Stefan Fuhrmann

für den Log-Cache und den Revisionsgraphen

Das Subversion-Buch

für die großartige Einführung in Subversion und das Kapitel 2, das wir hier kopiert haben.

Das Tigris Style Projekt

für einige der Stile, die in dieser Dokumentation wiederverwendet werden.

Unsere Helfer

für die Patches, Fehlermeldungen und dafür, dass sie anderen helfen, indem Sie Fragen auf unserer Mailingliste beantworten

Unsere Spender

für viele Stunden voll toller Musik, die sie uns geschenkt haben.

Lesetipps

Dieses Buch ist für Computerbenutzer geschrieben, die Subversion für die Versionierung ihrer Daten nutzen wollen, aber den Umgang mit der Kommandozeile nicht gewohnt sind. Da TortoiseSVN eine Windows Shell-Erweiterung ist, wird angenommen, dass der Leser den Umgang mit dem Explorer gewohnt ist und weiß, wie man diesen benutzt.

Dieses Vorwort erklärt das TortoiseSVN Projekt, die Gemeinschaft von Leuten die daran arbeiten sowie die Lizenzbedingungen und die Bedingungen für die Weitergabe der Software.

In Kapitel 1, Vorbereitungen wird erklärt, wie Sie TortoiseSVN auf Ihrem PC installieren und wie Sie es gleich benutzen können.

In Kapitel 2, Grundlagen der Versionskontrolle geben wir eine kurze Einführung in das Versionskontrollsystem Subversion, das TortoiseSVN zugrunde liegt. Dieses Kapitel stammt aus der Dokumentation des Subversion-Projekts und erklärt die verschiedenen Ansätze zur Versionskontrolle und wie Subversion arbeitet.

In Kapitel 3, Das Projektarchiv wird erklärt, wie ein lokales Projektarchiv angelegt wird, damit Sie TortoiseSVN und Subversion auf einem einzigen PC testen können. Weiterhin wird auf die Verwaltung von Projektarchiven eingegangen, was für Projektarchive relevant ist, die sich auf einem Server befinden.

Kapitel 4, Anleitung zum täglichen Gebrauch ist das wichtigste Kapitel der Dokumentation, da darin alle Funktionen von TortoiseSVN sowie ihre Verwendung erklärt werden. Es hat die Form einer Anleitung, beginnend mit dem Auschecken einer Arbeitskopie, Änderungen an dieser, dem Übertragen der Änderungen und so weiter. In den darauf folgenden Abschnitten wird auf fortgeschrittene Themen eingegangen.

Das Kapitel 5, Projektmonitor erklärt, wie Sie Ihre Subversion-Projekte überwachen können, damit Sie keine wichtigen Übertragungen anderer Teammitglieder verpassen.

Kapitel 6, Das SubWCRev-Programm ist ein separates Programm des TortoiseSVN-Pakets, das Informationen aus einer Arbeitskopie extrahieren und in eine Datei schreiben kann. Dieses Programm ist nützlich, um Informationen in die Erzeugung Ihres Projekts einzubeziehen.

Der Anhang B, Wie kann ich... beantwortet einige allgemeine Fragen zu Aufgaben, die anderweitig nicht beschrieben werden.

Der Anhang D, TortoiseSVN automatisieren beschreibt, wie die TortoiseSVN GUI-Dialoge von der Kommandozeile aus aufgerufen werden können. Dies ist nützlich, wenn Sie TortoiseSVN aus Skripten heraus aufrufen, aber trotzdem noch Benutzereingaben benötigen.

In Anhang E, Befehle der Kommandozeile geben wir einen Überblick über die Beziehung zwischen den TortoiseSVN-Befehlen und ihren Äquivalenten im Subversion-Kommandozeilenprogramm svn.exe.

In diesem Dokument verwendete Terminologie

Um das Lesen der Dokumentation einfacher zu gestalten, sind die Namen aller Masken und Menüs von TortoiseSVN in einer anderen Schrift hervorgehoben. Der Log-Dialog zum Beispiel.

Eine Menüauswahl wird durch einen Pfeil angedeutet. TortoiseSVNZeige Log bedeutet: Wählen Sie Zeige Log aus dem TortoiseSVN Kontextmenü.

Ein lokales Kontextmenü in einem TortoiseSVN-Dialog wird folgendermaßen angezeigt: KontextmenüSpeichern Unter...

Schaltflächen werden durch einen 3D-Effekt hervorgehoben: Drücken Sie OK, um weiterzumachen.

Benutzeraktionen werden durch Fettdruck hervorgehoben. Alt+A: Drücken Sie die Alt-Taste und, während Sie diese gedrückt halten, die A-Taste dazu. Rechts-Ziehen: Halten Sie die rechte Maustaste gedrückt und ziehen Sie die gewählten Einträge an den neuen Ort.

Systemausgaben und Tastatureingaben werden durch einen anderen Zeichensatz hervorgehoben.

Wichtig

Wichtige Hinweise im Dokument.

Tipp

Tipps, die Ihre Arbeit mit Subversion erleichtern.

Achtung

Stellen, an denen Sie vorsichtig sein müssen, was sie tun.

Warnung

Stellen, an denen extreme Vorsicht geboten ist. Nichtbeachtung dieser Warnungen kann zu irreparablen Datenverlusten führen.

Kapitel 1. Vorbereitungen

Dieser Abschnitt richtet sich an Personen, die mittels eines Testlaufs herausfinden möchten, wie TortoiseSVN funktioniert. Er erklärt die Installation von TortoiseSVN sowie die Einrichtung eines lokalen Projektarchivs und führt Sie durch die am häufigsten verwendeten Operationen.

Installation von TortoiseSVN

Systemanforderungen

TortoiseSVN läuft unter Windows Vista oder höher und steht als 32- oder 64-Bit-Version zur Verfügung. Das Installationsprogramm für 64-Bit-Windows enthält auch die 32-Bit-Erweiterungen. Das bedeutet, dass Sie die 32-Bit-Version nicht zusätzlich installieren müssen, damit Ihnen in 32-Bit-Anwendungen die TortoiseSVN-Kontextmenüs und überlagerten Symbole zur Verfügung stehen.

Windows 98, Windows ME und Windows NT4 werden ab Version 1.2.0 nicht mehr unterstützt. Windows 2000 und XP bis SP2 werden ab Version 1.7.0 nicht mehr unterstützt. Windows XP mit SP3 wird ab Version 1.9.0 nicht mehr unterstützt.

Installation

TortoiseSVN wird als selbst installierende Anwendung ausgeliefert. Starten Sie die Installation durch einen Doppelklick auf die Datei und folgen Sie den Anweisungen. Das Installationsprogramm wird sich um alles weiter kümmern. Vergessen Sie nicht, nach der Installation Ihren Rechner neu zu starten.

Wichtig

Für die Installation von TortoiseSVN werden Administratorrechte benötigt. Das Installationsprogramm wird Sie bei Bedarf darum bitten.

Es stehen Sprachpakete zur Verfügung, die die Anwenderoberfläche von TortoiseSVN in viele verschiedene Sprachen übersetzen. Bitte lesen Sie in Anhang G, Sprachpakete und Rechtschreibprüfung nach, wie die Sprachpakete installiert werden.

Falls Sie während oder nach der Installation von TortoiseSVN auf Probleme stoßen, schauen Sie bitte in unserer Online-FAQ unter https://tortoisesvn.net/faq.html nach.

Grundlegende Konzepte

Bevor wir uns auf die Arbeit mit richtigen Dateien stürzen, ist es wichtig, einen Überblick über die Arbeitsweise von Subversion und die verwendeten Begriffe zu bekommen.

Das Projektarchiv

Subversion verwendet eine zentrale Datenbank, die alle Ihre versionierten Dateien mit ihrer vollständigen Historie enthält. Diese Datenbank wird als Projektarchiv bezeichnet. Das Projektarchiv liegt normalerweise auf einem Server-Rechner, auf dem die Subversion-Serveranwendung läuft, die auf Anfrage von Subversion-Clients (wie TortoiseSVN) mit Inhalten antwortet. Sollten Sie Ihr Backup auf eine einzige Sache beschränken, dann wählen Sie Ihr Projektarchiv aus: es ist die entscheidende Quelle für all Ihre Daten.

Arbeitskopie

Hier führen Sie die eigentliche Arbeit aus. Jeder Entwickler hat seine eigene Arbeitskopie, manchmal auch als Sandkasten bezeichnet, auf seinem lokalen PC. Sie können die neueste Version aus dem Repository beziehen und lokal damit arbeiten ohne jemanden anderes zu beeinflussen. Sobald Sie mit Ihren Änderungen zufrieden sind, können Sie diese wieder ins Projektarchiv übertragen.

Eine Subversion-Arbeitskopie enthält nicht die Historie des Projekts, sondern eine Kopie der Dateien im Zustand der letzten Aktualisierung aus dem Projektarchiv, bevor Sie Änderungen vorgenommen haben. Dies bedeutet, dass Sie einfach prüfen können, welche Änderungen Sie genau vorgenommen haben.

Sie müssen auch wissen, wo Sie TortoiseSVN finden, denn im Windows Startmenü gibt es nicht viel zu sehen. Das liegt daran, dass TortoiseSVN eine Shell-Erweiterung ist. Zunächst starten Sie den Windows Explorer. Klicken Sie mit der rechten Maustaste auf einen Ordner im Explorer und Sie sollten Sie einige neue Einträge im Kontextmenü sehen:

Abbildung 1.1. Das TortoiseSVN Menü für unversionierte Ordner

Das TortoiseSVN Menü für unversionierte Ordner


Machen Sie eine Testrunde

In diesem Abschnitt werden Sie anhand eines Test-Projektarchivs durch einige der am häufigsten genutzten Funktionen geführt. Natürlich wird darin nicht alles erklärt - es handelt sich schließlich um den Schnelleinstieg. Sobald Sie alles zum Laufen gebracht haben, sollten Sie sich die Zeit nehmen, die detailliertere Beschreibung im Rest des Handbuchs durchzulesen. Darin wird auch erklärt, wie Sie einen richtigen Subversion-Server aufsetzen.

Erstellen eines Projektarchivs

Für ein richtiges Projekt sollten Sie das Projektarchiv auf einem separaten Subversion-Server einrichten. Aus Gründen der Einfacheit werden wir für die Einführung ein lokales Projektarchiv verwenden, das sie direkt auf Ihrer Festplatte anlegen können, ohne dass Sie einen Server benötigen.

Zuerst legen Sie ein neues, leeres Verzeichnis auf ihrem Rechner an. Sie können es überall erstellen, aber in dieser Einleitung nennen wir es C:\svn_repos. Machen Sie einen Rechtsklick auf den neuen Ordner und wählen Sie TortoiseSVNProjektarchiv hier erstellen aus dem Kontextmenü. Das Projektarchiv wird innerhalb des Ordners erstellt und steht fortan zur Verfügung. Legen Sie auch gleich die Standard-Ordnerstruktur für das Projektarchiv an, indem Sie auf Ordnerstruktur anlegen klicken.

Wichtig

Lokale Projektarchive sind sehr nützlich für Tests. Sie sollten diese allerdings nur verwenden, wenn Sie der einzige Entwickler mit einem einzelnen PC in einem Projekt sind. Sobald Sie in einer Gruppe arbeiten, sollten Sie einen richtigen Server einrichten. Es mag in einer kleinen Firma verlockend sein, die Projektarchive auf einem freigegebenen Netzwerkordner anzulegen und sich die Arbeit zu ersparen, einen Server einzurichten. Aber lassen Sie das besser bleiben! Sie werden andernfalls Daten verlieren! Lesen Sie in „Projektarchiv auf einer Netzwerkfreigabe“ nach, warum das eine schlechte Idee ist und wie Sie einen Server einrichten.

Importieren eines Projekts

Jetzt haben wir ein Projektarchiv, aber es ist noch vollkommen leer. Nehmen wir an, Sie haben eine Reihe von Dateien in C:\Projects\Widget1, die Sie hinzufügen möchten. Navigieren Sie zum Widget1-Ordner im Explorer und klicken Sie mit der rechten Maustaste darauf. Wählen Sie jetzt TortoiseSVNImportieren..., worauf folgender Dialog erscheint:

Abbildung 1.2. Der Import-Dialog

Der Import-Dialog


Ein Subversion-Projektarchiv wird durch eine URL beschrieben, die es uns ermöglicht, Projektarchive überall im Internet zu referenzieren. In diesem Fall müssen wir auf unser eigenes lokales Projektarchiv verweisen, das die URL file:///c:/svn_repos/trunk hat und in das wir unser eigenes Projekt namens Widget1 einfügen. Beachten Sie die 3 Schrägstriche nach file: und dass durchgängig Vorwärts-Schrägstriche verwendet werden.

Die andere wichtige Funktion dieses Dialogfensters ist das Eingabefeld für die Import-Meldung. Darin geben Sie eine Meldung ein, die beschreibt, was Sie geändert haben. Wenn Sie dann später Ihre Projekthistorie durchsuchen, stellen diese Logmeldungen einen wertvollen Hinweis für Änderungen an Ihren Quellen dar. In diesem Fall können Sie einfach etwas eintragen wie Importiert des Widget1-Projekts. Klicken Sie auf OK, und der Ordner wird zum Projektarchiv hinzugefügt.

Eine Arbeitskopie auschecken

Nun, da wir ein Projekt in unserem Projektarchiv haben, müssen wir eine Arbeitskopie für die tägliche Arbeit erstellen. Beachten Sie, dass das Importieren eines Ordners diesen nicht automatisch in eine Arbeitskopie verwandelt. Der Subversion-Begriff für das Erstellen einer frischen Arbeitskopie lautet Auschecken. Wir werden jetzt den Ordner Widget1 unseres Projektarchivs in einen Entwicklungsordner auf dem PC, C:\Projects\Widget1-Dev genannt, auschecken. Erstellen Sie diesen Ordner, klicken dann mit der rechten Maustaste darauf und wählen Sie TortoiseSVNAuschecken.... Geben Sie die auszucheckende URL, in diesem Fall file:///c:/svn_repos/trunk/Widget1 ein, und klicken Sie auf OK. Unser Entwicklungsordner wird dann mit Dateien aus dem Projektarchiv gefüllt.

Wichtig

In der Standardeinstellung befindet sich der Auschecken-Befehl nicht im TortoiseSVN-Untermenü, sondern im Explorermenü. TortoiseSVN-Befehle, die sich nicht im Untermenü befinden, wird ein SVN-Präfix vorangestellt: SVN Auschecken...

Sie werden feststellen, dass sich die Darstellung dieses Ordners von der unseres ursprünglichen Ordners unterscheidet. Jede Datei hat ein grünes Häkchen in der linken unteren Ecke. Dies sind die TortoiseSVN-Statussymbole, die nur in einer Arbeitskopie vorhanden sind. Grün zeigt an, dass die Datei gegenüber der Version aus dem Projektarchiv nicht verändert wurde.

Änderungen vornehmen

Zeit zu arbeiten. Im Ordner Widget1-Dev ändern wir jetzt Dateien - nehmen wir an, wir ändern Widget1.c und ReadMe.txt. Beachten Sie, dass sich die überlagerten Symbole dieser Dateien jetzt auf Rot geändert haben, was bedeutet, dass lokal Änderungen vorgenommen wurden.

Aber was sind die Änderungen? Klicken Sie mit der rechten Maustaste auf die geänderten Dateien und wählen Sie TortoiseSVNVergleich. Das Vergleichsprogramm von TortoiseSVN wird gestartet und zeigt genau an, welche Zeilen sich geändert haben.

Abbildung 1.3. Dateiunterschiede betrachten

Dateiunterschiede betrachten


OK, wir sind also mit den Änderungen zufrieden und werden nun das Projektarchiv aktualisieren. Diese Aktion wird als Übertragen der Änderungen bezeichnet. Klicken Sie mit der rechten Maustaste auf den Widget1-Dev-Ordner und wählen Sie TortoiseSVNÜbertragen. Der Übertragen-Dialog listet die geänderten Dateien auf, jeweils mit einem Kontrollkästchen. Möglicherweise möchten Sie nur eine Teilmenge der Dateien auswählen, aber in diesem Fall werden wir die Änderungen an beiden Dateien übernehmen. Geben Sie eine Meldung ein, die beschreibt, worum es bei der Änderung geht, und klicken auf OK. Im Fortschrittsdialog sehen Sie, wie die Dateien in das Projektarchiv hochgeladen werden, nun Sie sind fertig.

Weitere Dateien hinzfügen

Während sich das Projekt weiter entwickelt, müssen Sie neue Dateien hinzufügen. Angenommen, Sie fügen einige neuen Funktionen in Extras.c hinzu und fügen einen Verweis im vorhandenen Makefile hinzu. Klicken Sie mit der rechten Maustaste auf den Ordner und wählen Sie TortoiseSVNHinzufügen.... Der Hinzufügen-Dialog zeigt Ihnen nun alle nicht versionierten Dateien, und Sie können diejenigen auswählen, die Sie hinzufügen möchten. Eine weitere Möglichkeit, Dateien hinzuzufügen, besteht darin, mit der rechten Maustaste auf die Datei selbst zu klicken und TortoiseSVNHinzufügen zu wählen.

Wenn Sie jetzt den Ordner übertragen, wird die neue Datei als hinzugefügt und die vorhandene Datei als verändert angezeigt. Beachten Sie, dass Sie auf die Dateien doppelklicken können, um die enthaltenen Änderungen zu überprüfen.

Die Projekthistorie betrachten

Eine der nützlichsten Funktionen von TortoiseSVN ist der Log-Dialog. Er listet Ihnen alle Übertragungen einer Datei oder eines Ordners auf und zeigt die detaillierten Logmeldungen an, die Sie eingegeben haben. Sie haben doch wie empfohlen eine Logmeldung eingegeben, oder? Wenn nicht, sehen Sie jetzt, warum das wichtig ist.

Abbildung 1.4. Der Log-Dialog

Der Log-Dialog


OK, ich habe ein wenig geschummelt und ein Beispiel aus dem Projektarchiv von TortoiseSVN verwendet.

Der obere Bereich zeigt eine Liste der Revisionen zusammen mit dem Anfang der Logmeldungen an. Wenn Sie eine dieser Revisionen auswählen, wird im mittleren Bereich die vollständige Logmeldung für die Revision dargestellt und im unteren Bereich eine Liste der geänderten Dateien und Ordner.

Jeder dieser Bereiche hat ein Kontextmenü, das Ihnen viel mehr Möglichkeiten bietet, diese Informationen zu nutzen. Im unteren Bereich können Sie auf eine Datei doppelklicken, um sich die Änderungen in dieser Revision anzeigen zu lassen. Lesen „Log-Dialog“ für die vollständige Darstellung.

Änderungen rückgängig machen

Eine Funktion aller Versionskontrollsysteme ist, dass sich die Änderungen rückgängig machen lassen, die Sie zuvor ausgeführt haben. Wie zu erwarten, bietet TortoiseSVN hierzu einen leichten Zugang.

Wenn Sie Änderungen loswerden möchten, die Sie noch nicht übertragen haben und Ihre Datei in den Zustand vor Ihrer Bearbeitung zurückversetzen möchten, ist TortoiseSVNRückgängig... Ihr Freund. Diese Aktion verwirft Ihre Änderungen (in den Papierkorb, nur für alle Fälle) und kehrt zu der Version zurück, mit der Sie begonnen hatten. Wenn Sie nur einige der Änderungen loswerden möchten, können Sie TortoiseMerge nutzen, um die Unterschiede anzuzeigen und selektiv geänderte Zeilen wiederherzustellen.

Wenn Sie die Auswirkungen einer bestimmten Revision rückgängig machen möchten, beginnen Sie mit dem Log-Dialog und suchen Sie dort die problematische Revision auf. Wählen Sie KontextmenüÄnderungen dieser Revision rückgängig machen und die betreffenden Änderungen werden rückgängig gemacht.

Weiter geht’s ...

Diese Einführung hat Ihnen eine sehr schnelle Tour durch einige der wichtigsten und nützlichsten Funktionen von TortoiseSVN verschafft, aber natürlich gibt es weit mehr, das hiermit nicht abgedeckt ist. Wir empfehlen Ihnen sehr, dass Sie sicht die Zeit nehmen, den Rest dieses Handbuchs zu lesen; insbesondere Kapitel 4, Anleitung zum täglichen Gebrauch, bietet Ihnen viele ausführliche Informationen.

Wir haben uns viel Mühe dabei gegeben, das Handbuch informativ und leicht lesbar zu gestalten, aber wir sind uns seines Umfangs durchaus bewusst! Nehmen Sie sich Zeit und scheuen Sie sich nicht, Dinge mit einem Test-Projektarchiv auszuprobieren, während Sie das Handbuch lesen. Es gibt nichts Gutes außer man tut es!

Kapitel 2. Grundlagen der Versionskontrolle

Dieses Kapitel ist eine leicht veränderte Version desselben Kapitels aus dem Subversion-Buch. Eine Online-Version des Subversion-Buchs finden Sie unter folgender Adresse: http://svnbook.red-bean.com/ .

Dieses Kapitel ist eine kurze, beiläufige Einführung in Subversion. Falls Sie noch nie etwas von Versionskontrolle gehört haben, dann ist dieses Kapitel definitiv etwas für Sie. Wir beginnen mit einer Diskussion über allgemeine Konzepte der Versionskontrolle, arbeiten uns dann vor in die spezifischen Ideen hinter Subversion und zeigen ein paar einfache Beispiele zur Benutzung von Subversion.

Obwohl die hier gezeigten Beispiele Menschen im Umgang mit Quellcode darstellen, denken Sie bitte daran, dass Subversion jegliche Art von Daten verarbeiten kann - es ist nicht darauf beschränkt, Programmierer zu unterstützen.

Das Projektarchiv

Subversion ist ein zentralisiertes System für die Verteilung von Informationen. In seinem Kern befindet sich eine Datenbank, welche die Informationen in Form eines Dateibaumes - einer typischen Hierarchie von Dateien und Ordnern - abspeichert. Eine beliebige Anzahl von Clients kontaktiert das Projektarchiv und liest und schreibt von/in diese Dateien. Durch das Schreiben von Daten stellt ein Client diese auch anderen zur Verfügung, durch Lesen von Daten bekommt ein Client Informationen von anderen.

Abbildung 2.1. Ein typisches Client-Server-System

Ein typisches Client-Server-System

Warum ist dies so interessant? Bis jetzt klingt das alles wie die Definition eines normalen Dateiservers. Und tatsächlich ist das Projektarchiv eine Art Dateiserver, aber es ist kein normaler Dateiserver. Was das Subversion-Projektarchiv so besonders macht ist, dass es jede je gemachte Änderung speichert: jede Änderung an einer Datei, sogar Änderungen am Dateibaum selbst wie das Hinzufügen, Löschen oder Umbenennen/Verschieben von Dateien und Ordnern.

Wenn ein Client Daten aus dem Projektarchiv liest, so sieht er normalerweise nur die aktuellste Version des Dateibaumes. Aber ein Clientprogramm hat auch die Möglichkeit, frühere Versionen zu sehen. Zum Beispiel kann ein Benutzer sich für Fragen interessieren wie Was enthielt dieser Ordner letzten Mittwoch? oder Wer war die letzte Person, die diese Datei geändert hat und was für Änderungen waren das?. Dies sind die Art von Fragen, die das Herz eines Versionskontrollsystems bilden: Systeme, die genau dafür gedacht sind, Änderungen aufzuzeichnen und über die Zeit hinweg zu verfolgen.

Versionierungsmodelle

Alle Versionskontrollsysteme haben ein gemeinsames, grundlegendes Problem zu lösen: Wie kann das System verschiedenen Benutzern erlauben, die Informationen zu teilen, aber gleichzeitig verhindern, dass die Benutzer sich gegenseitig auf die Füße treten? Es ist viel zu einfach für Benutzer, versehentlich Änderungen von anderen Benutzern zu überschreiben.

Das Problem des gemeinsamem Dateizugriffs

Stellen Sie sich folgende Szene vor: angenommen, wir haben zwei Mitarbeiter, Harry und Sally. Sie beide beschließen, dieselbe Datei gleichzeitig zu ändern. Wenn Harry seine Änderungen zuerst im Projektarchiv speichert, dann ist es möglich, dass Sally (ein paar Augenblicke später) ungewollt diese Änderungen durch ihre eigenen überschreibt. Obwohl die Änderungen von Harry nicht verloren sind (das Versionskontrollsystem speichert alle Änderungen), werden Harrys Änderungen in der aktuellsten Version von Sally nicht vorhanden sein, weil Sally diese Änderungen nie gesehen hat. Harrys Änderungen sind also trotzdem verloren - oder zumindest fehlen diese in der aktuellsten Version. Dies ist definitiv eine Situation, die wir verhindern wollen!

Abbildung 2.2. Das zu vermeidende Problem

Das zu vermeidende Problem

Die Sperren-Ändern-Freigeben-Lösung

Viele Versionskontrollsysteme nutzen ein Sperren-Ändern-Freigeben-Modell, was eine sehr einfache Lösung ist. In einem solchen System kann jeweils nur eine einzige Person eine Datei ändern. Zuerst muss Harry die Datei sperren, dann kann er mit dem Ändern beginnen. Sperren ist so ähnlich wie das Ausleihen eines Buchs aus der Bibliothek; wenn Harry die Datei gesperrt hat, dann kann Sally keine Änderungen an dieser Datei mehr vornehmen. Wenn sie es dennoch versucht, bekommt sie eine Fehlermeldung zu sehen. Alles, was sie tun kann, ist die Datei lesen und darauf zu warten, dass Harry die Datei wieder freigibt. Erst dann kann Sally die Datei sperren und ihre Änderungen vornehmen.

Abbildung 2.3. Die Sperren-Ändern-Freigeben-Lösung

Die Sperren-Ändern-Freigeben-Lösung

Das Problem an der Sperren-Ändern-Freigeben-Lösung ist, dass diese zu restriktiv ist und oft zu einem Hindernis für die Benutzer wird:

  • Sperren kann administrative Probleme auslösen. Manchmal wird Harry eine Datei sperren und dann vergessen, sie wieder freizugeben. In der Zwischenzeit wartet Sally bis sie diese Datei ändern kann, aber durch die Sperre von Harry sind ihr die Hände gebunden. Und dann geht Harry in die Ferien. Nun braucht Sally einen Administrator, um die Sperre von Harry aufzuheben. Diese Situation führt zu unnötigen Verzögerungen und verschwendet Zeit.

  • Sperren kann zu unnötig sequenzieller Arbeitsweise führen. Was, wenn Harry den Anfang einer Textdatei ändert und Sally das Ende dieser Textdatei ändern möchte? Diese Änderungen stören sich überhaupt nicht und könnten sehr einfach gleichzeitig ausgeführt werden, unter der Annahme, dass diese Änderungen ohne Probleme zusammengeführt werden. Es ist in dieser Situation völlig unnötig zu warten, bis der eine mit der Arbeit fertig ist.

  • Sperren kann ein falsches Gefühl von Sicherheit erzeugen. Angenommen, Harry sperrt und ändert eine Datei A, während Sally eine Datei B gesperrt hat und ändert. Aber angenommen, diese beiden Dateien sind nicht unabhängig voneinander und die Änderungen an der einen Datei sind nicht kompatibel mit den Änderungen an der anderen Datei. Plötzlich funktionieren die Dateien A und B nicht mehr zusammen. Das Sperrsystem konnte dieses Problem nicht verhindern - es spiegelte sogar eine falsche Sicherheit vor. Leicht wiegen sich Harry und Sally in falscher Sicherheit durch die Möglichkeit des Sperrens, was möglicherweise sogar verhindert, dass sie ihre miteinander unverträglichen Änderungen rechtzeitig diskutieren.

Die Kopieren-Ändern-Zusammenführen-Lösung

Subversion, CVS und andere Versionskontrollsysteme nutzen ein Kopieren-Ändern-Zusammenführen-Modell als Alternative zur Sperrlösung. In diesem Modell hat jeder Benutzer eine persönliche Arbeitskopie des Projekts. Die Benutzer arbeiten dann parallel und ändern jeweils ihre persönliche Arbeitskopie. Schließlich werden diese privaten Arbeitskopien zu einer endgültigen Version zusammengeführt. Das Versionskontrollsystem hilft beim Zusammenführen, überlässt die endgültige Kontrolle aber dem Benutzer selbst.

Hier ein Beispiel. Angenommen, Harry und Sally haben jeder eine private Arbeitskopie von dem selben Projekt. Sie arbeiten parallel und ändern dieselbe Datei A in ihren Arbeitskopien. Sally speichert ihre Änderungen zuerst im Projektarchiv. Wenn Harry nun dasselbe versucht, bekommt er eine Meldung vom Projektarchiv, dass seine Datei nicht aktuell ist. In anderen Worten, die Datei A wurde irgendwie im Projektarchiv verändert, seit er sie das letzte Mal aktualisiert hat. Also aktualisiert Harry seine Arbeitskopie anhand des Projektarchivs und führt die Änderungen aus dem Projektarchiv mit seinen eigenen zusammen. Die Chancen stehen gut, dass die Änderungen von Sally mit seinen verträglich sind, und so kann Harry die aktualisierte Datei nun meist ohne weiteres im Projektarchiv speichern.

Abbildung 2.4. Die Kopieren-Ändern-Zusammenführen-Lösung

Die Kopieren-Ändern-Zusammenführen-Lösung

Abbildung 2.5. ...Kopieren-Ändern-Zusammenführen fortgesetzt

...Kopieren-Ändern-Zusammenführen fortgesetzt

Aber was, wenn die Änderungen von Sally sich mit Harrys Änderungen tatsächlich überschneiden? Was dann? Diese Situation wird Konflikt genannt und ist üblicherweise kein großes Problem. Wenn Harry in diesem Falle seine Arbeitskopie aktualisiert und die Änderungen von Sally mit den seinen zusammenführt, wird seine Kopie der Datei A als In Konflikt markiert; er kann dann beide Versionen der Datei ansehen und manuell zwischen den Änderungen von Sally oder seinen eigenen wählen. Beachten Sie, dass solche Konflikte nicht durch Software gelöst werden kann; nur Menschen sind in der Lage, die Änderungen auch zu verstehen und die notwendigen intelligenten Entscheidungen zu treffen. Erst wenn Harry von Hand den Konflikt aufgelöst hat (vielleicht durch ein Gespräch mit Sally!), kann er die aktualisierte Datei an das Projektarchiv zurück übertragen.

Das Kopieren-Ändern-Zusammenführen-Modell mag ein wenig chaotisch aussehen, aber in der Praxis bewährt es sich sehr gut. Benutzer können parallel arbeiten, müssen niemals aufeinander warten. Wenn sie an denselben Dateien arbeiten, stellt sich heraus, dass die meiste Zeit keine Konflikte auftreten. Und die Zeit, die benötigt wird, um einen der wirklich seltenen Konflikte zu lösen, ist viel kürzer als die Zeit, die man auf die Freigabe einer gesperrten Datei warten müsste.

Letztlich hängt alles von einem einzigen kritischen Faktor ab: der Kommunikation unter den Benutzern. Wenn die Benutzer nur schlecht miteinander kommunizieren, werden vermehrt Konflikte auftreten. Kein System kann Benutzer zur Kommunikation zwingen, und kein System kann logische Konflikte erkennen.

Es gibt eine Situation, in der das Sperren-Ändern-Freigeben-Modell Vorteile bietet. Das ist bei Dateien der Fall, die sich nicht automatisch zusammenführen lassen. Wenn Ihr Projektarchiv zum Beispiel Grafiken enthält und zwei Personen gleichzeitig dieselbe Grafik ändern, kann Subversion nicht entscheiden, wie die Änderungen zusammengeführt werden. Entweder Harry oder Sally wird seine Änderungen verlieren.

Was macht Subversion?

Subversion verwendet standardmäßig das Kopieren-Ändern-Zusammenführen-Modell, und in den meisten Fällen wird das alles sein, was Sie jemals benötigen werden. Mit der Einführung von Version 1.2 unterstützt Subversion auch das Sperren von Dateien, so dass Ihnen diese Möglichkeit ebenfalls zur Verfügung steht.

Subversion bei der Arbeit

Arbeitskopien

Sie haben bereits über Arbeitskopien gelesen; nun werden wir zeigen, wie Subversion diese erstellt und benutzt.

Eine Subversion-Arbeitskopie ist eine ganz normale Ordnerstruktur auf einem lokalen Dateisystem, die eine Anzahl von Dateien enthält. Sie können diese Dateien ändern wie Sie wollen, und falls es Quellcode-Dateien sind, können Sie diese kompilieren wie sonst auch. Ihre Arbeitskopie ist Ihr eigenes privates Arbeitsfeld: Subversion wird nie Änderungen von anderen einfügen oder Ihre Änderungen anderen zur Verfügung stellen, ohne dass Sie Subversion explizit dazu auffordern.

Nachdem Sie einige Änderungen an den Dateien in Ihrer Arbeitskopie vorgenommen haben und überprüft haben, dass diese immer noch korrekt funktionieren, stellt Ihnen Subversion Befehle zur Verfügung, um Ihre Änderungen zu publizieren (durch Speichern im zentralen Projektarchiv), d. h. anderen zur Verfügung zu stellen. Falls andere Benutzer ihre Änderungen veröffentlicht haben, stellt Subversion Befehle zur Verfügung, mit denen Sie diese Änderungen in Ihre Arbeitskopie einfügen können (durch Lesen aus dem zentralen Projektarchiv).

Eine Arbeitskopie enthält auch einige Extradateien, die Subversion erzeugt und verwaltet, um diese Kommandos auszuführen. Insbesondere enthält Ihre Arbeitskopie ein Unterverzeichnis namens .svn, das auch Verwaltungsordner der Arbeitskopie genannt wird. Die Dateien in diesem Verwaltungsordner benutzt Subversion, um zu erkennen, welche Dateien unveröffentlichte Änderungen enthalten und welche Dateien in Bezug zur Arbeit anderer Teammitglieder veraltet sind. Vor der Version 1.7 unterhielt Subversion einen .svn-Ordner in jedem versionierten Unterverzeichnis Ihrer Arbeitskopie. Subversion 1.7 wählt hier einen völlig anderen Ansatz: jede Arbeitskopie enthält von jetzt an nur noch einen Verwaltungsordner, der direkt im Wurzelverzeichnis dieser Arbeitskopie angesiedelt ist.

Ein typisches Subversion-Projektarchiv enthält oft Dateien (oder Quellcode) von mehreren Projekten; normalerweise ist jedes Projekt ein Unterordner im Dateibaum. In einem solchen Umfeld enthält eine Arbeitskopie normalerweise nur einen bestimmten Unterordner des Projektarchivs.

Als Beispiel nehmen Sie an, dass Sie ein Projektarchiv haben, das zwei Softwareprojekte enthält.

Abbildung 2.6. Das Dateisystem des Projektarchivs

Das Dateisystem des Projektarchivs

Mit anderen Worten: das Hauptverzeichnis des Projektarchivs hat zwei Unterordner: paint und calc.

Um eine Arbeitskopie zu erhalten, müssen Sie einen dieser Unterordner aus dem Projektarchiv auschecken. Der Begriff auschecken klingt so, als würden dadurch Ressourcen gesperrt oder reserviert, aber dem ist nicht so. Es wird lediglich eine private Kopie des Projekts für Sie erzeugt.

Angenommen, Sie machen Änderungen an der Datei button.c. Da der .svn-Ordner den Originalinhalt und das Änderungsdatum gespeichert hat, kann Subversion feststellen, dass Sie diese Datei geändert haben. Jedoch wird Subversion diese Änderungen erst veröffentlichen, wenn Sie Subversion dazu ausdrücklich auffordern. Der Vorgang des Veröffentlichens ist allgemein mit dem Begriff Übertragen oder Einchecken (engl. to commit oder to check in) belegt.

Um Ihre Änderungen anderen zur Verfügung zu stellen, verwenden Sie den Befehl Übertragen.

Danach sind Ihre Änderungen an der Datei button.c im Projektarchiv gespeichert; falls jemand anders nun eine neue Arbeitskopie von /calc auscheckt, wird diese auch Ihre letzten Änderungen an der Datei button.c enthalten.

Nehmen Sie an, Sie haben eine Mitarbeiterin, Sally, die eine Arbeitskopie von /calc zur selben Zeit wie Sie ausgecheckt hat. Wenn Sie Ihre Änderungen übertragen, bleibt die Arbeitskopie von Sally unverändert. Subversion ändert nur dann etwas an einer Arbeitskopie, wenn Sie es ausdrücklich dazu auffordern.

Um ihre Arbeitskopie auf den neusten Stand zu bringen, sagt Sally Subversion, dass es ihre Arbeitskopie aktualisieren soll mittels des Aktualisieren-Befehls. Dies wird Ihre Änderungen in die Arbeitskopie von Sally übernehmen, genau wie alle weiteren Änderungen, die andere vorgenommen haben, seit Sally ihre Arbeitskopie zuletzt aktualisiert hat.

Beachten Sie, dass Sally nicht angeben muss, welche Dateien genau Subversion aktualisieren soll; Subversion nutzt die Informationen im .svn Ordner und weitere Informationen aus dem Projektarchiv, um dies selbst festzustellen.

Projektarchiv-URLs

Auf Subversion Projektarchive kann mittels vieler verschiedener Methoden zugegriffen werden - lokal oder durch verschiedene Netzwerk-Protokolle. Auf ein Objekt im Projektarchiv wird immer über eine URL zugegriffen. Das URL-Schema zeigt die Zugriffsmethode:

Tabelle 2.1. Zugriffs-URLs für das Projektarchiv

SchemaZugriffsmethode
file:// Direkter Zugriff auf einer lokalen Festplatte oder einem Netzwerkverzeichnis.
http:// Zugriff via WebDAV-Protokoll auf einen Apache-Server, auf dem Subversion installiert ist.
https:// Wie http://, aber mit SSL-Verschlüsselung.
svn:// Nicht authentifizierter TCP/IP Zugriff mittels eigenem Protokoll auf einen svnserve Server.
svn+ssh:// Authentifizierter, verschlüsselter TCP/IP Zugriff mittels eigenem Protokoll auf einen svnserve Server.

In den weitaus meisten Fällen nutzen Subversion-URLs die Standardsyntax und erlauben, dass Servernamen und Portnummern als Teil der URL angegeben werden. Beachten Sie jedoch, dass die Zugriffsmethode file:// normalerweise nur für den Zugriff auf lokale Projektarchive verwendet wird, obwohl auch mittels eines UNC-Pfades auf ein Projektarchiv im Netzwerk zugegriffen werden kann. In diesem Fall nimmt die URL die Form file://rechnername/pfad/zum/projektarchiv an. Bei einem lokalen Projektarchiv muss der Rechnername entweder leer oder localhost sein. Deshalb enthalten lokale Pfade meistens drei Schrägstriche, file:///pfad/zum/projektarchiv.

Zudem müssen Benutzer des Schemas file:// auf Windowsrechnern eine nicht offizielle Standard-Syntax für die URL verwenden. Jede der folgenden URLs funktioniert, wobei X das Laufwerk mit dem Projektarchiv ist:

file:///X:/path/to/repos
...
file:///X|/path/to/repos
...
      

Beachten Sie, dass die URL normale Schrägstriche verwendet, obwohl Windows-Pfade mit umgekehrten Schrägstrichen angegeben werden.

Sie können zwar per Netzwerkfreigabe auf ein FSFS-Projektarchiv zugreifen, dies wird jedoch aus verschiedenen Gründen nicht empfohlen:

  • Sie geben sämtlichen Anwendern vollständigen Schreibzugriff, sodass diese versehentlich das Projektarchiv löschen oder beschädigen können.

  • Nicht alle Netzwerkfreigabeprotokolle unterstützen die von Subversion benötigten Sperrmechanismen, was dazu führen kann, dass Ihr Projektarchiv subtil beschädigt wird.

  • Sie müssen die Zugriffsberechtigungen exakt richtig setzen. Samba ist in dieser Hinsicht besonders schwierig.

  • Wenn eine Person einen neueren Client installiert und dieser das Format des Projektarchivs hochstuft, können alle anderen solange nicht auf das Projektarchiv zugreifen, bis sie ebenfalls auf die neueste Clientversion aktualisiert haben.

Revisionen

Ein Übertragen-Befehl kann Änderungen an beliebig vielen Dateien und Ordnern als eine einzige atomare Operation übertragen. In Ihrer Arbeitskopie können Sie Dateien ändern, erstellen, löschen, umbenennen und verschieben und dann alle diese Änderungen in einem einzigen Schritt übertragen.

Im Projektarchiv wird jede Übertragung als eine einzige atomare Transaktion behandelt: entweder werden alle Änderungen abgespeichert oder gar keine. Subversion stellt dies sogar im Falle von Systemabstürzen, Netzwerkproblemen, Stromausfällen oder anderen Problemen sicher.

Jedes mal wenn ein Projektarchiv eine Übertragung akzeptiert, wird dadurch ein neuer Zustand der Dateistruktur erzeugt. Ein solcher Zustand wird Revision genannt. Jeder Revision wird eine natürliche Zahl zugeordnet, jeweils um eins größer als die vorherige Revision. Der Ursprungszustand eines Projektarchivs bei der Erstellung ist also Revision 0. Revision 0 enthält nichts außer einem leeren Hauptverzeichnis.

Eine Möglichkeit, sich das Projektarchiv vorzustellen, ist als eine Reihe von Bäumen. Stellen Sie sich eine Reihe von Revisionsnummern vor, beginnend mit 0, die sich von links nach rechts ausdehnt. An jeder Revisionsnummer hängt ein Dateibaum, und jeder dieser Bäume ist eine Momentaufnahme davon, wie das Projektarchiv nach der jeweiligen Übertragung ausgesehen hat.

Abbildung 2.7. Das Projektarchiv

Das Projektarchiv

Es ist wichtig zu beachten, dass Arbeitskopien nicht immer mit einer einzigen Revision des Projektarchivs übereinstimmen; sie können Dateien von verschiedenen Revisionen enthalten. Nehmen Sie zum Beispiel an, Sie haben aus einem Projektarchiv eine Arbeitskopie ausgecheckt, bei welcher die neueste Revision die 4 ist:

calc/Makefile:4
integer.c:4
button.c:4
      

In diesem Moment entspricht die Arbeitskopie exakt der Revision 4 im Projektarchiv. Nun nehmen Sie an, Sie ändern die Datei button.c und übertragen diese Änderungen. Nehmen Sie weiter an, dass keine weiteren Änderungen vorgenommen wurden und Ihre Übertragung eine neue Revision 5 im Projektarchiv erstellt. Ihre Arbeitskopie wird dann so aussehen:

calc/Makefile:4
integer.c:4
button.c:5
      

Nehmen Sie nun an, dass jetzt Sally Änderungen an der Datei integer.c überträgt und damit eine Revision 6 erstellt. Wenn Sie nun Ihre Arbeitskopie aktualisieren, wird diese so aussehen:

calc/Makefile:6
integer.c:6
button.c:6
      

Sallys Änderungen an der Datei integer.c werden in Ihre Arbeitskopie eingefügt, und Ihre Änderungen in der Datei button.c werden immer noch vorhanden sein. In diesem Beispiel ist der Inhalt der Datei Makefile identisch in den Revisionen 4, 5 und 6, aber Subversion markiert Ihre lokale Kopie von Makefile mit Revision 6 um zu zeigen, dass diese immer noch aktuell ist. Also wird, nachdem Sie eine saubere Aktualisierung durchgeführt haben, Ihre Arbeitskopie exakt einer Revision im Projektarchiv entsprechen.

Wie Arbeitskopien das Projektarchiv verfolgen

Für jede Datei in einer Arbeitskopie zeichnet Subversion zwei wesentliche Informationen im .svn-Administrationsordner auf:

  • Die Revision, auf der Ihre Arbeitsdatei basiert (wird als Arbeitsrevision bezeichnet), und

  • Der Zeitpunkt, an dem die Datei zum letzten Mal aus dem Projektarchiv aktualisiert wurde.

Mittels dieser Informationen ist Subversion in der Lage, durch Anfragen an das Projektarchiv herauszufinden, in welchem der folgenden vier Zustände eine Datei ist:

Unverändert und aktuell

Die Datei wurde weder lokal noch im Projektarchiv verändert. Sowohl Übertragen als auch Aktualisieren dieser Datei bewirken nichts.

Lokal verändert und aktuell

Die Datei wurde lokal verändert, aber nicht im Projektarchiv. Eine Übertragung bewirkt ein Speichern dieser Änderungen im Projektarchiv. Eine Aktualisierung hingegen bewirkt nichts.

Unverändert, aber nicht mehr aktuell

Die Datei wurde lokal nicht verändert, jedoch gibt es Änderungen an der Datei im Projektarchiv. Eine Übertragung bewirkt nichts, jedoch wird ein Aktualisieren die Änderungen aus dem Projektarchiv in die lokale Kopie der Datei einfügen.

Lokal verändert und nicht aktuell

Die Datei wurde lokal und im Projektarchiv verändert. Ein Übertragen wird mit der Fehlermeldung nicht mehr aktuell fehlschlagen. Sie müssen die Datei zuerst Aktualisieren, um die Änderungen aus dem Projektarchiv in die lokale Kopie einzufügen. Wenn Subversion nicht in der Lage sein sollte, diese Änderungen selbst zusammenzuführen, was selten der Fall ist, überlässt es das Auflösen des Konflikts dem Benutzer.

Zusammenfassung

Wir haben eine Anzahl von grundlegenden Subversion-Konzepten in diesem Kapitel behandelt:

  • Wir haben den Begriff des zentralen Projektarchivs, der Arbeitskopie und der Revisionen eingeführt.

  • Wir haben einige einfache Beispiele gezeigt, wie zwei Mitarbeiter Subversion mittels des Kopieren-Ändern-Zusammenführen-Modells benutzen können, um Änderungen zur Verfügung zu stellen und Änderungen von anderen zu übernehmen.

  • Wir haben gesehen, wie Subversion innerhalb einer Arbeitskopie Informationen verfolgt und verwaltet.

Kapitel 3. Das Projektarchiv

Egal welches Protokoll Sie verwenden, um auf das Projektarchiv zuzugreifen, Sie müssen jeweils mindestens ein Projektarchiv erstellen. Sie können dies entweder mit dem Subversion Kommandozeilen-Client oder mit TortoiseSVN tun.

Wenn Sie noch kein Subversion Projektarchiv erstellt haben, tun Sie dies jetzt.

Projektarchiv erstellen

Ein Projektarchiv mit dem Kommandozeilen-Client erstellen

  1. Erstellen Sie einen leeren Ordner mit dem Namen SVN (z.B. D:\SVN\), in welchem alle Projektarchive gespeichert werden.

  2. Erstellen Sie einen weiteren Ordner MyNewRepository innerhalb von D:\SVN\.

  3. Starten Sie die Kommandozeile (oder DOS-Box), wechseln Sie nach D:\SVN\ und geben Sie folgendes ein:

    svnadmin create --fs-type fsfs MyNewRepository
    

Nun haben Sie ein neues Projektarchiv in D:\SVN\MyNewRepository erstellt.

Erstellen eines Projektarchivs mit TortoiseSVN

Abbildung 3.1. Das TortoiseSVN Menü für unversionierte Ordner

Das TortoiseSVN Menü für unversionierte Ordner

  1. Öffnen Sie den Windows-Explorer

  2. Erstellen Sie einen neuen Ordner und nennen Sie ihn zum Beispiel SVNRepository.

  3. Nach Rechtsklick auf den neu erstellten Ordner wählen Sie TortoiseSVNProjektarchiv hier erstellen....

    Nun wird ein Projektarchiv in dem neuen Ordner erstellt. Bearbeiten Sie diese Dateien nicht selbst!. Falls Sie eine Fehlermeldung erhalten, stellen Sie sicher, dass der Ordner leer und nicht schreibgeschützt ist.

    Sie werden auch gefragt werden, ob Sie eine Verzeichnisstruktur im Projektarchiv erstellen möchten. Erfahren Sie mehr über Layout-Optionen in „Struktur des Projektarchivs“.

    TortoiseSVN wird den Ordner mit einem benutzerdefinierten Symbol versehen, wenn es ein Projektarchiv erstellt. So können Sie lokale Projektarchive leichter erkennen. Wenn Sie ein Projektarchiv mit dem offiziellen Befehlszeilen-Client erstellen, wird dieses Ordnersymbol nicht zugewiesen.

Tipp

Grundsätzlich raten wir von der Verwendung des Zugriffs per file:// ab, es sei denn für lokale Testzwecke. Die Verwendung eines Servers ist, außer vielleicht für Einzelanwender, generell sicherer und zuverlässiger.

Lokaler Zugriff auf das Projektarchiv

Um das lokale Projektarchiv anzusprechen, benötigen Sie den Pfad zum Projektarchiv-Ordner. Beachten Sie, dass Subversion alle Projektarchivpfade in der Form file:///C:/SVNRepository/ benötigt.

Um ein Projektarchiv auf einer Netzwerkfreigabe anzusprechen, können Sie entweder die Freigabe als Laufwerk verbinden oder den UNC-Pfad benutzen. UNC-Pfade haben die Form file://ServerName/Pfad/zum/Projektarchiv/. Beachten Sie, dass hier nur 2 Schrägstriche vor dem Servernamen stehen.

Vor Subversion 1.2 mussten UNC-Pfade in dem obskuren Format file:///\ServerName/path/to/repos angegeben werden. Dieses Format wird weiterhin unterstützt, aber nicht empfohlen.

Projektarchiv auf einer Netzwerkfreigabe

Obwohl es theoretisch möglich ist, ein FSFS-Projektarchiv auf einer Netzwerkfreigabe anzulegen und mehrere Anwender per file://-Protokoll darauf zugreifen zu lassen, raten wir aus mehreren Gründen dringend davon ab:

  • Erstens geben Sie jedem Anwender direkten Schreibzugriff auf das Projektarchiv, so dass jeder Benutzer das Projektarchiv versehentlich löschen oder anderweitig unbrauchbar machen kann.

  • Zweitens unterstützen nicht alle Netzwerk-Dateiprotokolle die Sperr- und Schutzmechanismen, die Subversion erfordert, sodass das Projektarchiv beschädigt werden kann. Das muss nicht sofort passieren, aber eines Tages werden zwei Anwender gleichzeitig auf das Projektarchiv zugreifen. Schlimmstenfalls bleibt die Beschädigung eine Zeit lang unbemerkt.

  • Drittes müssen die Dateizugriffsrechte stimmen. Auf einer reinen Windowsfreigabe können Sie sich vielleicht durchmogeln, aber SAMBA ist besonders schwierig einzurichten.

  • Wenn eine Person einen neueren Client installiert und dieser das Format des Projektarchivs hochstuft, können alle anderen solange nicht auf das Projektarchiv zugreifen, bis sie ebenfalls auf die neueste Clientversion aktualisiert haben.

Der Zugriff per file:// ist ausschließlich für lokalen Einzelbenutzerzugriff gedacht, speziell zum Testen und Debuggen. Wenn Sie das Projektarchiv gemeinsam nutzen wollen, sollten Sie wirklich einen richtigen Server einrichten. Das ist nicht annähernd so kompliziert, wie Sie vielleicht denken. Lesen Sie „Zugriff auf das Projektarchiv“ als Anleitung zur Auswahl und Einrichtung eines Servers.

Struktur des Projektarchivs

Bevor Sie Daten in das Projektarchiv importieren, sollten Sie sich Gedanken darüber machen, wie Sie Ihre Daten organisieren wollen. Wenn Sie eine der empfohlenen Strukturen verwenden, werden Sie es später sehr viel einfacher haben.

Es gibt ein paar empfohlene Standards, um die Daten innerhalb eines Projektarchivs zu organisieren. Die meisten Leute erstellen einen trunk-Ordner für die Stammentwicklung, einen branches-Ordner für die Entwicklungszweige und einen tags-Ordner zum Markieren von Ständen. Wenn ein Projektarchiv nur ein einziges Projekt enthält, ist die folgende Struktur zu empfehlen:

/trunk
/branches
/tags
    

Da dieses Layout so häufig benutzt wird, schlägt Ihnen TortoiseSVN beim Erstellen eines neuen Projektarchivs vor, diese Struktur anzulegen.

Falls ein Projektarchiv jedoch mehrere Projekte enthält, wird innerhalb der Struktur nach Zweigen (branches) organisiert:

/trunk/paint
/trunk/calc
/branches/paint
/branches/calc
/tags/paint
/tags/calc
    

...oder nach Projekt:

/paint/trunk
/paint/branches
/paint/tags
/calc/trunk
/calc/branches
/calc/tags
    

Nach Projekt zu organisieren ist sinnvoll, wenn die Projekte nicht eng miteinander verwandt sind und jedes für sich bearbeitet wird. Für verwandte Projekte, die Sie alle in einem Rutsch auschecken wollen oder die in einer Distribution zusammengefasst sind, ist es oft besser, nach Zweigen zu organisieren. Auf diese Weise müssen Sie nur den Stamm auschecken und die Beziehungen zwischen den Unterprojekten sind einfacher zu erkennen.

Wenn Sie die Struktur /trunk /tags /branches wählen, müssen Sie lediglich den gesamten Stamm kopieren, wenn Sie Zweige oder Marken erstellen. In gewisser Weise ist das der flexibelste Ansatz.

Für völlig unabhängige Projekte sollten Sie besser pro Projekt ein einzelnes Projektarchiv anlegen. Wenn Sie Änderungen übertragen, wird die Revisionsnummer des Projektarchivs und nicht die des Projekts hoch gezählt. Bei mehreren unabhängigen Projekten, die sich ein Archiv teilen, kann das zu Konfusion führen, wenn z. B. an einem der Projekte überhaupt nicht gearbeitet wird, an anderen jedoch viel. TortoiseSVN und Subversion zum Beispiel erscheinen auf demselben Server (tigris.org), sind aber völlig selbstständige Projekt(archiv)e mit voneinander unabhängiger Entwicklung und ohne Verwirrung über Versionsnummern.

Natürlich können Sie diese Empfehlungen auch ignorieren. Es steht Ihnen frei, ein Layout zu wählen, das am besten für Sie oder Ihr Team geeignet ist. Beachten Sie auch, dass egal, welche Wahl Sie treffen, diese nicht fix ist. Sie können das Layout später immer noch reorganisieren. Weil Zweige (branches) und Marken (tags) gewöhnliche Ordner in Subversion sind, können Sie diese ganz einfach mit TortoiseSVN umbenennen oder verschieben, wie Sie wollen.

Von einem Layout zu einem anderen zu wechseln ist lediglich eine Abfolge serverseitiger Umbenennungen. Wenn Ihnen die Art und Weise nicht gefällt, wie Dinge im Projektarchiv organisiert sind, jonglieren Sie einfach mit den Verzeichnissen herum.

Wenn Sie noch keine Ordnerstruktur in Ihrem Projektarchiv angelegt haben, sollten Sie das jetzt erledigen. Es gibt zwei Möglichkeiten dafür. Wenn Sie nur die einfache /trunk /tags /branches-Struktur wünschen, können Sie diese in drei Schritten mit Hilfe des Projektarchivbetrachters anlegen. Wenn Sie eine tiefer verschachtelte Hierarchie wünschen, sollten Sie die zunächst auf der lokalen Platte anlegen und dann in einem Schritt wie hier importieren:

  1. Erstellen Sie einen leeren Ordner auf Ihrer Festplatte

  2. Erstellen Sie in diesem Ordner die gewünschte Ordnerstruktur - kopieren Sie noch keine Dateien hinein!

  3. Importieren Sie diese Struktur durch Rechtsklick auf den obersten Ordner und Auswahl von TortoiseSVNImportieren... in das Projektarchiv. Im Import-Dialog geben Sie die URL des Projektarchivs ein und bestätigen mit OK. Dies importiert Ihren Ordner in das Projektarchiv und erstellt dort die gewünschte Ordnerstruktur.

Beachten Sie bitte, dass der Name des Ordners, den Sie importieren, nicht im Projektarchiv erscheint, sondern nur seine Inhalte. Erzeugen Sie z. B. folgende Ordnerstruktur:

C:\Temp\New\trunk
C:\Temp\New\branches
C:\Temp\New\tags

Importieren Sie C:\Temp\New in die Wurzel des Projektarchivs, die dann folgendermaßen aussehen wird:

/trunk
/branches
/tags

Projektarchiv sichern

Welches Projektarchivformat Sie auch immer verwenden, es ist sehr wichtig, regelmäßige Datensicherungen vorzunehmen und auch die gesicherten Daten zu überprüfen. Wenn der Server ausfällt und das Projektarchiv korrupt ist, haben Sie zwar noch die Arbeitskopie mit der letzten Version - aber ohne ein Backup verlieren Sie die gesamte Historie des Projekts!

Der einfachste (jedoch nicht empfohlene) Weg ein Backup zu erstellen, ist die Ordner des Projektarchivs einfach auf ein Backup-Medium zu kopieren. Wenn Sie dies tun, müssen Sie absolut sicher sein, dass während des Kopiervorgangs kein Zugriff auf das Projektarchiv erfolgt. Das bedeutet wirklich jeden Zugriff. Wird auf das Projektarchiv während des Kopiervorgangs zugegriffen (Web-Browser offen, WebSVN, Log anzeigen ...), dann ist das Backup wertlos.

Die empfohlene Methode ist, auf sichere Weise eine Kopie des Projektarchivs mit dem Befehl

svnadmin hotcopy path/to/repository path/to/backup

zu erstellen und anschließend die Kopie zu sichern.

Das Programm svnadmin wird automatisch installiert, wenn Sie den Subversion-Kommandozeilen-Client installieren. Am einfachsten geht das, wenn Sie bei der Installation von TortoiseSVN die Option bezüglich der Kommandozeilen-Tools aktivieren. Wenn Sie es vorziehen, können Sie die neueste Version der Kommandozeilen-Tools direkt von der Subversion-Webseite herunterladen.

Serverseitige Aktionsskripte

Ein Aktionsskript (Hook-Skript) ist ein Programm, das durch bestimmte Ereignisse im Projektarchiv gestartet wird, z. B., wenn eine neue Revision erzeugt oder eine Revisionseigenschaft verändert wird. Jedem Skript werden Informationen über das Ereignis selbst, die Ziele des Ereignisses und den Benutzernamen der Person, die das Ereignis ausgelöst hat, übergeben. Abhängig vom Rückgabewert des Aktionsskripts wird die Operation fortgesetzt, angehalten oder unterbrochen. Bitte lesen Sie dazu das Kapitel Erstellen von Projektarchiv-Hooks im Subversion-Buch.

Diese Aktionsskripte werden auf dem Server ausgeführt, der das Projektarchiv beherbergt. TortoiseSVN bietet Ihnen obendrein die Möglichkeit, lokale Aktionsskripte bei bestimmten Ereignissen auszuführen. Lesen Sie in „Clientseitige Aktionsskripte“ nach, wie das geht.

Beispiele für Aktionsskripte findet man im hooks-Ordner des Projektarchivs. Diese Beispiele sind für Unix/Linux-Server erstellt worden und müssen ein wenig angepasst werden, wenn Ihr Server unter Windows läuft. Das Aktionsskript kann eine einfache Batch-Datei oder ein ausführbares Programm sein. Das unten stehende Beispiel zeigt eine Batch-Datei, die als pre-revprop-change-Aktion eingesetzt werden kann.

rem Nur Änderungen an Logmeldungen zulassen.
if "%4" == "svn:log" exit 0
echo Eigenschaft '%4' kann nicht geändert werden >&2
exit 1

Beachten Sie, dass alle Ausgaben via stdout verworfen werden. Wenn Sie möchten, dass eine Fehlermeldung auch in TortoiseSVN angezeigt wird, müssen Sie diese Fehlermeldung via stderr ausgeben. In einer Batchdatei erreichen Sie dies über >&2.

Aktionen überschreiben

Falls ein Aktionsskript Ihre Übertragung verwirft, handelt es sich um eine endgültige Entscheidung. Sie können jedoch mit Hilfe der Zauberwort-Technik eine Ausnahmebehandlung in das Skript selbst einbauen. Falls das Skript eine Übertragung verwerfen will, durchsucht es zunächst die Logmeldung nach der Passphrase, einem bestimmten Wort oder auch einem Präfix eines Dateinamens. Wenn es das Zauberwort findet, akzeptiert es die Übertragung trotzdem. Andernfalls kann es die Übertragung, z. B. mit einer Meldung wie Du hast das Zauberwort nicht gesagt, blockieren. :-)

Auschecken aus Webseiten

Wenn Sie Ihr Subversion-Projektarchiv anderen Entwicklern zugängig machen wollen, möchten Sie vielleicht von Ihrer Webseite aus direkt darauf verweisen. Eine Möglichkeit besteht darin, einen Auscheck-Verweis für andere TortoiseSVN-Nutzer dort zu platzieren.

Wenn Sie TortoiseSVN installieren, registriert es ein neues tsvn:-Protokoll auf Ihrem Rechner. Sobald ein Anwender auf solch einen Verweis klickt, öffnet sich der Auschecken-Dialog mit der bereits ausgefüllten URL des Projektarchivs.

Um einen solchen Verweis auf Ihrer Webseite zu platzieren, müssen Sie entsprechenden Code hinzufügen. Ein Beispiel:

<a href="tsvn:http://project.domain.org/svn/trunk">
</a>

Selbstverständlich würde es noch besser aussehen, wenn Sie ein passendes Bild verwenden. Sie können das TortoiseSVN-Logoverwenden oder Ihr eigenes Bild nutzen.

<a href="tsvn:http://project.domain.org/svn/trunk">
<img src=TortoiseCheckout.png></a>

Sie können den Verweis auch auf eine spezifische Revision zeigen lassen, z. B.

<a href="tsvn:http://project.domain.org/svn/trunk?100">
</a>

.

Zugriff auf das Projektarchiv

Um TortoiseSVN (oder einen anderen Subversion-Client) nutzen zu können, benötigen Sie einen Ort, an dem Ihre Projektarchive liegen. Sie können diese entweder lokal anlegen und mit dem file://-Protokoll darauf zugreifen oder Sie können die Projektarchive auf einem Server anlegen und mit dem http://- oder svn://-Protokoll darauf zugreifen. Die beiden Serverprotokolle können zusätzlich verschlüsselt werden. Dazu verwenden Sie https://, svn+ssh:// oder svn:// mit SASL.

Wenn Sie einen öffentlichen Dienstleister wie SourceForge benutzen oder Ihr Server bereits von jemand anderem eingerichtet wurde, gibt es nichts weiter zu tun. Blättern Sie weiter zu Kapitel 4, Anleitung zum täglichen Gebrauch.

Wenn Ihnen kein Server zur Verfügung steht und Sie alleine arbeiten oder wenn Sie Subversion und TortoiseSVN isoliert testen wollen, sind lokale Projektarchive für Sie die beste Wahl. Legen Sie einfach wie in Kapitel 3, Das Projektarchiv ein lokales Projektarchiv auf ihrem Rechner an. Sie können den Rest dieses Kapitels überspringen und direkt zu Kapitel 4, Anleitung zum täglichen Gebrauch gehen.

Falls Sie in Erwägung gezogen haben, ein Projektarchiv für mehrere Benutzer auf einer Netzwerkfreigabe anzulegen, sollten Sie dies noch einmal überdenken. Lesen Sie in „Projektarchiv auf einer Netzwerkfreigabe“ nach, warum wir glauben, dass das eine schlechte Idee ist. Einen Server einzurichten, ist nicht so schwierig, wie es klingt und wird Ihnen höhere Zuverlässigkeit und eventuell auch höhere Geschwindigkeit bieten.

Detailliertere Informationen zu den Subversion-Serveroptionen und wie man die beste Architektur für Ihre Situation wählt, finden Sie in dem Subversion-Buch unter Serverkonfiguration.

In den frühen Tagen von Subversion war für die Einrichtung eines Servers ein sehr gutes Verständnis der Konfiguration erforderlich. In früheren Versionen des Handbuchs waren deshalb ausführliche Anleitungen zu dem Thema enthalten. Mittlerweile sind die Dinge jedoch einfacher geworden und es gibt bereits vorkonfigurierte Server mit fertigen Installationspaketen. Diese Verweise führen zu einigen Installationsprogrammen, die wir kennen

. Die neuesten Verweise finden sich stets auf der Subversion-Webseite.

Weitere Howto-Anleitungen finden Sie auf der TortoiseSVN-Webseite.

Kapitel 4. Anleitung zum täglichen Gebrauch

Inhaltsverzeichnis

Allgemeine Eigenschaften
Überlagerte Symbole
Kontextmenüs
Ziehen und Ablegen
Tastaturkürzel
Anmeldung
Fenster maximieren
Daten in ein Projektarchiv importieren
Import
Import an Ort und Stelle
Spezielle Dateien
Eine Arbeitskopie auschecken
Rekursionstiefe
Ihre Änderungen ins Projektarchiv übertragen
Der Übertragen-Dialog
Änderungslisten
Nur Teile von Dateien übertragen
Objekte vom Übertragen ausschließen
Logmeldungen
Fortschrittsdialog
Aktualisieren der Arbeitskopie mit Änderungen von anderen
Konflikte auflösen
Dateikonflikte
Eigenschaftskonflikte
Baumkonflikte
Statusinformationen anzeigen
Überlagerte Symbole
Detaillierter Status
Prüfe auf Änderungen
Unterschiede anzeigen
Änderungslisten
Zurückstellen
Log-Dialog
Den Log-Dialog starten
Aktionen im Revisionslog
Zusätzliche Informationen erhalten
Weitere Logmeldungen holen
Aktuelle Revision der Arbeitskopie
Datenintegration protokollieren
Ändern der Logmeldung und des Autors
Logmeldungen filtern
Statistiken anzeigen
Offline-Modus
Die Ansicht aktualisieren
Unterschiede anzeigen
Datei-Unterschiede
Zeilenende- und Leerzeichenoptionen
Ordner vergleichen
Bilder mit TortoiseIDiff vergleichen
Office-Dokumente vergleichen
Externe Programme
Neue Dateien und Ordner hinzufügen
Dateien oder Ordner kopieren/umbenennen/verschieben
Ignorieren von Dateien und Ordnern
Platzhalter in der Ignorierliste
Löschen, Verschieben und Umbenennen
Löschen von Dateien und Ordnern
Dateien und Ordner verschieben
Behandeln von Konflikten in der Groß-/Kleinschreibung
Externes Umbenennen reparieren
Nicht versionierte Dateien löschen
Änderungen rückgängig machen
Bereinigen
Projekt-Einstellungen
Subversion-Eigenschaften
TortoiseSVN-Projekteigenschaften
Eigenschaftseditoren
Externe Objekte
Externe Ordner
Externe Dateien
Externals per Ziehen und Ablegen erstellen
Verzweigen / Markieren
Einen Zweig oder eine Marke erstellen
Andere Wege, einen Zweig oder eine Marke erstellen
Auschecken oder Wechseln...
Zusammenführen
Einen Revisionsbereich zusammenführen
Zusammenführen zweier Bäume
Optionen beim Zusammenführen
Ergebnisse des Zusammenführens betrachten
Verfolgung der Datenintegration
Behandlung von Konflikten nach dem Zusammenführen
Wartung des Funktionszweiges
Sperren
Sperren von Dateien in Subversion
Eine Sperre erhalten
Eine Sperre freigeben
Den Sperrstatus prüfen
Nicht gesperrte Dateien mit Schreibschutz versehen
Aktionsskripte für Sperren
Erzeugen und Anwenden von Patches
Eine Patch-Datei erstellen
Eine Patchdatei anwenden
Wer hat welche Zeile geändert?
Annotieren für Dateien
Unterschiede annotieren
Projektarchivbetrachter
Revisionsgraphen
Knoten des Revisionsgraphen
Die Ansicht ändern
Den Graphen verwenden
Die Ansicht aktualisieren
Zweige ausdünnen
Eine Arbeitskopie exportieren
Eine Arbeitskopie aus der Versionskontrolle entfernen
Eine Arbeitskopie umplatzieren
Integration mit einem System zur Fehlerverfolgung
Eintragsnummern in Logmeldungen einfügen
Informationen vom Fehlerverfolgungssystem beziehen
Integration mit webbasierten Projektarchivbetrachtern
TortoiseSVN-Einstellungen
Allgemeine Einstellungen
Einstellungen des Revisionsgraphen
Überlagerte Symbole
Netzwerk-Einstellungen
Einstellungen für externe Programme
Gespeicherte Daten
Log-Puffer
Clientseitige Aktionsskripte
TortoiseBlame-Einstellungen
TortoiseUDiff-Einstellungen
Exportieren von TSVN-Einstellungen
Erweiterte Einstellungen
Letzter Schritt

Dieses Kapitel beschreibt den täglichen Umgang mit TortoiseSVN. Es ist nicht als Einführung in Versionskontrollsysteme gedacht und auch nicht als Einführung in Subversion (SVN). Dies ist mehr ein Nachschlagewerk, wenn Sie nicht mehr genau wissen, wie eine Funktion ausgeführt wird, Sie aber zumindest wissen, was Sie tun wollen.

Wenn Sie eine Anleitung für Versionskontrolle mit Subversion benötigen, empfehlen wir das fantastische Buch Versionskontrolle mit Subversion .

An diesem Dokument wird ständig gearbeitet, wie auch an TortoiseSVN und Subversion immer weitergearbeitet wird. Falls Sie Fehler feststellen, melden Sie diese an die Mailing-Liste, damit wir die Dokumentation aktualisieren können. Einige der Screenshots in diesem Dokument zeigen wahrscheinlich nicht den aktuellsten Stand der Software. Seien Sie bitte nachsichtig. Wir arbeiten an TortoiseSVN und der Dokumentation während unserer Freizeit.

Um das Beste aus der Anleitung zum täglichen Gebrauch herauszuholen:

  • Sie haben TortoiseSVN bereits installiert.

  • Sie kennen sich mit Versionskontrollsystemen aus.

  • Sie kennen die Grundlagen von Subversion.

  • Sie haben einen Server installiert und/oder haben Zugriff auf ein Subversion-Projektarchiv.

Allgemeine Eigenschaften

Dieser Abschnitt beschreibt einige Besonderheiten von TortoiseSVN, die für so ziemlich alles im Handbuch gelten. Beachten Sie, dass viele dieser Funktionen nur in einer Subversion-Arbeitskopie sichtbar sind.

Überlagerte Symbole

Abbildung 4.1. Explorer mit überlagerten Symbolen

Explorer mit überlagerten Symbolen


Eine der auffälligsten Eigenschaften von TortoiseSVN sind die überlagerten Symbole, die auf Dateien und Ordnern in Ihrer Arbeitskopie erscheinen. Sie zeigen Ihnen auf einen Blick an, welche Objekte verändert wurden. Lesen Sie in „Überlagerte Symbole“ nach, was die einzelnen Symbole bedeuten.

Kontextmenüs

Abbildung 4.2. Kontextmenü für einen Ordner unter Versionskontrolle

Kontextmenü für einen Ordner unter Versionskontrolle


Alle Befehle von TortoiseSVN werden über das Kontextmenü des Windows Explorers aufgerufen. Die meisten sind direkt sichtbar, wenn Sie einen Rechtsklick auf eine Datei oder Ordner machen. Welche Befehle angezeigt werden, hängt davon ab, ob das angeklickte Objekt oder sein übergeordneter Ordner unter Versionskontrolle stehen oder nicht. Das TortoiseSVN-Menü wird auch im Dateimenü des Explorers angezeigt.

Tipp

Manche selten genutzte Befehle stehen nur über das erweiterte Kontextmenü zur Verfügung. Um das erweiterte Kontextmenü aufzurufen, halten Sie die Umschalt-Taste gedrückt, während Sie einen Rechtsklick machen.

In manchen Fällen werden Sie mehrere TortoiseSVN-Einträge sehen. Das ist kein Fehler!

Abbildung 4.3. Explorer-Kontextmenü für Verknüpfungen in einem versionierten Ordner

Explorer-Kontextmenü für Verknüpfungen in einem versionierten Ordner


In diesem Beispiel sehen Sie eine nicht versionierte Verknüpfung in einem versionierten Ordner. Das Dateimenü des Explorers zeigt drei Einträge für TortoiseSVN an. Einer steht für den Ordner, einer für die Verknüpfung und einer für das Objekt, auf das die Verknüpfung zeigt. Damit Sie die drei Menüs unterscheiden können, besitzen die Symbole einen Indikator in der unteren rechten Ecke, der anzeigt, ob es sich um eine Datei, einen Ordner, eine Verknüpfung oder eine Mehrfachauswahl handelt.

Ziehen und Ablegen

Abbildung 4.4. Rechts-Ziehen-Menü für einen Ordner unter Versionskontrolle

Rechts-Ziehen-Menü für einen Ordner unter Versionskontrolle


Andere Befehle sind als Ziehen und Ablegen-Funktion vorhanden, wenn Sie Dateien oder Ordner innerhalb einer Arbeitskopie Rechts-Ziehen oder wenn Sie eine nicht versionskontrollierte Datei in eine Arbeitskopie Rechts-Ziehen.

Tastaturkürzel

Einige allgemeine Aktionen haben wohlbekannte Windows-Tastaturkürzel, werden aber nicht auf Schaltflächen oder in Menüs angezeigt. Wenn Ihnen einige wichtige Funktionen wie Aktualisieren der Anzeige nicht klar sind, schauen Sie hier nach.

F1

Hilfe, was sonst?

F5

Aktualisiert die Anzeige. Dies ist vielleicht der wichtigste Eintastenbefehl. Im Explorer wird diese Funktion die überlagerten Symbole aktualisieren. Im Übertragen-Dialog wird sie die Arbeitskopie erneut durchsuchen, um Ihnen die geänderten Dateien anzuzeigen. Im Log-Dialog wird sie das Projektarchiv erneut kontaktieren, um die neuesten Änderungen anzuzeigen.

Strg+A

Wähle alles. Diese Befehl kann zum Beispiel verwendet werden, um eine Fehlermeldung in eine E-Mail zu kopieren, oder um eine Liste der geänderten Dateien zu kopieren oder ...

Strg+C

Kopiert den markierten Text. Wenn kein Text, aber ein Listeneintrag oder ein Textfeld markiert ist, wird der Eintrag der Liste beziehungsweise des Textfeldes in die Zwischenablage kopiert.

Anmeldung

Wenn das Projektarchiv, auf das Sie zugreifen wollen, passwortgeschützt ist, erscheint folgender Anmeldedialog.

Abbildung 4.5. Anmeldedialog

Anmeldedialog


Geben Sie Ihren Benutzernamen und Ihr Passwort ein. Die Option bewirkt, dass TortoiseSVN die Anmeldeinformationen in einem von drei Unterordnern des Subversion-Konfigurationsverzeichnisses %APPDATA%\Subversion\auth ablegt:

  • svn.simple enthält die Daten für das einfache Anmeldeverfahren (Name/Passwort). Die Passwörter werden mit Hilfe der WinCrypt-API verschlüsselt und nicht als Klartext gespeichert.

  • svn.ssl.server enthält SSL-Server-Zertifikate.

  • svn.username enthält die Daten für Anmeldung nur mit Benutzernamen (ohne Passwort).

Wenn Sie die Anmeldedaten löschen wollen, können Sie dies von der Gespeicherte Daten-Seite der TortoiseSVN-Optionen aus tun. Die Schaltfläche Alle löschen löscht die Anmeldedaten aller Projektarchive. Die Schaltfläche Löschen... öffnet einen Dialog, in dem Sie wählen können, welche Anmeldedaten gelöscht werden sollen. Siehe

Wenn Sie möchten, dass Ihre Subversion-Anmeldeinformationen beim Abmelden oder Herunterfahren von Windows gelöscht werden, erstellen Sie ein Skript, dass das Verzeichnis %APPDATA%\Subversion\auth löscht, z. B.

@echo off
rmdir /s /q "%APPDATA%\Subversion\auth"

Eine Erklärung, wie man solche Skripte installiert, finden Sie unter https://www.windows-help-central.com/windows-shutdown-script.html.

Für weitere Informationen über Serverkonfiguration und Zugriffskontrolle lesen Sie bitte „Zugriff auf das Projektarchiv“.

Fenster maximieren

Viele der Dialoge von TortoiseSVN zeigen eine große Menge an Informationen an. Manchmal ist es sinnvoll, nur die Breite oder die Höhe zu maximieren, statt das Fenster auf Vollbild zu vergrößern. Zu diesem Zweck stehen Ihnen Abkürzungen auf der Maximieren-Schaltfläche zur Verfügung. Klicken Sie mit der mittleren Maustaste, wird vertikal maximiert, mit der rechten Maustaste horizontal.

Daten in ein Projektarchiv importieren

Import

Falls Sie in ein bereits existierendes Projektarchiv importieren, das schon einige Projekte enthält, ist dessen Struktur bereits festgelegt. Wenn Sie Daten in ein neues Projektarchiv importieren, sollten Sie sich vorher darüber Gedanken machen, wie Sie es organisieren. Lesen Sie „Struktur des Projektarchivs“ für weitere Hinweise.

Dieser Abschnitt beschreibt den Import-Befehl von Subversion, der dazu gedacht ist, eine Verzeichnisstruktur in ein Projektarchiv zu importieren. Obwohl er für diese Aufgabe geeignet ist, besitzt er doch einige Nachteile:

  • Abgesehen von den globalen Ignoriermustern, gibt es keine Möglichkeit, Dateien oder Ordner einzuschließen.

  • Der importierte Ordner wird nicht zu einer Arbeitskopie. Sie müssen eine Arbeitskopie aus dem Projektarchiv auschecken.

  • Es kann leicht passieren, dass Sie die Daten in einen falschen Ordner im Projektarchiv importieren.

Aus diesen Gründen empfehlen wir, dass Sie den Import-Befehl gar nicht nutzen, sondern die in „Import an Ort und Stelle“ beschriebene zweistufige Methode. Es sei denn, Sie führen den einfachen Schritt zum Anlegen der initialen /trunk /tags /branches-Struktur im Projektarchiv durch. Da Sie schon diesen Abschnitt lesen, folgt nun eine kurze Einführung ...

Bevor Sie ein Projekt in das Projektarchiv importieren, sollten Sie:

  1. Alle Dateien entfernen/löschen, die nicht unbedingt für das Projekt notwendig sind (z. B. temporäre Dateien, vom Compiler erzeugte Dateien wie *.obj, kompilierte EXE Dateien ...)

  2. Die Dateien und Ordner optimal anordnen. Obwohl es auch später noch immer möglich ist, die Dateien und Ordner umzubenennen oder zu verschieben, ist es doch empfehlenswert, schon vor dem Importieren eine saubere Struktur zu haben!

Wählen Sie nun den übergeordneten Ordner Ihrer Ordnerstruktur im Windows Explorer und öffnen Sie mit einem Rechtsklick das Kontextmenü. Wählen Sie den Befehl TortoiseSVNImportieren..., worauf der folgende Dialog erscheint:

Abbildung 4.6. Der Import-Dialog

Der Import-Dialog


In diesem Dialog geben Sie die URL des Projektarchivs ein, in das Sie Ihr Projekt importieren wollen. Es ist sehr wichtig zu verstehen, dass der lokale Ordner, den Sie importieren, nicht im Projektarchiv landet, sondern nur sein Inhalt. Wenn Sie z. B. die folgende Struktur haben:

C:\Projekte\Grafik\source
C:\Projekte\Grafik\doku
C:\Projekte\Grafik\bilder

und Sie importieren C:\Projekte\Grafik in http://meinserver.com/svn/trunk, könnten Sie überrascht feststellen, dass Ihre Unterverzeichnisse direkt in trunk anstelle eines Grafik-Unterverzeichnisses landen. Sie müssen das Unterverzeichnis als Teil der URL http://meinserver.com/svn/trunk/Grafik-X angeben. Beachten Sie, dass der Importbefehl automatisch Unterverzeichnisse im Projektarchiv anlegt, wenn diese noch nicht existieren.

Die Importmeldung wird als Logmeldung verwendet.

Standardmäßig werden Dateien und Ordner, die dem globalen Ignoriermuster entsprechen, nicht importiert. Um dieses Verhalten zu übergehen, aktivieren Sie die Option Ignorierte Dateien einschließen. Lesen Sie in „Allgemeine Einstellungen“ nach, wie man globale Ignoriermuster einrichtet.

Sobald Sie auf OK klicken, beginnt TortoiseSVN, die Daten in das Projektarchiv zu importieren. Beachten Sie bitte, dass dadurch Ihr Importordner nicht unter Versionskontrolle gestellt wird! Um eine Arbeitskopie zu erhalten, in der die Daten unter Versionskontrolle sind, müssen Sie die Daten frisch aus dem Projektarchiv auschecken. Oder Sie lesen weiter, um herauszufinden, wie man beim Import eine Arbeitskopie an Ort und Stelle erzeugen kann.

Import an Ort und Stelle

Angenommen, Sie haben bereits ein Projektarchiv und wollen eine neue Ordnerstruktur hinzufügen, folgen Sie diesen Schritten:

  1. Verwenden Sie den Projektarchivbetrachter, um einen neuen Projektordner direkt im Projektarchiv zu erstellen. Wenn Sie eines der Standardlayouts verwenden, möchten Sie diesen Ordner wahrscheinlich als einen Unterordner des Stammes statt der Wurzel des Projektarchivs erstellen. Der Projektarchivbetrachter zeigt die Struktur des Projektarchivs wie der Windows Explorer, damit Sie sehen können, wie Dinge organisiert sind.

  2. Checken Sie den neu erstellten Ordner über den zu importierenden Ordner aus. Es wird eine Warnung angezeigt, dass der Zielordner nicht leer ist. Ignorieren Sie die Warnung. Nun haben Sie einen versionierten Ordner mit nicht versioniertem Inhalt.

  3. Wählen Sie TortoiseSVNHinzufügen... auf dem versionierten Ordner, um Objekte zur Versionskontrolle hinzuzufügen. Sie können Dateien hinzufügen oder löschen, die Eigenschaft svn:ignore für Ordner setzen und weitere Änderungen vornehmen.

  4. Übertragen Sie den obersten Ordner und Sie erhalten nun eine versionierte Ordnerstruktur im Projektarchiv sowie eine Arbeitskopie, die aus dem existierenden Ordner heraus angelegt wurde.

Spezielle Dateien

Manchmal ist es notwendig, eine Datei unter Versionskontrolle zu haben, die benutzerspezifische Daten (z. B. absolute Pfade zu Anwendungen) enthält. Das bedeutet: Sie haben eine Datei, die von jedem Benutzer verändert werden muss, um sie an seine lokalen Einstellungen anzupassen. Aber eine Datei unter Versionskontrolle würde von jedem Benutzer jeweils wieder zum Projektarchiv übertragen werden und so die Änderungen von anderen Benutzern wieder überschreiben.

In solchen Fällen empfehlen wir die Verwendung von sogenannten Schablonen. Sie erstellen eine Datei, die alle Daten enthält, die Ihre Entwickler benötigen, fügen diese Datei der Versionskontrolle hinzu und lassen die Entwickler diese Datei auschecken. Anschließend muss jeder Entwickler eine Kopie dieser Datei erstellen und diese Kopie umbenennen. Danach ist das Ändern der Kopie kein Problem mehr.

Als Beispiel sehen Sie sich einmal das Erstellungsskript von TortoiseSVN an. Es ruft eine Datei namens default.build.user auf, die im Projektarchiv gar nicht existiert. Dort gibt es nur die Datei default.build.user.tmpl, die für jeden Entwickler die Vorlage für die Datei default.build.user darstellt. Bevor also das Skript ausgeführt werden kann, muss jeder Benutzer eine Kopie davon erstellen und in default.build.user umbenennen. In dieser Datei stehen Kommentare, mit denen wir erklären, welche Zeilen an die lokalen Einstellungen angepasst werden müssen.

Um die Benutzer nicht zu stören, ist die Datei default.build.user auch in der Ignorierliste ihres Elternordners eingetragen. Das heißt, wir haben die Subversion-Eigenschaft svn:ignored für diese Datei gesetzt. Damit erscheint diese Datei nicht in jedem Übertragen-Dialog als (noch) nicht versioniert.

Eine Arbeitskopie auschecken

Um eine Arbeitskopie zu erhalten, müssen Sie zunächst die Dateien aus einem Projektarchiv Auschecken.

Wählen Sie nun den Ordner im Windows Explorer, in dem Sie Ihre Arbeitskopie erstellen wollen und öffnen Sie mit einem Rechtsklick das Kontextmenü. Wählen Sie den Befehl TortoiseSVNAuschecken..., worauf der folgende Dialog erscheint:

Abbildung 4.7. Der Auschecken-Dialog

Der Auschecken-Dialog


Wenn Sie einen Ordnernamen angeben, der noch nicht existiert, wird dieser Ordner angelegt.

Wichtig

In der Standardeinstellung befindet sich der Auschecken-Befehl nicht im TortoiseSVN-Untermenü, sondern im Explorermenü. TortoiseSVN-Befehle, die sich nicht im Untermenü befinden, wird ein SVN-Präfix vorangestellt: SVN Auschecken...

Rekursionstiefe

Sie können die Tiefe der Rekursion beim Auschecken festlegen. Wenn Sie nur einige Bereiche eines großen Quellbaumes wollen, können Sie den obersten Ordner auschecken und danach die gewünschten Ordner rekursiv aktualisieren.

Vollständig rekursiv

Checkt den gesamten Baum rekursiv inklusive aller Dateien und Unterordner aus.

Direkte Unterobjekte, einschließlich Ordnern

Checken Sie das angegebene Verzeichnis inklusive aller Dateien und Unterordner aus, aber füllen Sie die Unterordner nicht aus.

Nur Dateiobjekte

Checken Sie das angegebene Verzeichnis inklusive aller Dateien aus, aber keine Unterordner.

Nur dieses Objekt

Checken Sie nur das Verzeichnis aus, füllen es aber nicht mit Dateien und Unterordnern.

Arbeitskopie

Behält die in der Arbeitskopie angegebene Rekursionstiefe bei. Diese Option wird im Auschecken-Dialog nicht verwendet, ist aber die Vorgabe in allen anderen Dialogen mit einer Angabe der Rekursionstiefe.

Ausschließen

Wird verwendet, um die Tiefe der Arbeitskopie zu reduzieren, nachdem ein Ordner bereits gefüllt wurde. Diese Option steht nur im Aktualisiere zu Revision Dialog zur Verfügung.

Um einfach nur die Elemente, die Sie auschecken wollen, auszuwählen und dafür zu sorgen, dass die resultierende Arbeitskopie nur die gewählten Objekte enthält, klicken Sie auf die Wähle Objekte... Schaltfläche. Diese öffnet einen neuen Dialog, in dem Sie die gewünschten Objekte markieren können. Die resultierende Arbeitskopie wird als spärliche Arbeitskopie bezeichnet. Wenn sie diese Arbeitskopie aktualisieren, werden die fehlenden Objekte ignoriert und nur die gewählten Dateien und Ordner aktualisiert.

Wenn Sie eine spärliche Arbeitskopie erstellen (indem Sie z. B. etwas anderes als vollständig rekursiv für die Auschecktiefe wählen), können Sie später einfach Unterordner mit einer der folgenden Methoden hinzufügen oder entfernen.

Spärliches Aktualisieren mittels Aktualisieren zu Revision

Machen Sie einen Rechtsklick auf den ausgecheckten Ordner, wählen Sie TortoiseSVNAktualisiere zu Revision... und anschließend Objekte auswählen.... Es öffnet sich der gleiche Dialog wie beim ersten Auschecken und Sie können die Objekte wählen, die in der Arbeitskopie enthalten sein sollen. Diese Methode ist sehr flexibel, kann aber langsam sein, da jedes Objekt im Ordner individuell aktualisiert wird.

Spärliches Aktualisieren mit dem Projektarchivbetrachter

Rufen Sie mit einem Rechtsklick auf den ausgecheckten Ordner den Projektarchivbetrachter auf. Suchen Sie den Unterordner, den Sie zu Ihrer Arbeitskopie hinzufügen wollen und wählen Sie KontextmenüAktualisiere zu Revision....

Spärliches Aktualisieren mittels Prüfe auf Änderungen

Im Prüfe auf Änderungen-Dialog machen Sie zunächst einen Umschalt-Klick auf Projektarchiv prüfen. Der Dialog zeigt alle Dateien, die sich im Projektarchiv befinden, aber von Ihnen noch nicht ausgecheckt wurden, als hinzugefügt. Markieren Sie den Ordner, den Sie zu Ihrer Arbeitskopie hinzufügen möchten, mit einem Rechtsklick und wählen Sie KontextmenüAktualisieren.

Diese Funktion ist sehr nützlich, wenn Sie nur Teile einer großen Projektstruktur auschecken wollen und gleichzeitig die Bequemlichkeit einer einzelnen Arbeitskopie wünschen. Nehmen wir an, Sie haben eine große Verzeichnisstruktur mit den Ordnern Projekt01 bis Projekt99 und Sie möchten nur die Ordner Projekt03, Projekt25 und Projekt76/Unterprojekt auschecken. Dann gehen Sie in folgenden Schritten vor:

  1. Checken Sie den Elternordner mit der Tiefe Nur dieses Objekt aus. Sie haben nun einen leeren Ordner der obersten Ebene.

  2. Wählen Sie den neuen Ordner und rufen Sie mittels TortoiseSVNProjektarchiv den Projektarchivbetrachter auf, um den Inhalt anzuzeigen.

  3. Machen Sie einen Rechtsklick auf Projekt03 und wählen Sie KontextmenüAktualisiere zu Revision.... Behalten Sie die Standardeinstellung bei und klicken Sie auf OK. Damit wird dieser Ordner vollständig befüllt.

    Wiederholen Sie diesen Vorgang für Projekt25.

  4. Navigieren Sie zu Projekt76/Unterprojekt und wiederholen Sie die Aktion. Beachten Sie, dass danach der Ordner Projekt76 bis auf den vollständig gefüllten Unterordner Unterprojekt leer ist. Subversion hat für Sie die dazwischen liegenden Ordner angelegt, ohne sie zu füllen.

Die Tiefe der Arbeitskopie ändern

Sobald Sie eine Arbeitskopie mit einer bestimmten Tiefe ausgecheckt haben, können Sie die Tiefe später per KontextmenüAktualisiere zu Revision... ändern, sodass Sie mehr oder weniger Inhalt erhalten. Stellen Sie sicher, dass Sie in diesem Dialog die Option Aktualisierungstiefe merken aktivieren.

Zugriff auf einen älteren Server

Server vor Version 1.5 kennen die Anfrage nach einer bestimmten Tiefe der Arbeitskopie nicht. Deshalb können sie mit solchen Anfragen nicht immer effizient umgehen. Der Befehl wird zwar trotzdem funktionieren, jedoch wird ein älterer Server die vollständigen Daten schicken und es dem Client überlassen, die nicht benötigten Teile auszufiltern, was einige Netzwerklast verursachen kann. Wenn möglich, sollten Sie ihren Server auf Version 1.5 oder neuer aktualisieren.

Wenn das Projekt Verweise auf externe Projekte enthält, die Sie nicht mit auschecken möchten, aktivieren Sie die Option Externals auslassen.

Wichtig

Wenn Externals auslassen markiert ist oder wenn Sie die Tiefe erhöhen wollen, müssen Sie Aktualisierungen Ihrer Arbeitskopie mittels TortoiseSVNAktualisiere zu Revision... statt TortoiseSVNAktualisieren durchführen. Die Standardaktualisierung wird alle externen Verweise aktualisieren und die aktuelle Tiefe beibehalten.

Wir empfehlen Ihnen, jeweils nur den trunk-Teil des Projektarchivs auszuchecken. Wenn Sie den übergeordneten Pfad auschecken, erhalten Sie den kompletten Dateibaum des Projektarchivs! So können Sie sehr schnell Ihre Festplatte füllen, da Sie z. B. für jede Marke in tags eine separate Kopie der Daten erhalten!

Exportieren

Manchmal ist es notwendig, eine lokale Kopie ohne die .svn-Ordner zu haben, zum Beispiel, um eine Zip-Datei mit dem Sourcecode zu erstellen. Bitte lesen Sie dazu „Eine Arbeitskopie exportieren“.

Ihre Änderungen ins Projektarchiv übertragen

Änderungen an Dateien im Projektarchiv abzuspeichern wird auch Übertragen der Änderungen genannt. Vor dem Übertragen jedoch sollten Sie sicherstellen, dass Ihre Arbeitskopie auch auf dem neuesten Stand ist. Sie können entweder den BefehlTortoiseSVNAktualisieren... sofort ausführen oder zunächst mittelsTortoiseSVNPrüfe auf Änderungen, welche Dateien sich lokal oder auf dem Server geändert haben.

Der Übertragen-Dialog

Wenn Ihre Arbeitskopie auf dem neuesten Stand ist und keine Konflikte vorhanden sind, können Sie Ihre Änderungen übertragen. Wählen Sie die Dateien/Ordner aus, die Sie übertragen wollen, und wählen Sie den Befehl TortoiseSVNÜbertragen....

Abbildung 4.8. Der Übertragen-Dialog

Der Übertragen-Dialog


Der Dialog zeigt alle geänderten Dateien einschließlich hinzugefügter, gelöschter oder nicht versionierter Dateien an. Wenn Sie bestimmte Dateien nicht übertragen wollen, wählen Sie diese einfach ab. Dateien, die noch nicht unter Versionskontrolle stehen, können Sie durch Markieren vor dem Übertragen hinzufügen.

Um schnell Gruppen von Dateien, z. B. alle versionierten oder alle geänderten Dateien auszuwählen, klicken Sie einfach auf die verschiedenen Auswahloptionen oberhalb der Dateiliste.

Informationen über die Färbung und Überlagerungen der Objekte entsprechend ihres Status finden Sie unter „Prüfe auf Änderungen“.

Objekte, die zu einem anderen Pfad im Projektarchiv gewechselt wurden, werden durch ein (s) gekennzeichnet. Vielleicht haben Sie während der Entwicklung etwas auf einen Zweig umgeschaltet und vergessen, zurück zu trunk zu wechseln. Dies ist Ihr Warnzeichen!

Dateien oder Ordner übertragen?

Wenn Sie Dateien übertragen, zeigt der Dialog nur die gewählten Dateien an. Wenn Sie Ordner übertragen, werden die geänderten Dateien automatisch selektiert. Übertragen eines Ordners bedeutet nicht, dass jede Datei in diesem Ordner übertragen wird. Es nimmt Ihnen lediglich die Arbeit ab, alle Dateien vorher auszuwählen.

Zu viele Dateien werden angezeigt

Wenn Sie das Gefühl haben, dass TortoiseSVN Ihnen viel zu viele Dateien im Übertragen-Dialog anzeigt, die nicht unter Versionskontrolle stehen (z. B. vom Compiler erzeugte Dateien oder Sicherungsdateien vom Editor), haben Sie mehrere Möglichkeiten, dies einzugrenzen. Sie können:

  • diese Dateien im Eigenschaftsdialog in die Liste der auszuschließenden Dateien aufnehmen. Dies hat Einfluss auf alle Arbeitskopien gleichzeitig.

  • Fügen Sie diese Dateien mit dem Befehl TortoiseSVNIgnorieren zur Liste der ignorierten Dateien hinzu. Dadurch werden diese Dateien in die svn:ignore-Eigenschaft des Ordners aufgenommen, in dem Sie den Befehl aufgerufen haben. Mit dem SVN-Eigenschaftendialog können Sie die svn:ignore eines Verzeichnisses ändern.

  • Die Datei mittels TortoiseSVNIgnorieren (rekursiv) zur svn:global-ignores hinzufügen. Dies beeinflusst das Verzeichnis, für das Sie die svn:global-ignores-Eigenschaft setzen und auch alle seine Unterordner.

Siehe „Ignorieren von Dateien und Ordnern“ für weitere Information.

Durch einen Doppelklick auf eine Datei im Übertragen-Dialog wird das Vergleichsprogramm gestartet, sodass Sie die Änderungen, die Sie vorgenommen haben, genauer ansehen können. Das Kontextmenü bietet weitere Optionen, wie Sie im Bild sehen können. Sie können von hier aus auch Dateien in eine andere Anwendung, z. B. einen Texteditor oder eine Entwicklungsumgebung, ziehen.

Sie können Einträge an- oder abwählen, indem Sie das Kästchen links vom Eintrag markieren. Für Verzeichnisse können Sie Umschalt-Auswahl verwenden, um die Auswahl rekursiv zu machen.

Die im unteren Bereich angezeigten Spalten können angepasst werden. Wenn Sie einen Rechtsklick auf einen Spaltenkopf machen, erscheint ein Kontextmenü, aus dem Sie die anzuzeigenden Spalten auswählen können. Sie können auch die Spaltenbreiten anpassen, indem sie die Spaltenköpfe mit den Ziehmarken justieren. Diese Einstellungen werden gespeichert, sodass Sie beim nächsten Mal dieselben Spalten sehen.

Standardmäßig werden bei einer erfolgreichen Übertragung die von Ihnen gesperrten Dateien wieder freigegeben. Wenn Sie jedoch die Sperren behalten möchten, aktivieren Sie die Option Sperren behalten. Als Vorgabewert des Auswahlkästchen wird aus der Einstellung no_unlock in der Subversion-Konfigurationsdatei verwendet. Lesen Sie in „Allgemeine Einstellungen“ nach, wie Sie die Subversion-Konfigurationsdatei bearbeiten können.

Warnung beim Übertragen in eine Markierung

Normalerweise wird nur in den Stamm (trunk) oder einen Zweig (branch) übertragen, aber nicht in einer Markierung (tag), denn eine Marke wird als unveränderlich betrachtet und sollte nicht modifiziert werden.

Wenn versucht wird, in eine Markierung zu übertragen, zeigt TortoiseSVN einen Bestätigungsdialog, um sicherzustellen, dass das wirklich gewünscht ist. Meistens werden solche Übertragungen versehentlich angestoßen.

Diese Prüfung funktioniert jedoch nur, wenn das Layout des Projektarchivs dem empfohlenen Standard entspricht und die Namen trunk, branches und tags verwendet, um die drei Hauptbereiche zu kennzeichnen. Falls Ihre Konfiguration nicht dem Standard entspricht, können Sie die Erkennung, was als Stamm/Zweig/Marke erkannt wird (auch Klassifizierungsmuster genannt), im Einstellungsdialog anpassen: „Einstellungen des Revisionsgraphen“

Ziehen und Ablegen

Sie können auch aus anderen Ordnern Dateien in den Übertragen-Dialog ziehen, solange die Arbeitskopie aus demselben Projektarchiv ausgecheckt wurde. Angenommen, Sie haben eine riesige Arbeitskopie und mehrere Explorerfenster mit Sichten auf verschiedene Ordner Ihrer Arbeitskopie geöffnet. Wenn Sie die Übertragung nicht aus dem obersten Ordner heraus starten wollen, weil das Durchsuchen der Arbeitskopie nach geänderten Dateien seine Zeit dauert, können Sie die Übertragung in einem Ordner starten und weitere Objekte aus den anderen Ordnern in den Dialog ziehen, die dann auf einen Schlag mit übertragen werden.

Sie können unversionierte Dateien, die sich in einer Arbeitskopie befinden, direkt in den Übertragen-Dialog ziehen. Diese Dateien werden dann automatisch zur Versionskontrolle hinzugefügt.

Wenn Sie Dateien aus der unteren Liste des Übertragen-Dialogs in das Eingabefeld für die Logmeldung ziehen, werden die Pfadnamen im Klartext in das Eingebefeld eingefügt. Das ist dann nützlich, wenn Sie die von der Übertragung betroffenen Pfade in der Logmeldung erwähnen wollen.

Externes Umbenennen reparieren

Manchmal werden Dateien außerhalb von Subversion umbenannt. Sie werden in der Dateiliste als eine fehlende und eine nicht-versionierte Datei angezeigt. Damit Sie die Historie der Datei nicht verlieren, müssen Sie Subversion über die Umbenennung informieren. Markieren Sie einfach beide, die alte (fehlende) und die neue (unversionierte) Datei und wählen Sie KontextmenüUmbenennen reparieren, um die beiden Dateien zu einer Umbenennung zusammenzufassen.

Repariere externe Kopien

Wenn Sie eine Datei kopiert haben, ohne den entsprechenden Subversion-Befehl zu benutzen, können Sie diese Kopie reparieren, sodass die neue Datei ihre Historie nicht verliert. Markieren Sie einfach beide, die alte (normal oder verändert) und die neue (unversionierte) Datei und wählen Sie KontextmenüKopie reparieren, um die beiden Dateien zu einer Kopie zusammenzufassen.

Änderungslisten

Der Übertragen-Dialog unterstützt die Änderungslisten von Subversion, mit der zueinander gehörende Dateien gruppiert werden können. Eine Beschreibung dieser Funktion findet sich in „Änderungslisten“.

Nur Teile von Dateien übertragen

Manchmal möchten Sie nur Teile der Änderungen übertragen, die Sie an einer Datei vorgenommen haben. So etwas passiert normalerweise, wenn Sie an etwas arbeiten, jedoch ein dringender Bugfix übertragen werden muss, der sich in derselben Datei befindet, an der Sie gerade arbeiten.

Machen Sie einen Rechtsklick auf die Datei und wählen Sie KontextmenüNach dem Übertragen wiederherstellen. Dadurch wird eine Kopie der Datei im aktuellen Zustand erstellt. Anschließend können Sie die Datei z. B. in einem Texteditor bearbeiten und die Änderungen entfernen, die Sie nicht übertragen möchten. Nach dem Speichern übertragen Sie die Datei.

TortoiseMerge benutzen

Wenn Sie die Datei mit TortoiseMerge bearbeiten, können Sie dies wie gewohnt tun. Außerdem haben Sie die Möglichkeit, alle Änderungen, die Sie übernehmen wollen, per Rechtsklick und KontextmenüDiese Änderung markieren einzuschließen. Schließlich können Sie perRechtsklick und KontextmenüDie markierten Änderungen beibehalten. Dadurch behält die rechte Ansicht nur die markierten Änderungen und die nicht markierten Änderungen werden zurückgenommen.

Nachdem die Übertragung durchgeführt wurde, wird die Kopie der Datei automatisch wiederhergestellt. Sie erhalten Ihre Datei inklusive der nicht übertragenen Änderungen zurück.

Objekte vom Übertragen ausschließen

Manchmal arbeiten Sie mit versionierten Dateien, die sich häufig ändern, die Sie aber nicht übertragen wollen. Eventuell deutet das auf einen Mangel in Ihrem Erstellungsprozess hin: Warum sind diese Dateien versioniert? Sollten Sie nicht besser mit Vorlagen arbeiten? Aber manchmal ist es unvermeidlich. Ein klassischer Grund ist, dass Ihre Entwicklungsumgebung bei jedem Generieren einen Zeitstempel in der Projektdatei verändert. Die Projektdatei muss versioniert sein, da sie alle zum Generieren erforderlichen Einstellungen enthält, aber sie muss nicht übertragen werden, nur weil sich der Zeitstempel geändert hat.

Um in diesen heiklen Fällen zu helfen, gibt es eine reservierte Änderungsliste namens ignore-on-commit. Jede zu dieser Änderungsliste hinzugefügte Datei wird im Übertragen-Dialog nicht markiert. Sie können die Änderungen übertragen, müssen die Datei aber von Hand wählen.

Logmeldungen

Achten Sie darauf, dass Sie eine Logmeldung eingeben, die die von Ihnen vorgenommenen Änderungen beschreibt. So können Sie später beim Durchblättern der Projekt-Logmeldungen sehen, was wann passiert ist. Die Nachricht kann so lang oder so kurz sein, wie Sie möchten. Viele Projekte haben Richtlinien für das, was enthalten sein sollte, die zu verwendende Sprache und manchmal sogar ein strenges Format.

Sie können Ihre Logmeldungen mit einfachen Formatierungen versehen. Dazu wird eine Konvention ähnlich derer in E-Mails angewendet. Um text zu formatieren, verwenden Sie *text* für fett, _text_ für unterstrichen und ^text^ für kursiv.

Abbildung 4.9. Rechtschreibprüfung beim Eingeben einer Logmeldung

Rechtschreibprüfung beim Eingeben einer Logmeldung


TortoiseSVN enthält eine Rechtschreibprüfung, die Sie bei der Korrektur Ihrer Logmeldungen unterstützt. Sie hebt sämtliche falsch geschriebenen Wörter hervor. Verwenden Sie das Kontextmenü, um auf die Korrekturvorschläge zuzugreifen. Verständlicherweise kennt die Rechtschreibprüfung nicht jeden technischen Ausdruck, den Sie verwenden, sodass manchmal korrekt geschriebene Wörter als fehlerhaft markiert werden. Aber keine Sorge. Sie können diese Wörter über das Kontextmenü zu Ihrem persönlichen Wörterbuch hinzufügen.

Der Dialog zur Eingabe von Logmeldungen enthält auch eine Funktion zum Autovervollständigen von Datei- und Funktionsnamen. Diese verwendet reguläre Ausdrücke, um Klassen- sowie Funktionsnamen aus den (Text-) Dateien, die Sie übertragen, zu extrahieren sowie die Dateinamen selbst. Wenn ein von Ihnen eingegebenes Wort mit einem Eintrag in der Liste übereinstimmt (sobald Sie mindestens drei Zeichen eingegeben oder Strg+Leerzeichen gedrückt haben), erscheint eine Liste, aus der Sie den vollständigen Namen wählen können. Die mit TortoiseSVN gelieferten regulären Ausdrücke befinden sich im TortoiseSVN-Installationsordner bin. Sie können auch Ihre eigenen regulären Ausdrücke definieren und in %APPDATA%\TortoiseSVN\autolist.txt speichern. Selbstverständlich wird ihre eigene Autolist bei einem Update von TortoiseSVN nicht überschrieben. Sollten Sie noch keine Erfahrung mit regulären Ausdrücken besitzen, können Sie sich die Einführung in https://en.wikipedia.org/wiki/Regular_expression

Den regulären Ausdruck korrekt hinzubekommen, kann trickreich sein. Um Ihnen dabei etwas zur Hand zu gehen, gibt es einen Testdialog, in dem Sie einen regulären Ausdruck gegen eine Liste von Dateien testen können. Diesen Dialog können Sie per Kommandozeile mittels TortoiseProc.exe /command:autotexttest starten.

Weiterhin enthält das Logfenster die Möglichkeit, Textbausteine zu verwenden. Diese werden in der Vorschlagsliste angezeigt, sobald Sie das Kürzel für einen Textbaustein eingegeben haben. Indem Sie den Baustein auswählen, wird der vollständige Text in die Logmeldung eingefügt. Die mit TortoiseSVN installierten Textbausteine finden Sie im bin-Ordner des Installationsverzeichnisses. Sie können auch Ihre eigenen Textbausteine erstellen und in %APPDATA%\TortoiseSVN\snippet.txt ablegen. # dient als Kommentarzeichen. Zeilenumbrüche können mittels \n und \r eingefügt werden. Für einen Rückwärtsschrägstrich verwenden Sie \\.

Sie können die zuletzt verwendeten Logmeldungen wiederverwenden. Dazu klicken Sie auf Letzte Meldungen und wählen einen Eintrag aus der Liste der Meldungen für dieses Projektarchiv aus. Die Anzahl der zu speichernden Logmeldungen kann in den Einstellungen festgelegt werden.

Auf der Seite Gespeicherte Daten in den TortoiseSVN-Einstellungen können Sie alle gespeicherten Logmeldungen auf einmal löschen. Alternativ können Sie im Fenster Letzte Meldungen Meldungen markieren und mittels Entfernen einzeln löschen.

Wenn Sie die markierten Pfade in Ihre Logmeldung aufnehmen möchten, können Sie den Befehl KontextmenüNamensliste einfügen im Eingabefeld verwenden.

Eine weitere Möglichkeit besteht darin, die Dateien einfach aus der Dateiliste in das Eingabefeld zu ziehen.

Spezielle Ordnereigenschaften

Es gibt mehrere spezielle Ordnereigenschaften, die z. B. für die Formatierung von Logmeldungen und die Rechtschreibkorrektur verwendet werden können. Sehen Sie dazu „Projekt-Einstellungen“.

Integration mit Fehlerverfolgungssystem

Wenn Sie die Fehlerverfolgung aktiviert haben, können Sie in das Feld Fehler-ID / Eintrags-Nr: eine oder mehrere Eintragsnummer(n) eingeben. Mehrere Einträge müssen durch Kommata getrennt werden. Alternativ können Sie bei Verwendung von regulären Ausdrücken die Eintragsnummern direkt in die Logmeldung einfließen lassen. Mehr dazu finden Sie in „Integration mit einem System zur Fehlerverfolgung“.

Fortschrittsdialog

Wenn Sie schlussendlich auf OK klicken, wird die Übertragung gestartet und der Fortschrittsdialog angezeigt.

Abbildung 4.10. Eine laufende Übertragung im Fortschrittsdialog

Eine laufende Übertragung im Fortschrittsdialog


Der Fortschrittsdialog verwendet eine Farbcodierung, um verschiedene Aktionen anzuzeigen

Blau

Übertrage eine Änderung.

Purpur

Übertragen eines neuen Objekts.

Dunkelrot

Übertragen einer Löschung oder Ersetzen eines Objekts.

Schwarz

Alle anderen Objekte.

.

Dies ist das Standard-Farbschema, aber Sie können die Farben im Einstellungsdialog anpassen. Siehe „TortoiseSVN-Farben“ für weitere Informationen.

Aktualisieren der Arbeitskopie mit Änderungen von anderen

Abbildung 4.11. Der Fortschrittsdialog nach Abschluss der Aktualisierung

Der Fortschrittsdialog nach Abschluss der Aktualisierung


Änderungen von anderen sollten Sie regelmäßig in Ihre eigene Arbeitskopie einfügen. Änderungen von anderen in die eigene Arbeitskopie einfügen wird auch Aktualisieren genannt. Sie können einzelne Dateien, mehrere Dateien, ganze Ordner oder gleich die komplette Arbeitskopie aktualisieren. Wählen Sie einfach die Dateien oder Ordner aus, die Sie aktualisieren möchten, und öffnen Sie dann das Kontextmenü durch einen Rechtsklick. Im Kontextmenü wählen Sie dann den Befehl TortoiseSVNAktualisieren aus und ein Fortschrittsdialog wird erscheinen. Änderungen von anderen werden in Ihre Arbeitskopie eingefügt, wobei Ihre eigenen Änderungen selbstverständlich beibehalten werden. Das Projektarchiv selbst wird durch eine Aktualisierung nicht verändert.

Der Fortschrittsdialog verwendet eine Farbcodierung, um verschiedene Aktionen anzuzeigen

Purpur

Neues Objekt zur Arbeitskopie hinzugefügt.

Dunkelrot

Überflüssiges Objekt, das aus der Arbeitskopie gelöscht wurde oder fehlendes Objekt, das in der Arbeitskopie ersetzt wurde.

Grün

Änderungen aus dem Projektarchiv wurden erfolgreich mit Ihren lokalen Änderungen zusammengeführt.

Hellrot

Änderungen aus dem Projektarchiv wurden mit Ihren lokalen Änderungen zusammengeführt. Es gab jedoch Konflikte, die Sie noch auflösen müssen.

Schwarz

Unverändertes Objekt in Ihrer Arbeitskopie, das durch ein neueres Objekt aus dem Projektarchiv ersetzt wurde.

.

Dies ist das Standard-Farbschema, aber Sie können die Farben im Einstellungsdialog anpassen. Siehe „TortoiseSVN-Farben“ für weitere Informationen.

Wenn Sie Konflikte während einer Aktualisierung erhalten, dann zeigt der Fortschrittsdialog diese Dateien rot markiert an. Dies kann passieren, wenn jemand anders dieselbe Stelle in einer Datei geändert hat wie Sie und diese Änderungen nicht zusammenpassen. Ein Doppelklick auf diese roten Einträge öffnet einen Konflikteditor, mit dem Sie solche Konflikte ganz einfach von Hand auflösen können.

Sobald die Aktualisierung beendet ist, zeigt der Fortschrittsdialog eine Zusammenfassung der aktualisierten, hinzugefügten und gelöschten Objekte unterhalb der Dateiliste an. Diese Information kann mittels Strg+C in die Zwischenablage kopiert werden.

Der Aktualisieren-Standardbefehl hat keine Optionen und aktualisiert ihre Arbeitskopie zur HEAD-Revision des Projektarchivs, was der häufigste Anwendungsfall ist. Wenn Sie mehr Kontrolle über diesen Vorgang wünschen, sollten Sie stattdessen den Befehl TortoiseSVNAktualisiere zu Revision... verwenden. Dieser erlaubt es, Ihre Arbeitskopie nicht nur zur aktuellsten, sondern zu einer bestimmten Revision zu aktualisieren. Nehmen wir an, Ihre Arbeitskopie ist in Revision 100, aber sie möchten den Zustand in Revision 50 abbilden, dann aktualisieren Sie einfach zu Revision 50.

Im selben Dialog können Sie auch die Aktualisierungstiefe wählen, auf die der aktuelle Ordner gesetzt werden soll. Die verwendeten Begriffe werden in „Rekursionstiefe“ beschrieben. Die Vorgabe ist Arbeitskopie, was die aktuelle Tiefeneinstellung beibehält. Sie können die Tiefe auch merken lassen, was bedeutet, dass diese Tiefe von nun an als Vorgabe verwendet wird und dass nachfolgende Aktualisierungen diese Einstellung verwenden.

Um es für Sie einfacher zu machen, bestimmte Objekte vom Auschecken ein- oder auszuschließen, klicken Sie auf die Schaltfläche Objekte wählen.... Diese öffnet einen neuen Dialog, in dem Sie die Objekte, die sie in ihrer Arbeitskopie haben wollen, an- oder abwählen können.

Sie können auch wählen, ob externe Projekte bei der Aktualisierung ignoriert werden (also Projekte, die durch svn:externals referenziert werden).

Achtung

Wenn Sie eine Datei oder Ordner auf eine bestimmte Revision aktualisieren, sollten Sie keine Änderungen daran vornehmen. Sie werden die Fehlermeldung Die Arbeitskopie ist nicht aktuell erhalten, sobald Sie versuchen, diese Dateien oder Ordner zu übertragen! Wenn Sie Änderungen an Dateien rückgängig machen und mit einer vorherigen Version weiterarbeiten wollen, können Sie mit Hilfe des Log-Dialogs zu einer früheren Version zurückkehren. Lesen Sie in „Revisionen im Projektarchiv rückgängig machen“ nach, welche Methoden Ihnen dazu zur Verfügung stehen.

Der Befehl TortoiseSVNAktualisieren zu Revision kann manchmal nützlich sein, um zu überprüfen, wie Ihr Projekt zu einem früheren Zeitpunkt aussah. Im Allgemeinen ist es jedoch keine gute Idee, einzelne Dateien in einen früheren Zustand zu versetzen, da dadurch Ihre Arbeitskopie inkonsistent wird. Wenn die Datei, die Sie aktualisieren, umbenannt wurde, kann es sogar passieren, dass sie aus Ihrer Arbeitskopie verschwindet, da zu einem früheren Zeitpunkt keine Datei dieses Namens im Projektarchiv existierte. Beachten Sie bitte, dass das überlagerte Symbol des Objekts den normal-Status anzeigt und das Objekt somit nicht von aktualisierten Objekten unterschieden werden kann.

Wenn Sie lediglich eine lokale Kopie einer alten Version einer Datei haben wollen, ist es besser, dafür den Befehl KontextmenüRevision speichern unter... aus dem Log-Dialog zu verwenden.

Mehrere Dateien/Ordner

Wenn Sie mehrere Dateien und Ordner im Explorer auswählen und dann Aktualisieren... ausführen, so werden alle Dateien und Ordner auf dieselbe Revision aktualisiert, sogar dann, wenn zwischen den einzelnen Aktualisierungen jemand anders Änderungen zum Projektarchiv übertragen hat.

Konflikte auflösen

Ab und an werden Sie einen Konflikt erhalten, wenn Sie Ihre Arbeitskopie aktualisieren oder zu einer anderen URL wechseln. Es gibt zwei Arten von Konflikten:

Dateikonflikte

Ein Dateikonflikt entsteht, wenn zwei (oder mehr) Entwickler dieselben Zeilen einer Datei geändert haben.

Baumkonflikte

Ein Baumkonflikt entsteht, wenn ein Entwickler eine Datei oder einen Ordner umbenannt, verschoben oder gelöscht hat, den ein anderer Entwickler ebenfalls umbenannt, verschoben, gelöscht oder bearbeitet hat.

Dateikonflikte

Ein Konflikt tritt dann auf, wenn mehrere Personen die gleichen Zeilen in einer Datei verändert haben. Da Subversion nichts über Ihr Projekt weiß, überlässt es in solchen Fällen Ihnen, den Konflikt aufzulösen. Die sich in Konflikt befindlichen Bereiche sind folgendermaßen markiert:

<<<<<<< Dateiname
    Ihre Änderungen
=======
    Code aus dem Projektarchiv
>>>>>>> Revision

Außerdem werden für jede Datei in Konflikt drei weitere Dateien in Ihrem Verzeichnis erstellt:

filename.ext.mine

Dies ist die Datei, so wie Sie war, bevor Sie Ihre Arbeitskopie aktualisierten. Das heißt, es ist Ihre eigene Originaldatei inklusive der Änderungen, die Sie selbst vorgenommen haben.

filename.ext.rOLDREV

Dies ist die Datei, wie Sie ursprünglich war, ohne jegliche Änderungen, auch ohne die Änderungen, die Sie selbst an der Datei vorgenommen haben.

filename.ext.rNEWREV

Dies ist die Datei, wie sie im Projektarchiv gerade aktuell ist, d. h., diese Datei hat die Änderungen von den anderen Mitarbeitern bereits integriert, jedoch noch nicht die Ihren.

Sie können entweder einen externen Konflikteditor perTortoiseSVNKonflikt bearbeiten aufrufen oder Sie können den Konflikt mit einem beliebigen Texteditor manuell auflösen. Sie müssen entscheiden, wie der Code aussehen soll, die notwendigen Änderungen vornehmen und die Datei speichern. Mit einem Konflikteditor wie TortoiseMerge oder einem der anderen beliebten Programme ist das im allgemeinen einfacher, da diese die betroffenen Dateien normalerweise in einer Drei-Fenster-Sicht anzeigen und Sie sich keine Gedanken über die Konfliktmarken machen müssen. Wenn Sie einen Texteditor verwenden, müssen sie manuell nach Zeilen suchen, die mit <<<<<<< beginnen.

Anschließend müssen Sie Subversion noch mitteilen, dass Sie den Konflikt aufgelöst haben. Dies geschieht mit dem Befehl TortoiseSVNKonflikt aufgelöst. Bitte beachten Sie, dass dieser Befehl nicht den Konflikt selbst löst, sondern nur Subversion mitteilt, dass Sie selbst den Konflikt bereits gelöst haben. Der Befehl macht nichts weiter als die drei zusätzlich erstellten Dateien filename.ext.mine und filename.ext.r*zu löschen, damit sie Ihre Änderungen in das Projektarchiv übertragen können.

Wenn ein Konflikt zwischen Binärdaten besteht, versucht Subversion nicht, die Daten selbst zusammenzuführen. Die lokale Datei bleibt unverändert (exakt so, wie sie Ihrer letzten Änderung entspricht) und Sie erhalten Dateiname.ext.r* Dateien. Wenn Sie Ihre eigenen Änderungen verwerfen wollen, tun Sie das mit dem Befehl Rückgängig. Wenn Sie Ihre Version beibehalten und die Version im Projektarchiv überschreiben wollen, verwenden Sie den Befehl Konflikt aufgelöst und übertragen anschließend die Daten ins Projektarchiv.

Sie können den Befehl Konflikt aufgelöst für mehrere Dateien verwenden, indem Sie den übergeordneten Ordner markieren und TortoiseSVN Konflikt aufgelöst... aus dem Kontextmenü wählen. Dies öffnet einen Auswahldialog, in dem alle konfliktbehafteten Dateien aufgelistet sind. Wählen Sie die Dateien, die Sie als aufgelöst markieren wollen.

Eigenschaftskonflikte

Ein Eigenschaftskonflikt entsteht dann, wenn zwei oder mehr Entwickler dieselbe SVN-Eigenschaft verändert haben. Wie bei Dateikonflikten können nur Entwickler solche Konflikte auflösen.

Wenn eine der Änderungen die andere überschreiben soll, wählen Sie entweder Mit der lokalen Eigenschaft auflösen oder Mit der Eigenschaft aus dem Projektarchiv auflösen. Wenn die Änderungen zusammengeführt werden müssen, wählen Sie Revisionseigenschaft bearbeiten, tragen dort den gewünschten Wert ein und markieren den Konflikt als aufgelöst.

Baumkonflikte

Ein Baumkonflikt entsteht, wenn ein Entwickler eine Datei oder einen Ordner umbenannt, verschoben oder gelöscht hat, den ein anderer Entwickler ebenfalls umbenannt, verschoben, gelöscht oder bearbeitet hat. Es gibt verschiedene Ursachen für Baumkonflikte und alle erfordern unterschiedliche Vorgehensweisen, um den Konflikt aufzulösen.

Wenn eine Datei in Subversion lokal gelöscht wird, wird sie auch aus dem lokalen Dateisystem gelöscht. Das bedeutet, dass kein überlagertes Symbol angezeigt werden kann, wenn sie Teil eines Baumkonfliktes ist und dass Sie den Konflikt nicht mit Hilfe eines Rechtsklicks auflösen können. Verwenden Sie stattdessen den Auf Änderungen prüfen Dialog, um den Konflikt bearbeiten zu können.

TortoiseSVN kann dabei helfen, Änderungen zusammenzuführen, aber es kann zusätzliche Arbeit erforderlich sein, um die Konflikte aufzulösen. Bedenken Sie, dass nach eine Aktualisierung die BASE der Arbeitskopie dem Inhalt des Projektarchivs entspricht. Wenn Sie eine Änderung nach dem Aktualisieren rückgängig machen, wird das Objekt in den Status des Projektarchivs zurückversetzt und nicht in den Zustand, in dem Sie begonnen haben, Ihre eigenen Änderungen durchzuführen.

Lokal gelöscht, eingehende Änderung beim Aktualisieren

  1. Entwickler A verändert die Datei Foo.c und überträgt die Änderung ins Projektarchiv.

  2. Entwickler B benennt gleichzeitig die Datei Foo.c in seiner Arbeitskopie in Bar.c um oder löscht Foo.c bzw. den Elternordner.

Eine Aktualisierung der Arbeitskopie von Entwickler B resultiert in einem Baumkonflikt:

  • Die Datei Foo.c wurde aus der Arbeitskopie gelöscht, ist aber gleichzeitig als Baumkonflikt markiert.

  • Wenn ein Konflikt nicht von einem Löschen, sondern von einem Umbenennen herrührt, ist die DateiBar.c als hinzugefügt markiert, enthält aber nicht die Änderungen von Entwickler A.

Entwickler B muss sich nun entscheiden, ob er die Änderungen von Entwickler A übernehmen möchte. Im Fall des Umbenennens kann er die Änderungen an Foo.c in Bar.c zusammenführen. Für einfache Löschungen kann er das Objekt mit den Änderungen von Entwickler A beibehalten und das Löschen verwerfen. Oder er kann, indem er den Konflikt ohne weitere Aktionen als aufgelöst markiert, die Änderungen von Entwickler A verwerfen.

Der Konfliktbearbeitungsdialog ermöglicht es, Änderungen zusammenzuführen, wenn das Original der umbenannten Datei Bar.c gefunden werden kann. Wenn es mehrere in Frage kommende Dateien gibt, wird eine Schaltfläche für jede Datei angezeigt, was die Auswahl der zutreffenden Datei erlaubt.

Lokal geändert, eingehendes Löschen beim Aktualisieren

  1. Entwickler A benennt die Datei Foo.c in Bar.c um und überträgt die Änderung ins Projektarchiv.

  2. Entwickler B verschiebt die Datei Foo.c in seiner Arbeitskopie.

Oder im Fall eines verschobenen Ordners ...

  1. Entwickler A benennt den Elternordner FooOrdner in BarFolder um und überträgt die Änderung ins Projektarchiv.

  2. Entwickler B verschiebt die Datei Foo.c in seiner Arbeitskopie.

Eine Aktualisierung der Arbeitskopie von Entwickler B führt zu einem Baumkonflikt. Für einen einfachen Dateikonflikt:

  • Die Datei Bar.c wird als normale Datei zur Arbeitskopie hinzugefügt.

  • Die Datei Foo.c ist als hinzugefügt mit Historie markiert und hat einen Baumkonflikt.

Für einen Ordnerkonflikt:

  • BarOrdner wird als normaler Ordner zur Arbeitskopie hinzugefügt.

  • Der Ordner FooOrdner ist als hinzugefügt mit Historie markiert und hat einen Baumkonflikt.

    Die Datei Foo.c ist als verändert markiert.

Entwickler B muss nun entscheiden, ob er die Reorganisation durch Entwickler A übernehmen will und seine Änderungen in der entsprechenden Datei in der neuen Struktur zusammenführt oder ob er einfach die Änderungen von A rückgängig macht und die lokale Datei beibehält.

Um ihre lokalen Änderungen mit der Umstrukturierung zusammenzuführen, muss Entwickler B zuerst herausfinden, zu welchem Dateinamen die Konfliktdatei Foo.c im Projektarchiv umbenannt/verschoben wurde. Dies kann unter Verwendung des Log-Dialogs geschehen. Dann verwendet sie die Schaltfläche, welche die zutreffende Quelldatei zeigt, um den Konflikt aufzulösen.

Wenn Entwickler B entscheidet, dass die Änderungen von A falsch waren, muss er die Als gelöst markieren-Schaltfläche im Konfliktbearbeitungsdialog verwenden. Dies markiert den Konflikt der/des Datei/Ordners als aufgelöst, aber die Änderungen des Entwicklers A müssen von Hand entfernt werden. Auch hier hilft der Log-Dialog dabei, die Verschiebungen nachzuverfolgen.

Lokal gelöscht, eingehende Löschung beim Aktualisieren

  1. Entwickler A benennt die Datei Foo.c in Bar.c um und überträgt die Änderung ins Projektarchiv.

  2. Entwickler B benenntFoo.c in Bix.c um.

Eine Aktualisierung der Arbeitskopie von Entwickler B resultiert in einem Baumkonflikt:

  • Die Datei Bix.c ist als hinzugefügt mit Historie markiert.

  • Die Datei Bar.c ist als normal markiert.

  • Die Datei Foo.c ist als gelöscht markiert und hat einen Baumkonflikt.

Um diesen Konflikt aufzulösen, muss Entwickler B zunächst herausfinden, wie die konfliktbehaftete Datei Foo.c im Projektarchiv umbenannt wurde. Dies kann mit Hilfe des Log-Dialogs geschehen.

Danach muss sich Entwickler B entscheiden, welchen neuen Dateinamen von Foo.c er übernehmen möchte, den eigenen oder den von Entwickler A vergebenen Namen.

Nachdem Entwickler B den Konflikt manuell aufgelöst hat, muss der Baumkonflikt mit der Schaltfläche im Konflikteditor als aufgelöst markiert werden.

Lokal fehlend, eingehende Änderung beim Aktualisieren

  1. Entwickler A verändert im Stamm die Datei Foo.c um und überträgt die Änderung ins Projektarchiv.

  2. Entwickler B, der auf einem Zweig arbeitet, benennt Foo.c in Bar.c um und überträgt die Änderung ins Projektarchiv.

Das Zusammenführen der Änderungen von Entwickler A im Stamm mit der Arbeitskopie von Entwickler B führt zu einem Baumkonflikt:

  • Die Datei Bar.c befindet sich bereits mit dem Status normal in der Arbeitskopie.

  • Die Datei Foo.c ist als fehlend markiert und hat einen Baumkonflikt.

Um diesen Konflikt aufzulösen, muss Entwickler B den Dateikonflikt im Konflikteditor als aufgelöst markieren, wodurch er aus der Konfliktliste entfernt wird. Danach muss er entscheiden, ob er die fehlende Datei Foo.c aus dem Projektarchiv in die Arbeitskopie kopiert, die Änderungen von Entwickler A an Foo.c in die umbenannte Datei Bar.c überträgt oder die Änderungen ignoriert, indem er den Konflikt als aufgelöst markiert und nichts weiter unternimmt.

Beachten Sie, dass, wenn Sie die fehlende Datei aus dem Projektarchiv kopieren und danach den Konflikt als aufgelöst markieren, ihre Kopie wieder entfernt wird. Sie müssen den Konflikt erst auflösen und danach die Datei kopieren.

Lokal bearbeitet, eingehende Löschung beim Zusammenführen

  1. Entwickler A benennt im Stamm die Datei Foo.c in Bar.c um und überträgt die Änderung ins Projektarchiv.

  2. Entwickler B, der auf einem Zweig arbeitet, modifiziert Foo.c und überträgt die Änderung ins Projektarchiv.

  1. Entwickler A benennt im Stamm den Ordner FooOrdner in BarOrdner um und überträgt die Änderung ins Projektarchiv.

  2. Entwickler B, der auf einem Zweig arbeitet, verändert Foo.c in seiner Arbeitskopie.

Das Zusammenführen der Änderungen von Entwickler A im Stamm mit der Arbeitskopie von Entwickler B führt zu einem Baumkonflikt:

  • Die Datei Bar.c ist als hinzugefügt markiert.

  • Die Datei Foo.c ist als verändert markiert und hat einen Baumkonflikt.

Entwickler B muss nun entscheiden, ob er die Reorganisation durch Entwickler A übernehmen will und seine Änderungen in der entsprechenden Datei in der neuen Struktur zusammenführt oder ob er einfach die Änderungen von A rückgängig macht und die lokale Datei beibehält.

Um ihre lokale Änderungen mit der Umstrukturierung zusammenführen zu können, muss Entwickler B zuerst herausfinden, in welchen Dateinamen die Konfliktdatei Foo.c im Projektarchiv umbenannt/verschoben wurde. Dies kann unter Verwendung des Log-Dialogs für die Zusammenführungsquelle erreicht werden. Der Konflikteditor zeigt nur das Protokoll der Arbeitskopie, da nicht bekannt ist, welcher Pfad bei der Zusammenführung verwendet wurde, sodass dieser selbst gesucht werden muss. Die Änderungen müssen dann per Hand zusammengeführt werden, da es gegenwärtig keine Möglichkeit gibt, diesen Prozess zu automatisieren oder auch nur zu vereinfachen. Sobald die Änderungen übertragen wurden, werden die Konfliktpfade überflüssig und können gelöscht werden.

Wenn Entwickler B entscheidet, dass die Änderungen von A falsch waren, muss er die Als gelöst markieren-Schaltfläche im Konfliktbearbeitungsdialog verwenden. Dies markiert den Konflikt der/des Datei/Ordners als aufgelöst, aber die Änderungen des Entwicklers A müssen von Hand entfernt werden. Wieder hilft hier der Log-Dialog der Quelle, die Verschiebungen nachzuverfolgen.

Lokal gelöscht, eingehende Löschung beim Zusammenführen

  1. Entwickler A benennt im Stamm die Datei Foo.c in Bar.c um und überträgt die Änderung ins Projektarchiv.

  2. Entwickler B, der auf einem Zweig arbeitet, benennt Foo.c in Bix.c um und überträgt die Änderung ins Projektarchiv.

Das Zusammenführen der Änderungen von Entwickler A im Stamm mit der Arbeitskopie von Entwickler B führt zu einem Baumkonflikt:

  • Die Datei Bix.c ist als normal (unverändert) markiert.

  • Die Datei Bar.c ist als hinzugefügt mit Historie markiert.

  • Die Datei Foo.c ist als fehlend markiert und hat einen Baumkonflikt.

Um diesen Konflikt aufzulösen, muss Entwickler B zunächst herausfinden, wie die konfliktbehaftete Datei Foo.c im Projektarchiv umbenannt wurde. Dies kann mit Hilfe des Log-Dialogs für die Quelle geschehen.

Danach muss sich Entwickler B entscheiden, welchen neuen Dateinamen von Foo.c er übernehmen möchte, den eigenen oder den von Entwickler A vergebenen Namen.

Nachdem Entwickler B den Konflikt manuell aufgelöst hat, muss der Baumkonflikt mit der Schaltfläche im Konflikteditor als aufgelöst markiert werden.

Andere Baumkonflikte

Es gibt weitere Fälle, die einfach deshalb als Baumkonflikte gekennzeichnet werden, weil der Konflikt einen Ordner anstelle einer Datei betrifft. Wenn Sie z. B. einen Ordner des gleichen Namens sowohl zu trunk als auch zu branch hinzufügen und versuchen, diese Änderungen zusammenzuführen, erhalten Sie einen Baumkonflikt. Wenn Sie den Zielordner behalten wollen, markieren Sie den Konflikt einfach als aufgelöst. Wenn Sie den Quellordner behalten wollen, müssen Sie zunächst im Projektarchiv den Zielordner löschen und das Zusammenführen neu starten. Kompliziertere Situationen müssen Sie manuell auflösen.

Statusinformationen anzeigen

Während Sie an Ihrem Projekt arbeiten, müssen Sie oft wissen, welche Dateien geändert wurden, welche Sie neu hinzugefügt haben, welche Sie gelöscht haben oder auch, welche Dateien von anderen geändert und zum Projektarchiv übertragen wurden.

Überlagerte Symbole

Abbildung 4.12. Explorer mit überlagerten Symbolen

Explorer mit überlagerten Symbolen


Nun, da Sie eine frisch ausgecheckte Arbeitskopie eines Subversion-Projektarchivs haben, zeigt Ihnen der Explorer diese Dateien und Ordner mit leicht geänderten Symbolen an. Dies ist mit ein Grund, weshalb TortoiseSVN so populär ist. TortoiseSVN fügt jedem Datei-/Ordnersymbol ein kleines überlagertes Symbol hinzu. Abhängig vom Subversion-Status der Datei ist das Überlagerungssymbol unterschiedlich.

Eine frisch ausgecheckte Arbeitskopie hat nur überlagerte Symbole mit grünem Haken. Dies bedeutet, dass der Subversion-Status normal ist.

Sobald Sie eine Datei ändern, ändert sich auch der Status der Datei auf verändert und das überlagerte Symbol ändert sich in ein rotes Ausrufezeichen. Auf diese Weise können Sie mit einem Blick feststellen, welche Dateien Sie geändert und noch nicht in das Projektarchiv übertragen haben.

Falls während einer Aktualisierung ein Konflikt auftrat, werden solche Dateien mit einem gelben Ausrufezeichen markiert.

Wenn eine Datei die svn:needs-lock-Eigenschaft besitzt, setzt Subversion den Schreibschutz für diese Datei, bis Sie eine Sperre für die Datei holen. Schreibgeschützte Dateien erhalten dieses Symbol, um anzuzeigen, dass Sie die Datei erst sperren müssen, bevor Sie sie bearbeiten können.

Wenn Sie die Sperre für eine Datei besitzen und der Subversion-Status normal ist, erinnert Sie dieses Symbol daran, dass Sie die Sperre wieder freigeben müssen, wenn Sie sie nicht benötigen, damit andere ihre Änderungen übertragen können.

Dieses überlagerte Symbol zeigt, dass Dateien oder Ordner zum Löschen aus der Versionskontrolle markiert wurden oder dass TortoiseSVN eine Datei unter Versionskontrolle vermisst.

Das Pluszeichen bedeutet, dass eine Datei oder ein Ordner neu zur Versionskontrolle hinzugefügt wurde.

Das Balkensymbol bedeutet, dass eine Datei oder ein Ordner von der Versionskontrolle ignoriert wird. Dieses Symbol ist optional.

Dieses Symbol wird für Dateien und Ordner verwendet, die sich weder unter Versionskontrolle befinden noch ignoriert sind. Das Symbol ist optional.

Sie werden möglicherweise feststellen, dass nicht alle diese Symbole auf Ihrem Rechner dargestellt werden. Das liegt daran, dass Windows die Anzahl der überlagerten Symbole beschränkt. Windows selber verwendet einige. Wenn Sie gleichzeitig eine ältere Version von TortoiseCVS installiert haben, sind nicht genügend Plätze für die Symbole beider Anwendungen frei. Deshalb versucht TortoiseSVN, ein Guter Bürger(tm) zu sein und schränkt seine Verwendung von überlagerten Symbolen ein, damit andere Anwendungen eine Chance haben.

Da es mittlerweile viele Tortoise-Clients gibt (TortoiseCVS, TortoiseHG ...) wird die Beschränkung der überlagerten Symbole zu einem echten Problem. Als Lösungsansatz wurde im TortoiseSVN-Projekt ein gemeinsamer Satz von Symbolen implementiert, der als DLL geladen wird und von allen Tortoise-Clients genutzt werden kann. Fragen Sie Ihren Tortoise-Anbieter, ob er die gemeinsam genutzten Symbole bereits unterstützt :-)

Eine Beschreibung, wie die überlagerten Symbole mit dem Subversion-Status zusammenhängen und weitere technische Details finden sich in „Überlagerte Symbole“.

Detaillierter Status

Abbildung 4.13. Explorer-Eigenschaftsseite, Subversion-Tab

Explorer-Eigenschaftsseite, Subversion-Tab


Manchmal ist es notwendig, detailliertere Informationen über eine Datei oder einen Ordner zu haben, als dies mit den überlagerten Symbolen möglich ist. Sie können diese zusätzlichen Informationen über den Eigenschaftsdialog des Explorers anzeigen. Wählen Sie dazu die Datei oder den Ordner aus, öffnen Sie das Kontextmenü mit der rechten Maustaste und wählen Sie den Eintrag Windows MenüEigenschaften aus. Beachten Sie: Dies ist der normale Eintrag im Kontextmenü des Explorers und nicht der Eintrag im TortoiseSVN-Untermenü! Im darauffolgenden Dialog hat TortoiseSVN einen Karteireiter für Dateien/Ordner unter Subversionkontrolle angelegt, auf dem Sie alle Informationen finden.

Prüfe auf Änderungen

Abbildung 4.14. Prüfe auf Änderungen

Prüfe auf Änderungen


Oft ist es nützlich zu wissen, welche Dateien von anderen bereits geändert und im Projektarchiv gespeichert wurden. Dazu gibt es den Befehl TortoiseSVNAuf Änderungen überprüfen.... Dieser Dialog zeigt Ihnen alle veränderten oder unversionierten Dateien in Ihrer Arbeitskopie.

Mit der Schaltfläche Projektarchiv prüfen können Sie das Projektarchiv auf Änderungen prüfen. Auf diese Weise können Sie vor dem Aktualisieren feststellen, ob es möglicherweise Konflikte gibt. Sie können aus diesem Dialog heraus auch einzelne Dateien - ohne den gesamten Ordner - aus dem Projektarchiv aktualisieren. Standardmäßig holt Projektarchiv prüfen nur den Status des Projektarchivs, entsprechend der Tiefe der Arbeitskopie. Wenn Sie alle Dateien und Ordner des Projektarchivs, inklusive derer sehen möchten, die Sie nicht ausgecheckt haben, halten Sie die Umschalt-Taste gedrückt, während Sie auf Projektarchiv prüfen klicken.

Der Dialog verwendet eine Farbcodierung, um verschiedene Status anzuzeigen.

Blau

Lokal veränderte Objekte.

Wenn unveränderte Dateien innerhalb eines verschobenen Verzeichnisses liegen, zeigt der Status ein +Zeichen in der StatusSpalte. Zusätzlich wird die Datei blau eingefärbt angezeigt.

Purpur

Hinzugefügte Objekte. Objekte, die mit Historie hinzugefügt wurden, erhalten ein + Zeichen in der Spalte Text Status und ein Hinweistext zeigt an, woher die Kopie stammt.

Dunkelrot

Gelöschte oder fehlende Objekte.

Grün

Objekte, die lokal und im Projektarchiv verändert wurden. Die Änderungen werden beim Aktualisieren zusammengeführt. Diese Objekte können Konflikte beim Aktualisieren erzeugen.

Hellrot

Lokal veränderte Objekte, die im Projektarchiv gelöscht wurden oder im Projektarchiv geänderte Objekte, die lokal gelöscht wurden. Diese Objekte werden Konflikte beim Aktualisieren erzeugen.

Schwarz

Unveränderte und nicht versionierte Objekte.

Dies ist das Standard-Farbschema, aber Sie können die Farben im Einstellungsdialog anpassen. Siehe „TortoiseSVN-Farben“ für weitere Informationen.

Die überlagerten Symbole dienen auch dazu, andere Status anzuzeigen. Das folgende Bild zeigt alle möglichen, bei Bedarf angezeigten, überlagerten Symbole.

Überlagerte Symbole werden für die folgenden Zustände angezeigt:

  • Rekursionstiefe leer bedeutet nur das Objekt selbst.

  • Rekursionstiefe Dateien bedeutet das Objekt selbst sowie dessen untergeordneten Dateien, aber keine Ordner.

  • Rekursionstiefe Direkte Unterobjekte bedeutet das Objekt selbst sowie dessen untergeordnete Dateien und Ordner, aber nicht die Unterobjekte der Ordner.

  • Verschachtelte Elemente, d. h., Arbeitskopien innerhalb der Arbeitskopie.

  • Externe Objekte, d. h., alle Elemente, die über eine svn:externals-Eigenschaft eingebunden werden.

  • Elemente, die nach dem Übertragen wiederhergestellt werden. Lesen Sie „Nur Teile von Dateien übertragen“ für Details.

  • Elemente, deren svn:mergeinfo-Eigenschaft geändert wurde. Für Änderungen an anderen Eigenschaften wird das Symbol nicht verwendet.

Objekte, die zu einem anderen Pfad im Projektarchiv gewechselt wurden, werden durch ein (s) gekennzeichnet. Vielleicht haben Sie während der Entwicklung etwas auf einen Zweig umgeschaltet und vergessen, zurück zu trunk zu wechseln. Dies ist Ihr Warnzeichen! Das Kontextmenü erlaubt es Ihnen, auf den normalen Pfad zurück zu wechseln.

Aus dem Kontextmenü des Dialoges heraus können Sie sich die Unterschiede anzeigen lassen. Wählen Sie die lokalen Änderungen, die Sie gemacht haben, mittels KontextmenüVergleiche mit Basis. Prüfen Sie die Änderungen im Projektarchiv, die andere gemacht haben, mittels Kontextmenü Zeige Unterschiede als Standard-Diff

Sie können auch Änderungen in einzelnen Dateien rückgängig machen. Wenn Sie aus Versehen eine Datei gelöscht haben, wird sie in diesem Dialog als Fehlend angezeigt und kann mittels Rückgängig wiederhergestellt werden.

Nicht versionierte und ignorierte Dateien können von hier aus mittels KontextmenüLöschendirekt in den Papierkorb verschoben werden. Wenn Sie die Dateien unter Umgehung des Papierkorbes permanent löschen wollen, halten Sie die Umschalt-Taste gedrückt, während Sie Löschen klicken.

Wenn Sie eine Datei im Detail betrachten möchten, können Sie sie von hier aus in eine andere Anwendung, z. B. einen Texteditor oder eine Entwicklungsumgebung, ziehen oder Sie können eine Kopie speichern, indem Sie die Datei einfach in einen Ordner im Explorer ziehen.

Die angezeigten Spalten können angepasst werden. Wenn Sie einen Rechtsklick auf einen Spaltenkopf machen, erscheint ein Kontextmenü, aus dem Sie die anzuzeigenden Spalten auswählen können. Sie können auch die Spaltenbreiten anpassen, indem Sie die Spaltenköpfe mit den Ziehmarken justieren. Diese Einstellungen werden gespeichert, sodass Sie beim nächsten Mal wieder die gleichen Spalten sehen.

Wenn Sie gleichzeitig an mehreren voneinander unabhängigen Aufgaben arbeiten, können Sie Dateien in Änderungslisten zusammenfassen. Lesen Sie „Änderungslisten“ für weitere Informationen.

Am unteren Rand des Dialoges sehen Sie eine Zusammenfassung der Revisionen in Ihrer Arbeitskopie. Es handelt sich dabei um die übertragenen Revisionen, nicht die aktualisierten. Sie stellen den Revisionsbereich dar, in dem die Dateien zuletzt übertragen wurden. Beachten Sie bitte, dass der angezeigte Bereich sich nur die dargestellten Objekte bezieht, nicht auf alle in der Arbeitskopie vorhandenen Objekte. Wenn Sie diese Information sehen möchten, wählen Sie die Option Zeige unmodifizierte Daten.

Tipp

Wenn Sie eine flache Ansicht Ihrer Arbeitskopie (also alle Dateien und Ordner in einer Liste) wollen, dann ist der Prüfe auf Änderungen-Dialog der einfachste Weg, das zu erreichen. Wählen Sie einfach die Option Zeige unmodifizierte Dateien, um alle Dateien in Ihrer Arbeitskopie anzuzeigen.

Externes Umbenennen reparieren

Manchmal werden Dateien außerhalb von Subversion umbenannt. Sie werden in der Dateiliste als eine fehlende und eine nicht-versionierte Datei angezeigt. Damit Sie die Historie der Datei nicht verlieren, müssen Sie Subversion über die Umbenennung informieren. Markieren Sie einfach beide, die alte (fehlende) und die neue (unversionierte) Datei und wählen Sie KontextmenüUmbenennen reparieren, um die beiden Dateien zu einer Umbenennung zusammenzufassen.

Repariere externe Kopien

Wenn Sie eine Datei kopiert haben, ohne den entsprechenden Subversion-Befehl zu benutzen, können Sie diese Kopie reparieren, sodass die neue Datei ihre Historie nicht verliert. Markieren Sie einfach beide, die alte (normal oder verändert) und die neue (unversionierte) Datei und wählen Sie KontextmenüKopie reparieren, um die beiden Dateien zu einer Kopie zusammenzufassen.

Unterschiede anzeigen

Oft möchten Sie sehen, was Sie in einer Datei geändert haben. Das können Sie durch das Markieren einer Datei mit dem TortoiseSVN-Kontextmenübefehl Vergleiche tun. Diese Funktion startet TortoiseMerge (oder ein externes Vergleichsprogramm), das Ihnen die lokalen Änderungen (gegenüber der BASE-Revision) seit dem letzten Auschecken oder Aktualisieren anzeigt.

Tipp

Auch wenn Sie sich nicht in einer Arbeitskopie befinden oder mehrere Versionen einer Datei haben, können Sie diese vergleichen:

Wählen Sie die beiden Dateien, die Sie vergleichen wollen (z. B. mit Strg und Maus) und wählen Sie Vergleiche unter TortoiseSVN im Kontextmenü. Die zuletzt markierte Datei (die mit dem Fokus, der gestrichelte Rahmen) wird als die neuere betrachtet.

Änderungslisten

In einer idealen Welt würden Sie normalerweise nur an einer Aufgabe zur Zeit arbeiten und Ihre Arbeitskopie enthielte nur einen logischen Satz an Änderungen. Aber zurück zur Realität. Es kommt mit Sicherheit häufiger vor, dass Sie an mehreren unzusammenhängenden Aufgaben gleichzeitig arbeiten und beim Übertragen alle Änderungen im Dialog angezeigt bekommen. Die Änderungslisten ermöglichen es Ihnen, Dateien in Gruppen zusammenzufassen. Dies kann natürlich nur sinnvoll funktionieren, wenn sich die Änderungen nicht überschneiden. Wenn mehrere Änderungen dieselbe Datei betreffen, gibt es keine Möglichkeit, die Änderungen auseinander zu halten.

Sie treffen Änderungslisten an verschiedenen Stellen an, die wichtigsten sind jedoch der Übertragen- und der Prüfe auf Änderungen-Dialog. Lassen Sie uns mit dem Prüfe auf Änderungen-Dialog beginnen, nachdem Sie an einigen Funktionen und vielen Dateien gearbeitet haben. Wenn Sie den Dialog zum ersten Mal öffnen, werden alle geänderten Dateien zusammen angezeigt. Nehmen wir an, Sie möchten das Ganze organisieren und diese Dateien nach Funktionen gruppieren.

Wählen Sie eine oder mehrere Dateien und rufen Sie KontextmenüIn Änderungsliste übernehmen auf, um ein Objekt zu einer Änderungsliste hinzuzufügen. Zu Anfang gibt es noch keine Änderungslisten. Deshalb wird beim ersten Mal eine neue Änderungsliste angelegt. Geben Sie ihr einen beschreibenden Namen und klicken Sie auf OK. Der Übertragen-Dialog wird nun Gruppen von Einträgen anzeigen.

Sobald Sie eine Änderungsliste angelegt haben, können Sie Objekte aus einer anderen Änderungsliste oder dem Windows Explorer auf diese ziehen und ablegen. Per Ziehen und Ablegen aus dem Explorer können Sie ein Objekt zur Änderungsliste hinzufügen, bevor es modifiziert wurde. Sie können das auch aus dem Prüfe auf Änderungen-Dialog heraus machen, müssen sich dann aber alle nicht modifizierten Dateien anzeigen lassen.

Abbildung 4.15. Der Übertragen-Dialog mit Änderungsliste

Der Übertragen-Dialog mit Änderungsliste


Im Übertragen-Dialog können Sie die gleichen Dateien nach Änderungsliste gruppiert sehen. Abgesehen davon, dass Sie einen optischen Hinweis auf Zusammenhänge erhalten, können Sie auch die Gruppenköpfe verwenden, um die zu übertragenden Dateien zu markieren.

TortoiseSVN reserviert eine Änderungsliste namens ignore-on-commit für den eigenen Gebrauch. Diese Änderungsliste wird zum Markieren von Dateien verwendet, die Sie meistens selbst dann nicht übertragen wollen, wenn sie lokale Änderungen enthalten. Diese Funktion wird in „Objekte vom Übertragen ausschließen“ beschrieben.

Wenn Sie Dateien übertragen, die zu einer Änderungsliste gehören, wird die Mitgliedschaft in der Änderungsliste normalerweise nicht mehr benötigt. Aus diesem Grund werden Dateien beim Übertragen automatisch aus der Änderungsliste entfernt. Wenn Sie das nicht wollen, aktivieren Sie die Option Änderungsliste beibehalten am Ende des Übertragen-Dialogs.

Tipp

Änderungslisten sind eine rein lokale Angelegenheit. Das Anlegen und Löschen von Änderungslisten wird weder das Projektarchiv noch eine andere Arbeitskopie beeinflussen. Sie sind lediglich ein bequemes Hilfsmittel zum Organisieren Ihrer Dateien.

Warnung

Wenn Sie Änderungslisten verwenden, werden Externals nicht mehr in eigenen Gruppierung erscheinen. Sobald es Änderungslisten gibt, werden Dateien und Ordner nach Änderungslisten und nicht mehr nach Externals gruppiert.

Zurückstellen

Häufiger als gewünscht ist es erforderlich, Ihre aktuelle Aufgabe zu unterbrechen und etwas anderes zu erledigen. Wenn Sie sich zum Beispiel um ein ernstes Problem kümmern müssen und nicht an einer neuen Funktion weiterarbeiten können. Wenn möglich, sollten Sie die bisherigen Änderungen übertragen und sich um die dringende Aufgabe kümmern können, aber häufig sind die ausstehenden Änderungen noch nicht soweit.

Wenn Sie also ihre lokalen Änderungen noch nicht übertragen können, müssen Sie sie beiseitestellen, solange Sie an dem dringenden Problem arbeiten. Die Funktion Zurückstellen hilft Ihnen dabei: Sie können Ihre lokalen Änderungen, wie in ein Regal beiseitestellen und Ihre Arbeitskopie in einen sauberen Zustand versetzen. Nachdem Sie die dringende Aufgabe erledigt und Ihre Änderungen übertragen haben, können Sie die zurückgestellten Änderungen wieder hervorholen und an ihrer vorherigen Aufgabe weiterarbeiten.

Zwei neue Funktionen stehen dafür zur Verfügung. Eine zum Zurückstellen und eine zum Hervorholen.

Um Ihre lokalen Änderungen zurückzustellen, gehen Sie in Ihre Arbeitskopie und wählen SieKontextmenüZurückstellen. Mit dem folgenden Dialog wählen Sie die zurückzustellenden Dateien sowie den Namen, unter dem sie gespeichert werden sollen.

Abbildung 4.16. Zurückstellen-Dialog

Zurückstellen-Dialog


Wenn Sie eine vorhandene Ablage wählen, wird für diese eine neue Version erstellt. Wenn Sie einen neuen Namen angeben, wird eine neue Ablage für die gewählten Dateien erstellt.

Sobald Sie die Schaltfläche Zurückstellen anklicken, wird das Regal angelegt und die Dateien in ihrer Arbeitskopie in den Ursprungszustand zurückversetzt. Mit Kontrollpunkt wird das Regal angelegt, aber Ihre lokalen Änderungen werden beibehalten.

Um Ihre Änderungen hervorzuholen, wählen Sie KontextmenüHervorholen für den Hervorholen-Dialog. Dieser zeigt Ihnen eine Liste der zurückgestellten Objekte. Markieren Sie das zurückgestellte Objekt sowie die Version, die in Ihre Arbeitskopie hervorgeholt werden soll und wählen Sie Anwenden.

Abbildung 4.17. Hervorholen-Dialog

Hervorholen-Dialog


Tipp

Ablagen sind eine rein clientseitige Funktion. Das Anlegen und Entfernen von Ablagen beeinflusst weder das Projektarchiv noch die Arbeitskopie eines anderen Benutzers.

Experimentell

Die Ablagefunktion ist noch experimentell.

Das bedeutet, dass die Ablagefunktion bereits funktioniert, aber sich in einem Stadium befindet, in dem sie stark verbessert und bearbeitet werden. Das bedeutet auch, dass nicht sichergestellt ist, dass Ablagen, die sie jetzt anlegen, von zukünftigen Versionen noch verwendet werden können. Außerdem kann sich die Oberfläche ändern, um neue Eigenschaften und Funktionen verfügbar zu machen.

Log-Dialog

Für jede Änderung, die Sie machen und zum Projektarchiv übertragen, müssen Sie eine Logmeldung eingeben, welche die Änderung beschreibt. Damit können Sie später herausfinden, welche Änderungen wer wann gemacht hat. Auf diese Weise haben Sie eine detaillierte Aufzeichnung über den Fortschritt Ihres Projektes.

Der Log-Dialog lädt alle diese Logmeldungen aus dem Projektarchiv und zeigt Ihnen diese einschließlich einer Liste der Dateien, die in jeder Übertragung verändert wurden. Die Anzeige ist in drei Bereiche aufgeteilt.

  • Der obere Bereich zeigt eine Liste von Revisionen, bei denen Änderungen an der Datei/dem Ordner übertragen wurden. Diese Liste enthält Datum, Zeit und die Person, welche die Übertragung vorgenommen hat. Außerdem wird der erste Teil der Logmeldung angezeigt.

    Zeilen in blau zeigen an, dass etwas in dieser Revision kopiert/verschoben/umbenannt wurde (vielleicht von einem anderen Zweig).

  • Der mittlere Bereich zeigt die ganze Logmeldung für die ausgewählte Revision an.

  • Der untere Bereich zeigt eine Liste von Dateien und Ordnern, die in der ausgewählten Revision verändert wurden.

Aber sie kann noch viel mehr: Sie bietet Kontextmenü-Befehle, mit denen Sie noch mehr Informationen über die Projekthistorie erhalten können.

Den Log-Dialog starten

Abbildung 4.18. Der Log-Dialog

Der Log-Dialog


Es gibt mehrere Orte, von denen Sie den Log-Dialog starten können:

  • Aus dem TortoiseSVN-Kontextmenü

  • Aus der Eigenschaftsseite

  • Aus dem Fortschrittsdialog, nachdem eine Aktualisierung beendet wurde. Dann jedoch zeigt der Log-Dialog nur die Einträge, die seit Ihrer letzten Aktualisierung gemacht wurden.

  • Aus dem Projektarchivbetrachter

Wenn das Projektarchiv nicht erreicht werden kann, wird der Offline gehen-Dialog, angezeigt, der in „Offline-Modus“ beschrieben wird.

Aktionen im Revisionslog

Der obere Bereich enthält eine Aktionen-Spalte, in der Symbole die Änderungen einer Revision zusammenfassen. Es gibt vier verschiedene Symbole, die jeweils in einer eigenen Spalte angezeigt werden.

in der ersten Spalte zeigt an, dass in einer Revision eine Datei oder ein Ordner geändert wurde.

in der zweiten Spalte zeigt an, dass in einer Revision eine Datei oder ein Ordner neu zur Versionskontrolle hinzugefügt wurde.

in der dritten Spalte zeigt an, dass in einer Revision eine Datei oder ein Ordner aus der Versionskontrolle gelöscht wurde.

in der vierten Spalte zeigt an, dass in einer Revision eine Datei oder ein Ordner ersetzt wurde.

in der vierten Spalte zeigt an, dass in einer Revision eine Datei oder ein Ordner verschoben wurde.

in der vierten Spalte zeigt an, dass in einer Revision eine Datei oder ein Ordner verschoben bzw. umbenannt wurde.

in der vierten Spalte zeigt an, dass in einer Revision eine Datei oder ein Ordner zusammengeführt wurde.

in der vierten Spalte zeigt an, dass in einer Revision eine Datei oder ein Verzeichnis rückwärts zusammengeführt wurde.

Zusätzliche Informationen erhalten

Abbildung 4.19. Das Kontextmenü des Log-Dialogs

Das Kontextmenü des Log-Dialogs


Der obere Bereich des Log-Dialogs besitzt ein Kontextmenü, das Ihnen Zugriff auf weitere Informationen ermöglicht. Einige Funktionen stehen nur bei Dateien, andere bei Ordnern zur Verfügung.

Vergleiche mit Arbeitskopie

Ein Vergleichsprogramm starten, um Ihnen die Änderungen, die seit der gewählten Revision vorgenommen worden, anzuzeigen. Das mit TortoiseSVN installierte Vergleichsprogramm ist TortoiseMerge. Wurde der Log-Dialog für einen Ordner aufgerufen, so wird in TortoiseMerge eine Liste der geänderten Dateien angezeigt. Aus dieser Liste können Sie einen Eintrag wählen, um die Änderungen für jede Datei einzeln zu betrachten.

Vergleiche und Annotiere mit Arbeitskopie BASE

Nur für Dateien: Die gewählte Revision sowie die BASE-Version annotieren und das Ergebnis in einem Vergleichsprogramm darstellen. Lesen Sie „Unterschiede annotieren“ für weitere Informationen.

Unterschiede als Standard-Diff anzeigen

Die Änderungen an allen Dateien in der gewählten Revision im Standard-Diff (GNU Patch-Format) anzeigen. Dieses Format zeigt nur die Unterschiede mit ein paar Zeilen Kontext an. Es ist schwieriger zu lesen als ein visueller Vergleich, aber es zeigt alle Änderungen auf einmal.

Wenn Sie die Umschalt-Taste gedrückt halten, wenn Sie auf das Menüelement klicken, wird zuerst ein Dialogfeld angezeigt, in dem Sie Einstellungen für den Standard-Diff festlegen können. Sie können zum Beispiel Änderungen in Leerzeichen und Zeilenenden ignorieren.

Vergleiche mit vorheriger Revision

Die gewählte Revision mit der vorherigen Revision vergleichen. Dies funktioniert ähnlich wie ein Vergleich mit Ihrer Arbeitskopie. Bei Ordnern werden zunächst die geänderten Dateien angezeigt, sodass Sie die Dateien für den Vergleich auswählen können.

Vergleiche und Annotiere mit vorheriger Revision

Nur für Ordner: Die Liste der geänderten Dateien anzeigen, um die zu vergleichenden Dateien auszuwählen. Die gewählte sowie die vorherige Revision annotieren und das Ergebnis in einem Vergleichsprogramm darstellen.

Speichere Revision unter...

Nur für Dateien: Die gewählte Revision speichern, sodass Sie eine ältere Version der Datei erhalten.

Öffnen / Öffnen mit...

Nur für Dateien: Die markierte Datei entweder mit dem Standardprogramm für den Dateityp oder mit einem von Ihnen gewählten Programm öffnen.

Annotieren...

Nur für Dateien: Die Datei bis zur gewählten Revision annotieren.

Das Projektarchiv betrachten

Den Projektarchivbetrachter öffnen, um das markierte Objekt in der gewählten Revision des Projektarchivs zu betrachten.

Erstelle Zweig/Marke von Revision

Einen Zweig oder eine Marke für die gewählte Revision erstellen. Dies ist nützlich für den Fall, dass Sie vergessen haben, eine bestimmte Version Ihres Projektes zu markieren und Sie seitdem bereits weitere Änderungen in das Projektarchiv übertragen haben.

Aktualisiere zu Revision

Ihre Arbeitskopie zu einer bestimmten Revision aktualisieren. Nützlich, wenn Sie möchten, dass Ihre Arbeitskopie einem Zustand in der Vergangenheit entspricht oder wenn es weitere Übertragungen im Projektarchiv gibt, die Sie schrittweise übernehmen wollen. Es ist am besten, ein komplettes Arbeitsverzeichnis und nicht nur eine einzelne Datei zu aktualisieren, da andernfalls Ihre Arbeitskopie inkonsistent sein wird und Sie keine Änderungen übertragen können.

Falls Sie eine frühere Änderung vollständig zurücknehmen wollen, verwenden Sie stattdessen Rückgängig zu dieser Revision.

Rückgängig zu dieser Revision

Zu einer früheren Revision zurückkehren. Wenn Sie mehrere Änderungen vorgenommen haben und nun beschließen, dass Sie den Zustand in Revision N wiederherstellen wollen, ist das der Befehl Ihrer Wahl. Wieder werden die Änderungen nur in Ihrer Arbeitskopie rückgängig gemacht. Die Aktion beeinflusst das Projektarchiv zunächst nicht, bis Sie die Änderungen wieder übertragen haben. Beachten Sie, dass diese Aktion alle Änderungen nach der gewählten Revision rückgängig macht und das Objekt durch die gewählte Revision ersetzt.

Wenn Ihre Arbeitskopie vor dieser Aktion unmodifiziert war, wird sie anschließend das Modifiziert-Symbol anzeigen. Falls Sie bereits lokale Änderungen vorgenommen haben, wird dieser Befehl die Rückgängig-Änderungen in Ihrer Arbeitskopie zusammenführen.

Intern führt Subversion alle Änderungen seit dieser Revision rückwärts zusammen, sodass sie insgesamt zurückgenommen werden.

Wenn Sie beschließen, dass Sie die Rückgängig-Aktion rückgängig machen und Ihre Arbeitskopie in ihren vorherigen Zustand versetzen wollen, sollten Sie TortoiseSVNRückgängig aus dem Explorer-Kontextmenü wählen. Dadurch werden die durch das Rückwärts-Zusammenführen erzeugten lokalen Änderungen verworfen.

Wenn Sie nur sehen möchten, wie eine Datei oder ein Ordner in einer früheren Revision aussahen, rufen Sie stattdessen Aktualisiere zu Revision oder Speichere Revision unter... auf.

Änderungen dieser Revision rückgängig machen

Änderungen in einer bestimmten Revision rückgängig machen. Die Änderungen werden in Ihrer Arbeitskopie rückgängig gemacht, das Projektarchiv selbst bleibt unverändert! Beachten Sie bitte, dass nur die Änderungen dieser Revision rückgängig gemacht werden. Es wird nicht die gesamte Datei in der früheren Revision wiederhergestellt. Dieser Befehl ist nützlich, wenn Sie Änderungen zurücknehmen wollen, aber spätere, nicht damit zusammenhängende Änderungen beibehalten möchten.

Wenn Ihre Arbeitskopie vor dieser Aktion unmodifiziert war, wird sie anschließend das Modifiziert-Symbol anzeigen. Falls Sie bereits lokale Änderungen vorgenommen haben, wird dieser Befehl die Rückgängig-Änderungen in Ihrer Arbeitskopie zusammenführen.

Intern führt Subversion die Änderungen dieser Revision rückwärts zusammen, sodass sie aus einer vorherigen Übertragung entfernt werden.

Sie können, wie unter Rückgängig zu dieser Revision beschrieben, die Rückgängig-Aktion rückgängig machen.

Revision zusammenführen in...

Führt die gewählten Revisionen in einer anderen Arbeitskopie zusammen. Ein Dialog ermöglicht es Ihnen, die Ziel-Arbeitskopie auszuwählen, aber danach gibt es weder eine Bestätigung noch eine Möglichkeit, einen Testlauf durchzuführen. Es ist eine gute Idee, das Zusammenführen in einer unmodifizierten Arbeitskopie zu testen, sodass Sie die Änderungen rückgängig machen können, wenn es nicht geklappt hat! Dies ist eine nützliche Funktion, wenn Sie Revisionen von einem Zweig auf einen anderen übertragen möchten.

Auschecken...

Eine neue Arbeitskopie des markierten Ordners in der gewählten Revision erstellen. Im folgenden Dialog können Sie die URL und Revision überprüfen und ein Ziel für die Arbeitskopie festlegen.

Exportieren...

Den markierten Ordner in der gewählten Revision exportieren. Im folgenden Dialog können Sie die URL und Revision überprüfen und ein Ziel für den Export festlegen.

Autor/Logmeldung bearbeiten

Die Logmeldung oder den Autor der Übertragung ändern. Lesen Sie „Ändern der Logmeldung und des Autors“, um herauszufinden, wie dies funktioniert.

Revisionseigenschaften zeigen

Eine beliebige Revisionseigenschaft, nicht nur Logmeldung und Autor, bearbeiten. Weiteres in „Ändern der Logmeldung und des Autors“.

In Zwischenablage kopieren

Die Logdetails der gewählten Revisionen in die Zwischenablage kopieren. Dieser Befehl kopiert Revisionsnummer, Autor, Datum, Logmeldung sowie die Liste der geänderten Objekte jeder Revision in die Zwischenablage.

Logmeldungen durchsuchen...

Die Logmeldungen durchsuchen. Die von Subversion generierte Liste der geänderten Dateien im unteren Bereich wird mit einbezogen. Die Suche ignoriert Groß-/Kleinschreibung.

Code Collaborator-Rezension anlegen...

Dieses Menü wird nur angezeigt, wenn das SmartBear Code Collaborator Tool installiert ist. Beim ersten Aufruf wird ein Dialog angezeigt, in den Sie die Anmeldeinformationen für Code Collaborator und SVN eingeben. Nachdem die Einstellungen gespeichert wurden, wird der Einstellungsdialog nicht mehr angezeigt, wenn das Menü aufgerufen wird, es sei denn, Sie halten Strg gedrückt, während Sie das Menü aufrufen. Die Konfiguration und die gewählten Revisionen werden zum Aufruf der grafischen Code Collaborator-Schnittstelle verwendet, der eine neue Rezension mit den gewählten Revisionen erstellt.

Abbildung 4.20. Der Code Collaborator-Einstellungsdialog

Der Code Collaborator-Einstellungsdialog


Abbildung 4.21. Kontextmenü des Log-Dialogs für zwei ausgewählte Revisionen

Kontextmenü des Log-Dialogs für zwei ausgewählte Revisionen


Wenn Sie (mit Strg) zwei Revisionen auf einmal auswählen, reduziert sich das Kontextmenü auf folgende Funktionen:

Revisionen vergleichen

Die gewählten Revisionen vergleichen. Das Standard-Vergleichsprogramm ist TortoiseMerge, das mit TortoiseSVN installiert wird.

Wenn Sie diese Funktion für einen Ordner wählen, erscheint ein Folgedialog, der die geänderten Dateien anzeigt und Ihnen weitere Vergleichsoptionen anbietet. Lesen Sie mehr dazu in „Ordner vergleichen“.

Revisionen annotieren

Die gewählten Revisionen annotieren und die Ergebnisse mit einem Vergleichsprogramm darstellen. Lesen Sie „Unterschiede annotieren“ für weitere Details.

Unterschiede als Standard-Diff anzeigen

Die gewählten Revisionen vergleichen und als Standard-Diff anzeigen. Diese Funktion steht für Dateien und Ordner zur Verfügung.

In Zwischenablage kopieren

Die Logmeldungen, wie oben beschrieben, in die Zwischenablage kopieren.

Logmeldungen durchsuchen...

Die Logmeldungen durchsuchen. Näheres dazu siehe oben.

Wenn Sie mehrere aufeinander folgende Revisionen (mittels der üblichen Strg- oder Umschalt-Taste) markieren, bietet das Kontextmenü eine Funktion an, alle Änderungen innerhalb des Revisionsbereiches rückgängig zu machen. Dies ist der einfachste Weg, einen Satz von Änderungen in einem Schritt zurückzunehmen.

Sie können, wie bereits oben beschrieben, die gewählten Revisionen auch in einer anderen Arbeitskopie zusammenführen.

Falls alle markierten Revisionen den selben Autor haben, können Sie den Autor dieser Revisionen in einem Schritt ändern.

Abbildung 4.22. Kontextmenü der Dateiliste des Log-Dialogs

Kontextmenü der Dateiliste des Log-Dialogs


Der untere Bereich des Log-Dialogs hat ein Kontextmenü, das Ihnen erlaubt

Änderungen anzeigen

Die Änderungen der markierten Datei in der gewählten Revision anzeigen.

Änderungen annotieren

Die markierte sowie die vorherige Revision der gewählten Datei annotieren und Ergebnisse mit einem Vergleichsprogramm darstellen. Lesen Sie „Unterschiede annotieren“ für weitere Informationen.

Zeige als Standard-Diff

Die Änderungen der markierten Datei als Standard-Diff anzeigen. Nur für Dateien verfügbar, die als Verändert gekennzeichnet sind.

Öffnen / Öffnen mit...

Die gewählte Datei entweder mit dem Standardprogramm für den Dateityp oder mit einem von Ihnen gewählten Programm öffnen.

Annotieren...

Öffnet den Annotieren-Dialog, mit dessen Hilfe Sie bis zur markierten Revision annotieren können.

Änderungen dieser Revision rückgängig machen

Die Änderungen der gewählten Datei in dieser Revision rückgängig machen.

Zeige Eigenschaften

Die Subversion-Eigenschaften für das ausgewählte Objekt anzeigen.

Zeige Log

Die Logmeldungen für die ausgewählte Datei anzeigen.

Logs vom Zusammenführen holen

Zeigt das Revisionslog inklusive zusammengeführten Änderungen für eine einzelne markierte Datei. Weiteres unter „Datenintegration protokollieren“.

Speichere Revision unter...

Die gewählte Revision speichern, sodass Sie eine ältere Version der Datei erhalten.

Exportieren...

Exportiert die gewählten Objekte in dieser Revision unter Beibehaltung der Dateihierarchie in einen Ordner.

Wenn mehrere Dateien im Log-Dialog markiert sind, ändert sich das Kontextmenü in:

Abbildung 4.23. Der untere Bereich im Log-Dialog mit angezeigtem Kontextmenü, wenn mehrere Dateien ausgewählt sind.

Der untere Bereich im Log-Dialog mit angezeigtem Kontextmenü, wenn mehrere Dateien ausgewählt sind.


Speichere Revision unter...

Die gewählte Revision speichern, sodass Sie eine ältere Version der Datei erhalten.

Mehrere Änderungen anzeigen...

Zeigt Änderungen für die gewählte Revision für die ausgewählten Dateien an. Beachten Sie, dass die 'Zeige Änderungen'-Funktion mehrfach ausgeführt wird und so mehrere Programminstanzen von dem Diff-Tool ihrer Wahl gestartet werden können oder einfach eine neue Diff-Registerkarte per Datei in Ihrem Tool aufmacht wird. Wenn Sie mehr als 15 Dateien ausgewählt haben, werden Sie aufgefordert, die Aktion zu bestätigen.

Öffne mehrere lokale...

Damit öffnen Sie lokale Dateien aus Ihrer Arbeitskopie mit den für diese Dateien registrierten Anwendungen. Das Verhalten entspricht dem bei einem Doppelklick auf die Datei(en) im Windows Explorer. Abhängig von den Eigenschaften der Anwendung, die für die Dateierweiterung registriert ist, kann die Aktion recht lange dauern. Schlimmstenfalls wird für jede gewählte Datei eine neue Instanz der Anwendung gestartet.

Wenn Sie beim Aufrufen dieser Befehl Strg halten, werden die Dateien immer in Visual Studio geladen. Dies funktioniert nur, wenn die folgenden Bedingungen erfüllt sind: Visual Studio muss im gleichen Benutzerkontext und mit der gleichen Prozess-Integritätsebene [als Admin ausführen oder nicht] wie TortoiseProc.exe. Es ist möglicherweise wünschenswert, das Projekt mit den geänderten Dateien geladen zu haben, obwohl dies nicht unbedingt erforderlich ist. Nur auf dem Datenträger vorhandene Dateien mit den Erweiterungen [cpp, h, cs, rc, resx, xaml, js, html, htm, asp, aspx, php, css und xml] werden geladen. Maximal 100 Dateien können gleichzeitig in Visual Studio geladen werden. Die Dateien werden immer als neue Karteireiter in der derzeit geöffneten Instanz von Visual Studio geladen. Der Vorteil einer Überprüfung von Codeänderungen in Visual Studio besteht darin, dass Sie die integrierten Werkzeuge Code-Navigation, Verweis finden und statische Codeanalyse verwenden können.

Exportieren...

Markierte Dateien/Ordner in der gewählten Revision exportieren. Im folgenden Dialog können Sie die URL und Revision überprüfen und ein Ziel für den Export festlegen.

Tipp

Sie werden bemerkt haben, dass wir manchmal von Änderungen und manchmal von Unterschieden sprechen. Worin liegt der Unterschied?

Subversion verwendet Revisionsnummern in zwei verschiedenen Zusammenhängen. Zum einen referenziert eine Revisionsnummer den Status eines Projektarchives zu einem gewissen Zeitpunkt. Zum anderen wird damit auch der Satz von Änderungen bezeichnet, der diese Revision erzeugt hat. Erledigt in Revision r1234 bedeutet z. B., dass Funktion X in Revision 1234 implementiert wurde. Um die Bedeutung klarer zu machen, verwenden wir zwei verschiedene Begriffe.

Wenn Sie zwei Revisionen N und M wählen, wird das Kontextmenü Ihnen die Unterschiede zwischen diesen Revisionen anbieten. In Subversion-Terminologie also diff -r M:N.

Wenn Sie eine einzelne Revision N wählen, wird das Kontextmenü Ihnen die Änderungen in dieser Revision anbieten. In Subversion-Terminologie also diff -r N-1:N oder diff -c N.

Der untere Bereich zeigt die in allen gewählten Revisionen veränderten Dateien, sodass über das Kontextmenü stets Änderungen angezeigt werden können.

Weitere Logmeldungen holen

Der Log-Dialog zeigt aus mehreren Gründen nicht immer alle Änderungen an, die jemals gemacht wurden:

  • Bei einem großen Projektarchiv können hunderte oder gar tausende von Änderungen gespeichert sein. Alle diese Änderungen auf einmal zu laden, kann sehr lange dauern. Normalerweise ist man auch nur an den letzten Meldungen interessiert. Standardmäßig werden beim ersten Aufruf des Log-Dialogs die letzten 100 Logmeldungen angezeigt. Dieser Wert kann im Einstellungsdialog geändert werden. TortoiseSVNEinstellungen („TortoiseSVN-Dialog, Seite 1“),

  • Wenn die Option Bei Kopien/Umbenennen anhalten gewählt ist, werden keine weiteren Logmeldungen mehr geholt, falls der Ordner / die Datei von einer anderen Stelle des Projektarchivs kopiert wurde. Dies ist insbesondere dann von Nutzen, wenn man Zweige oder Marken betrachtet und nur die Änderungen innerhalb des Zweiges sehen möchte.

    Normalerweise werden Sie diese Option nicht aktivieren. TortoiseSVN merkt sich die von Ihnen gewählte Einstellung.

    Wenn der Log-Dialog aus dem Zusammenführen-Dialog heraus aufgerufen wird, ist diese Option standardmäßig aktiviert. Der Grund dafür ist, dass beim Zusammenführen meistens Änderungen an Zweigen betrachtet werden. Es ist normalerweise nicht sinnvoll, über die Wurzel des Zweiges hinaus in die Vergangenheit zu gehen.

    Beachten Sie, dass Subversion das Umbenennen derzeit als aufeinanderfolgende Kopieren/Löschen-Aktionen implementiert, sodass die Log-Anzeige ebenfalls anhält, wenn ein Ordner / eine Datei umbenannt wurde, falls diese Option gewählt ist.

Wenn Sie mehr Logmeldungen sehen wollen, klicken Sie auf die Nächste 100-Schaltfläche, um weitere 100 Meldungen zu holen. Sie können dies so oft wie nötig wiederholen.

Daneben befindet sich eine Mehrfachschaltfläche, die sich den letzten gewählten Zustand merkt. Klicken Sie auf den Pfeil, um die anderen Möglichkeiten zu sehen.

Wählen Sie Zeige Bereich, wenn Sie einen bestimmten Revisionsbereich betrachten wollen. Ein Dialog wird dann die Anfangs- und Endrevision von Ihnen abfragen.

Wählen Sie Zeige Alle, wenn Sie alle Logmeldungen von HEAD zurück bis zur Revision 1 sehen möchten.

Drücken Sie die Taste F5, um die neueste Version zu aktualisieren, falls es Übertragungen gab, während der Log-Dialog geöffnet war.

Um den Log-Puffer zu aktualisieren, drücken Sie Strg+F5.

Aktuelle Revision der Arbeitskopie

Da der Log-Dialog Ihnen die Logmeldungen ab der HEAD-Revision zeigt, kann es vorkommen, dass Logmeldungen für Änderungen angezeigt werden, die sich noch nicht in Ihrer Arbeitskopie befinden. Um dies zu verdeutlichen, wird die Logmeldung, die der aktuellen Revision der Arbeitskopie entspricht, in Fettdruck hervorgehoben.

Wenn Sie das Log für einen Ordner anzeigen, entspricht die hervorgehobene Revision der höchsten innerhalb des Ordners gefundenen Revisionsnummer. Diese zu ermitteln, erfordert ein rekursives Durchsuchen der Unterordner. Dieser Vorgang läuft in einem separaten Prozess ab, um die Anzeige der Logmeldungen nicht zu verzögern. Aus diesem Grund erscheint die Hervorhebung der Ordnerrevision unter Umständen verzögert.

Datenintegration protokollieren

Subversion 1.5 und neuer speichern die in einem Zweig zusammengeführten Revisionen in einer Eigenschaft des Zweiges ab. Dies ermöglicht es, eine detaillierte Historie von bereits durchgeführten Integrationsschritten zu erhalten. Wenn Sie zum Beispiel eine neue Funktion in einem Zweig entwickeln und die fertige Entwicklung im Stamm zusammenführen, wird das Log für den Stamm nur eine Revision anzeigen, obwohl darin vielleicht 1000 Revisionen des Zweiges enthalten sind.

Abbildung 4.24. Der Log-Dialog mit bereits zusammengeführten Revisionen

Der Log-Dialog mit bereits zusammengeführten Revisionen

Wenn Sie im Detail sehen wollen, welche Revisionen als Teil einer Übertragung integriert wurden, aktivieren Sie die Option Versionen vom Zusammenführen einschließen. Damit werden die Logmeldungen erneut geholt und die Einträge aus den zusammengeführten Revisionen dazwischen sortiert. Zusammengeführte Revisionen werden in grau angezeigt, weil es sich um Änderungen an einem anderen Teil des Baumes handelt.

Datenintegration ist niemals einfach! Während Sie eine Funktion auf dem Zweig entwickeln, werden Sie dort sicher ab und zu Änderungen aus dem Stamm zusammenführen, um mit der Hauptentwicklung synchron zu bleiben. Deshalb wird die Historie des Zweiges eine weitere Ebene an Informationen über Datenintegration enthalten. Diese verschiedenen Ebenen werden durch unterschiedlich tiefe Einrückungen im Log-Dialog angezeigt.

Ändern der Logmeldung und des Autors

Revisionseigenschaften unterscheiden sich vollständig von den Subversion-Eigenschaften jedes Objekts. Revisionseigenschaften sind mit einer bestimmten Revisionsnummer des Projektarchivs verbundene beschreibende Objekte, zum Beispiel Logmeldung, Datum und Autor der Übertragung.

Manchmal ist es notwendig, eine Logmeldung nachträglich zu ändern. Sei es, weil die Meldung Rechtschreibfehler enthält oder weil Sie die Meldung mit mehr Informationen erweitern müssen oder aus anderen Gründen. Oder Sie müssen den Autor der Revision ändern, weil Sie vielleicht vergessen haben, eine Authentifizierung für Übertragungen auf dem Server einzurichten oder...

Subversion lässt Sie Revisionseigenschaften jederzeit ändern. Aber da solche Änderungen nicht wieder rückgängig gemacht werden können (diese Änderungen werden nicht aufgezeichnet), ist die Funktion standardmäßig deaktiviert. Um diese Funktion zu aktivieren, müssen Sie eine pre-revprop-change-Aktion für das Projektarchiv einrichten. Bitte lesen Sie dazu im Kapitel Hook Scripts des Subversion-Buchs nach, wie das gemacht wird. Lesen Sie auch „Serverseitige Aktionsskripte“, um mehr Informationen über das Einrichten von Aktionen auf einem Windows-PC zu erhalten.

Sobald Sie die gewünschten Aktionsskripte für das Projektarchiv eingerichtet haben, können Sie sowohl den Autor als auch die Logmeldung (oder jede andere Revisionseigenschaft) über das Kontextmenü der Revisionsliste nachträglich ändern. Die Logmeldung selbst kann auch über das Kontextmenü des Textfeldes geändert werden.

Warnung

Da die Revisionseigenschaften (z. B. svn:log für Logmeldungen) in Subversion nicht aufgezeichnet werden, überschreiben Änderungen den alten Wert für immer.

Wichtig

Da TortoiseSVN einen Puffer aller Log-Informationen beibehält, werden Änderungen an Autor und Logmeldungen nur in Ihrer lokalen Installation auftauchen. Andere TortoiseSVN-Anwender werden noch die auf Ihrem Rechner zwischengespeicherten (alten) Autoren und Logmeldungen sehen, bis sie den Log-Puffer aktualisieren. Siehe „Die Ansicht aktualisieren“.

Logmeldungen filtern

Mit Hilfe der Filter am oberen Rand des Log-Dialogs können Sie die Logmeldungen auf diejenigen einschränken, die Sie interessieren. Die Von und Bis ermöglichen es, die Ausgabe auf einen bestimmten Zeitraum zu reduzieren. Die Suchmaske filtert die Meldungen heraus, welche die angegebene Zeichenfolge beinhalten.

Klicken Sie auf das Suchsymbol, um auszuwählen, welche Werte Sie durchsuchen möchten und um die Suche mit regulären Ausdrücken zu aktivieren. Normalerweise benötigen Sie nur eine einfache Textsuche, aber wenn Sie komplexere Suchbegriffe formulieren wollen, können Sie reguläre Ausdrücke verwenden. Wenn Sie mit dem Mauszeiger über das Eingabefeld fahren, erscheint ein Hinweistext zur Textsuche und den regulären Ausdrücken. Der Filter vergleicht Ihren Suchtext mit den Logmeldungen und zeigt nur die Einträge an, die mit dem Suchtext übereinstimmen.

Die einfache Suche nach Teilzeichenfolgen funktioniert ähnlich wie eine Suchmaschine. Zu suchende Zeichenfolgen werden durch Leerzeichen getrennt und alle Zeichenfolgen müssen übereinstimmen. Sie können ein voranstellen, damit eine bestimmte Teilzeichenfolge nicht gefunden wird (inverse Suche für diesen Begriff). Wenn Sie ein ! voranstellen, wird der gesamte Ausdruck invertiert. Weiterhin können Sie ein + voranstellen, um anzugeben, dass eine Teilzeichenfolge eingeschlossen werden soll, auch wenn sie zuvor mit einem - ausgeschlossen wurde. Beachten Sie, dass die Reihenfolge der Einschließung/Ausschließung hier relevant ist. Anführungszeichen schließen eine Zeichenfolge ein, die Leerzeichen enthält. Wenn Sie ein Anführungszeichen suchen möchten, schreiben Sie zwei Anführungszeichen hintereinander. Beachten Sie, dass der umgekehrten Schrägstrich nicht als Sonderzeichen verwendet wird und keine besonderen Bedeutung bei der einfachen Suche hat. Einige Beispiele erleichtern das Verständnis:

Alice Bob -Eve

sucht nach Zeichenfolgen, die beides, Alice und Bob, aber nicht Eve enthalten.

Alice -Bob +Eve

sucht nach Zeichenfolgen, die Alice, aber nicht Bob enthalten oder die Eve enthalten.

-Fall +SonderFall

sucht nach Zeichenfolgen, die Fall nicht enthalten, aber dennoch Zeichenfolgen, die SonderFall enthalten.

! Alice Bob

sucht nach Zeichenfolgen, die Alice und Bob nicht enthalten.

! -Alice -Bob 

erinnern Sie De Morgan's Theorem? NICHT (nicht Alice und nicht Bob) reduziert sich zu (Alice oder Bob).

"Alice und Bob"

sucht explizit nach Alice und Bob.

""

sucht ein doppeltes Anführungszeichen im Text.

"Alice sagt ""Hallo"" zu Bob" 

sucht nach Alice sagt "Hallo" zu Bob.

Reguläre Ausdrücke zu erklären würde den Rahmen dieses Handbuchs sprengen, aber Sie finden eine Dokumentation und Anleitung auf http://www.regular-expressions.info/ .

Beachten Sie, dass diese Filter nur auf die bereits heruntergeladenen Meldungen wirken. Sie haben keinen Einfluss darauf, welche Meldungen aus dem Projektarchiv heruntergeladen werden.

Sie können auch die Pfade in der unteren Liste filtern, indem Sie die Option Zeige nur betroffene Pfade nutzen. Betroffene Pfade enthalten den Pfad, für den das Log angezeigt wurde. Wenn sie das Log für einen Ordner anzeigen, heißt dies alle Pfade innerhalb dieses Ordners oder darunter. Bei Dateien betrifft das nur die Datei selbst. Normalerweise zeigt der Log-Dialog alle in der Übertragung enthaltenen Pfade, allerdings in grau. Wenn die Option aktiviert ist, werden die übrigen Pfade ausgeblendet.

Manchmal erfordern es Ihre Arbeitsgewohnheiten, dass Logmeldungen ein bestimmtes Format haben. Dadurch ist unter Umständen der Text, der die Änderungen beschreibt, in der Zusammenfassung von TortoiseSVN nicht sichtbar. Die Eigenschaft tsvn:logsummary kann dazu verwendet werden, einen Teil der Logmeldung zu extrahieren und als Zusammenfassung anzuzeigen. In „TortoiseSVN-Projekteigenschaften“ wird beschrieben, wie die Eigenschaft benutzt wird.

Keine Log-Formatierung im Projektarchivbetrachter

Da die Formatierung vom Zugriff auf Subversion-Eigenschaften abhängt, sehen Sie die Ergebnisse nur in einer Arbeitskopie. Im Projektarchivbetrachter steht diese Funktion nicht zur Verfügung, weil das Holen der Eigenschaften von einem Server eine zeitintensive Operation ist.

Statistiken anzeigen

Die Statistiken-Schaltfläche zeigt ein Formular mit interessanten Informationen über die angezeigten Revisionen an. Es zeigt zum Beispiel, wie viele Autoren (Personen, die Übertragungen gemacht haben) am Werk waren, wie viele Übertragungen jeder von ihnen gemacht hat, wöchentlicher Projektfortschritt und vieles mehr. Endlich haben Sie die Möglichkeit, zu überprüfen, wer fleißig am Projekt mitarbeitet und wer hinterherhängt ;-)

Statistikseite

Diese Seite zeigt Ihnen sämtliche vorstellbaren Zahlen an. Insbesondere der Datumsbereich und die zugehörigen Revisionen sowie einige Min-/Max-/Mittelwerte.

Übertragungen per Autor

Abbildung 4.25. Übertragungen per Autor als Histogramm

Übertragungen per Autor als Histogramm


Dieser Graph zeigt, welche Autoren aktiv am Projekt gearbeitet haben, als einfaches Histogramm, überlagertes Histogramm oder Kuchendiagramm.

Abbildung 4.26. Übertragungen per Autor als Tortendiagramm

Übertragungen per Autor als Tortendiagramm


Wenn es einige wenige Hauptautoren und viele Autoren mit wenigen Beiträgen gibt, kann die Anzahl der kleinen Segmente den Graphen unleserlich machen. Der Schieber am unteren Rand erlaubt es Ihnen, einen Prozentwert der gesamten Übertragungen als Schwellwert festzulegen, unterhalb dessen die Autoren in der Gruppe Andere zusammengefasst werden.

Die Seite Übertragungen nach Datum

Abbildung 4.27. Das Diagramm Übertragungen nach Datum

Das Diagramm Übertragungen nach Datum


Diese Seite zeigt Ihnen eine Zusammenfassung der Projektaktivität in Hinblick auf Übertragungen und Autoren an. Damit können Sie auf einen Blick erkennen, wann und durch wen am Projekt gearbeitet wurde.

Sobald es mehrere Autoren gibt, werden Sie entsprechend viele Linien im Diagramm sehen. Es gibt zwei verschiedene Ansichten: normal, in der die Aktivität eines Autors relativ zur Grundlinie angezeigt wird und gestapelt, bei der die Aktivität eines Autors relativ zur vorherigen Linie angezeigt wird. Die zweite Option vermeidet sich kreuzende Linien, erschwert es aber auch, die Aktivität eines einzelnen Autors zu bewerten.

Standardmäßig wird Groß-/Kleinschreibung bei der Analyse berücksichtigt, sodass PeterEgan und PeteRegan als zwei verschiedene Autoren erkannt werden. In vielen Fällen werden Benutzernamen inkonsistent eingegeben. Deshalb können Sie den Vergleich mit Groß-/Kleinschreibung bei Autoren ignorieren entsprechend anpassen.

Beachten Sie, dass die Statistiken den gleichen Zeitraum wie der Log-Dialog abdecken. Wenn dieser nur eine Revision anzeigt, sagt die Statistik nicht viel aus.

Offline-Modus

Abbildung 4.28. Der Dialog zum Offline gehen

Der Dialog zum Offline gehen


Wenn der Server nicht erreichbar ist und Sie den Log-Puffer aktiviert haben, können Sie den Log-Dialog und den Revisionsgraphen auch offline benutzen. Dabei werden die Daten aus dem Puffer gelesen, sodass Sie wie gewohnt weiterarbeiten können. Allerdings ist es möglich, dass die angezeigten Informationen veraltet oder unvollständig sind.

Hier haben Sie drei Möglichkeiten:

Für diese Aktion offline

Beendet die aktuelle Operation im Offline-Modus, versucht aber, wieder auf das Projektarchiv zuzugreifen, wenn das nächste Mal Logdaten angefordert werden.

Permanent offline

Bleibt im Offline-Modus, bis eine Aktualisierung der Logdaten explizit angefordert wird. Siehe „Die Ansicht aktualisieren“.

Abbrechen

Wenn Sie die Operation wegen möglicherweise veralteter Logdaten nicht fortsetzen wollen, brechen Sie einfach ab.

Die Option Diese Einstellung immer verwenden verhindert, dass der Dialog wieder erscheint und verwendet stets die von Ihnen gewählte Aktion. Sie können die Vorgabe jederzeit über TortoiseSVNOptionen ändern.

Die Ansicht aktualisieren

Wenn Sie den Server auf neue Logmeldungen ü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 Meldungen abgefragt und nur diese werden geholt. Falls 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, können Sie Umschalt+F5 oder Strg+F5 benutzen, um die angezeigten Meldungen erneut vom Server zu holen. Beachten Sie, dass das nur die gerade angezeigten Meldungen betrifft und dass nicht der gesamte Puffer für das Projektarchiv ungültig wird.

Unterschiede anzeigen

Eine der häufigsten Anforderungen in der Projektarbeit ist herauszufinden, was sich geändert hat. Entweder möchten Sie die Unterschiede zwischen zwei Revisionen derselben Datei sehen oder aber die Unterschiede zwischen zwei verschiedenen Dateien. TortoiseSVN bietet Ihnen mit TortoiseMerge ein Programm an, das die meisten Anforderungen erfüllt, erlaubt es Ihnen aber auch, ein eigenes Programm zum Anzeigen und Bearbeiten von Differenzen zu verwenden. Um Unterschiede von Bilddateien zu erkennen, bietet TortoiseSVN ebenfalls ein Programm namens TortoiseIDiff an.

Datei-Unterschiede

Lokale Änderungen

Wenn Sie sehen wollen, welche Änderungen Sie selbst in Ihrer Arbeitskopie haben, verwenden Sie das Kontextmenü des Explorers und wählen Sie TortoiseSVNVergleiche.

Unterschiede zu einem anderen Zweig

Wenn Sie sehen wollen, was sich im Stamm (wenn Sie auf einem Zweig arbeiten) oder in einem bestimmten Zweig (wenn Sie am Stamm arbeiten) geändert hat, können Sie das Explorer-Kontextmenü verwenden. Halten Sie die Umschalt-Taste gedrückt, während Sie einen Rechtsklick auf die Datei machen. Dann wählen SieTortoiseSVNVergleich mit URL. Im folgenden Dialog geben Sie die URL im Projektarchiv an, mit der Sie die lokale Datei vergleichen wollen.

Sie können auch den Projektarchivbetrachter zum Vergleich zweier Bäume verwenden, indem Sie zwei Marken oder auch einen Zweig und den Stamm auswählen. Über das dortige Kontextmenü können Sie mit der Funktion Revisionen vergleichen. Lesen Sie weiter in „Ordner vergleichen“.

Unterschiede zu einer früheren Revision

Wenn Sie die Unterschiede zwischen einer bestimmten Revision und Ihrer Arbeitskopie sehen wollen, lassen Sie sich den Log-Dialog anzeigen, markieren dort die gewünschte Revision und wählen Vergleiche mit Arbeitskopie aus dem Kontextmenü.

Wenn Sie den Unterschied zwischen der letzten übertragenen Revision und Ihrer Arbeitskopie unter der Annahme sehen wollen, dass die Arbeitskopie noch nicht verändert wurde, machen Sie einen Rechtsklick auf die Datei. Dann wählen Sie TortoiseSVNVergleiche mit vorheriger Revision. Dadurch führen Sie einen Vergleich mit der Revision vor dem letzten in Ihrer Arbeitskopie gespeicherten Übertragungszeitpunkt und der Arbeitskopie BASE-Revision durch. Dieser Vergleich reflektiert die Änderungen, durch die Ihre Arbeitskopie aktualisiert wurde. Sie sehen keine Änderungen neueren Datums.

Unterschiede zwischen zwei vorherigen Revisionen

Wenn Sie die Unterschiede zwischen zwei bereits übertragenen Revisionen sehen wollen, öffnen Sie den Log-Dialog und markieren Sie die beiden Revisionen mit gedrückter Strg-Taste. Dann wählen Sie Revisionen vergleichen aus dem Kontextmenü.

Wenn Sie diese Option für das Log eines Ordners wählen, erscheint ein weiterer Dialog, der die geänderten Dateien anzeigt und Ihnen weitere Vergleichsoptionen anbietet. Lesen Sie mehr dazu in „Ordner vergleichen“.

Alle Änderungen einer Übertragung

Wenn Sie die Änderungen in allen Dateien in einer bestimmten Revision auf einen Blick sehen wollen, verwenden Sie das Standard-Diff (GNU Patch). Dieses Format zeigt nur die Unterschiede mit ein paar Zeilen Kontext an. Es ist schwieriger zu lesen als ein visueller Vergleich, aber es zeigt alle Änderungen auf einmal. Markieren Sie dazu im Log-Dialog die gewünschte Revision und wählen Sie Zeige Unterschiede als Standard-Diff aus dem Kontextmenü.

Unterschiede zwischen Dateien

Wenn Sie die Unterschiede zwischen zwei Dateien sehen wollen, können Sie das direkt im Explorer tun, indem Sie die beiden Dateien markieren und aus dem Explorer Kontextmenü TortoiseSVNVergleiche wählen.

Wenn die zu vergleichenden Dateien sich nicht im selben Ordner befinden, verwenden Sie den Befehl TortoiseSVNSpäter vergleichen, um die erste Datei für den Vergleich zu markieren. Dann wechseln Sie zur zweiten Datei und rufen TortoiseSVNVergleiche mit "Pfad/der/markierten/Datei" auf. Um die gemerkte Datei zu löschen, halten Sie die Strg-Taste gedrückt, während Sie TortoiseSVNSpäter vergleichen wählen.

Unterschiede zwischen Arbeitskopie Datei/Ordner und URL

Wenn Sie die Unterschiede zwischen einer Datei in der Arbeitskopie und einer Datei im Subversion-Projektarchiv sehen möchten, können Sie die Umschalt-Taste drücken, während sie einen Rechtsklick auf die Datei machen. Wählen sie dann TortoiseSVNVergleichen mit URL. Sie können diese Aktion ebenso für einen Ordner in der Arbeitskopie durchführen. TortoiseMerge wird Ihnen die Unterschiede wie eine Patchdatei anzeigen - eine Liste von Dateien, die Sie einzeln betrachten können.

Unterschied mit Annotierungsinformation

Wenn Sie nicht nur die Unterschiede, sondern auch Autor, Revision und Datum der Änderung sehen wollen, können Sie Vergleichen und Annotieren über den Log-Dialog miteinander kombinieren. Lesen Sie „Unterschiede annotieren“ für weitere Informationen.

Unterschiede zwischen Ordnern

Die mit TortoiseSVN gelieferten Programme unterstützen keinen Vergleich von Verzeichnissen. Wenn Sie über ein externes Programm verfügen, das diese Funktionalität bietet, können Sie es stattdessen benutzen. In „Externe Programme“ stellen wir Ihnen einige Programme vor, die wir mit TortoiseSVN getestet haben.

Wenn Sie ein externes Vergleichsprogramm konfiguriert haben, können Sie die Umschalt-Taste beim Vergleichen drücken, um das alternative Vergleichsprogramm aufzurufen. Lesen Sie in „Einstellungen für externe Programme“ nach, wie weitere Vergleichsprogramme eingerichtet werden.

Zeilenende- und Leerzeichenoptionen

Manchmal werden Sie während eines Projektes die Zeilenenden von CRLF auf LF umstellen oder Sie werden die Einrückung eines Abschnitts ändern. Unglücklicherweise wird dadurch eine große Anzahl Zeilen als verändert markiert, obwohl diese Unterschiede die Bedeutung des Programmcodes nicht beeinflussen. Mit den folgenden Optionen können Sie einstellen, wie diese Unterschiede beim Vergleichen behandelt werden sollen. Sie finden die Einstellungen in den Zusammenführen- und Annotieren-Dialogen sowie in den Einstellungen für TortoiseMerge.

Ignoriere Zeilenende schließt Änderungen aus, die nur aus unterschiedlichen Zeilenumbrüchen bestehen.

Vergleiche Leerzeichen umfasst alle Änderungen bei Leerzeichen und Einrückungen als hinzugefügte bzw. gelöschte Zeilen.

Ignoriere Änderungen in Leerzeichen schließt Änderungen in der Anzahl oder dem Typ von Leerzeichen, z. B. Änderung der Einrückung oder Wechsel von Tab zu Leerzeichen aus. Komplett neue oder vollständig gelöschte Leerzeichen werden weiterhin als Änderung angezeigt.

Ignoriere alle Leerzeichen schließt sämtliche Änderungen aus, die nur aus Leerzeichen bestehen.

Selbstverständlich wird jede Zeile mit geänderten Inhalten stets als Differenz angezeigt.

Ordner vergleichen

Abbildung 4.29. Der Dialog zum Vergleichen von Revisionen

Der Dialog zum Vergleichen von Revisionen


Wenn Sie zwei Bäume im Projektarchivbetrachter markieren oder wenn Sie zwei Revisionen einer Datei im Log-Dialog wählen, können Sie KontextmenüRevisionen vergleichen aufrufen.

Dieser Dialog zeigt eine Liste aller Dateien, die geändert wurden und erlaubt Ihnen, sie mit Hilfe des Kontextmenüs einzeln zu vergleichen oder zu annotieren.

Sie können einen Änderungsbaum exportieren. Das ist nützlich, wenn Sie jemandem Ihre Projektstruktur schicken wollen, die aber nur die geänderten Dateien enthalten soll. Diese Funktion arbeitet nur auf den markierten Dateien. Das bedeutet, dass Sie die gewünschten Dateien - normalerweise alle - markieren und dann per KontextmenüExportiere Auswahl in... in den im folgenden Dialog abgefragten Ort herausschreiben.

Sie können auch die Liste der geänderten Dateien in eine Textdatei herausschreiben, indem Sie KontextmenüSpeichere Liste der gewählten Dateien in... wählen.

Wenn Sie die Liste der Dateien und der Aktionen (verändert, hinzugefügt, gelöscht) exportieren wollen, können Sie dies mit KontextmenüAuswahl in Zwischenablage kopieren erreichen.

Die obere Schaltfläche ermöglicht es Ihnen, die Richtung des Vergleichs festzulegen. Sie können sich die Änderungen anzeigen lassen, um von A nach B zu kommen oder umgekehrt.

Die Schaltflächen mit den Revisionsnummern dienen dazu, einen anderen Revisionsbereich auszuwählen. Wenn Sie den Bereich ändern, wird die Liste der Objekte, die sich darin geändert haben, aktualisiert.

Wenn die Liste der Dateien sehr lang ist, kann sie mit Hilfe des Suchfeldes auf die Dateien mit einer bestimmten Zeichenfolge beschränkt werden. Es wird eine einfache Textsuche durchgeführt. Wenn Sie z. B. nur C-Quelltexte angezeigt haben wollen, geben Sie .c statt *.c ein.

Bilder mit TortoiseIDiff vergleichen

Es gibt viele Programme einschließlich unseres TortoiseMerge, mit denen Unterschiede zwischen Textdateien angezeigt werden können. Wir wollen aber oft auch sehen, wie sich ein Bild geändert hat. Deshalb haben wir TortoiseIDiff entwickelt.

Abbildung 4.30. Ein Programm zum Vergleichen von Bildern

Ein Programm zum Vergleichen von Bildern


TortoiseSVNVergleich für jedes übliche Bildformat wird TortoiseIDiff starten, um die Unterschiede anzuzeigen. In der Standardansicht werden die Bilder nebeneinander dargestellt. Mit der Symbolleiste oder dem Menü können Sie die Bilder auch übereinander darstellen beziehungsweise überlagern. Der Schieber ermöglicht es Ihnen, die Transparenz der Überlagerung einstellen.

Außerdem können Sie die Ansicht vergrößern oder verkleinern und den aktuellen Bildausschnitt mit der Maus verschieben. Wenn Sie Bilder verknüpfen aktivieren, werden die Bewegungssteuerelemente (Rollbalken, Mausrad) der Bilder miteinander verknüpft.

Die Infobox im Bild zeigt Details wie Größe, Auflösung und Farbtiefe des Bildes an. Wenn sie Ihnen im Weg liegt, kann sie mit AnsichtBildinformation ausgeblendet werden. Die Bildinformation wird als Hinweistext angezeigt, wenn Sie mit der Maus über den Bildtitel fahren.

Wenn die Bilder überlagert sind, wird die relative Intensität der Bilder (Alpha-Überblendung) durch einen Schieber am linken Rand gesteuert. Sie können direkt auf den Schieber klicken, um einen Wert einzustellen. Sie können den Schieber auf einen bestimmten Wert ziehen oder per Strg+Umschalt-Mausrad einstellen.

Die Schaltfläche oberhalb des Schiebers schaltet zwischen 0 % und 100 % Überblendung um. Wenn Sie die Schaltfläche doppelklicken, wird die Überblendung im Sekundentakt umgeschaltet, bis Sie die Schaltfläche erneut betätigen. Diese Funktion kann ihnen helfen, kleine Änderungen in Bildern zu entdecken.

Manchmal möchten Sie lieber die Unterschiede statt einer Überblendung angezeigt bekommen, z. B., weil Sie das Layout zweier Versionen einer Platine miteinander vergleichen wollen. Wenn Sie die Überblendung deaktivieren, werden stattdessen die Unterschiede durch ein XOR der Bildpunkte hervorgehoben. Änderungen werden dadurch farbig, unveränderte Bereiche weiß dargestellt.

Office-Dokumente vergleichen

Wenn Sie Nicht-Text-Dokumente vergleichen wollen, müssen Sie normalerweise die Software verwenden, mit der das Dokument erstellt wurde, da diese das Dateiformat kennt. Für die häufig verwendeten Programme Microsoft Office und Open Office existiert in der Tat einige Unterstützung für das Anzeigen von Unterschieden. TortoiseSVN enthält Skripte, die diese mit den richtigen Einstellungen aufrufen, wenn Sie Dateien mit bekannten Erweiterungen vergleichen. Sie können sehen, welche Erweiterungen unterstützt werden und Ihre eigenen hinzufügen, indem Sie TortoiseSVNEinstellungen klicken und die Erweitert... Seite im Abschnitt Externe Programme aufrufen.

Probleme mit Office 2010

Wenn Sie die Click-to-Run-Version von Office 2010 installiert haben und versuchen, Dokumente zu vergleichen, erhalten Sie möglicherweise eine Fehlermeldung des Windows Script Host, die etwa wie folgt lautet: ActiveX-Komponente kann Objekt nicht erstellen: word.Application. Es scheint, dass Sie die MSI-basierte Version von Office verwenden müssen, um die Diff-Funktionalität zu erhalten.

Externe Programme

Wenn TortoiseMerge nicht all das kann, was Sie benötigen, versuchen Sie es doch mit einem der vielen Open-Source- oder kommerziellen Programme. Jeder hat seine Lieblingsanwendung und diese Liste ist keinesfalls vollständig, aber hier sind ein paar Beispiele, die Sie sich anschauen sollten:

WinMerge

WinMerge ist ein großartiger Open-Source-Vergleichs- und Konflikteditor, der auch mit Verzeichnissen umgehen kann.

Perforce Merge

Perforce ist ein kommerzielles Versionskontrollsystem, aber Sie können den Vergleichs- und Konflikteditor kostenlos nutzen. Weitere Informationen finden sich auf der Perforce-Webseite.

KDiff3

KDiff3 ist ein freier Vergleichs- und Konflikteditor, der auch Verzeichnisse vergleichen kann. Den Download finden Sie hier.

SourceGear DiffMerge

SourceGear Vault ist ein kommerzielles Versionskontrollsystem, aber Sie können den Vergleichs- und Konflikteditor kostenlos nutzen. Weitere Informationen finden sich auf der SourceGear-Webseite.

ExamDiff

ExamDiff Standard ist Freeware. Es kann Dateien, aber keine Verzeichnisse vergleichen. ExamDiff Pro ist Shareware und hat eine Menge an Extras einschließlich dem Vergleichen von Verzeichnissen und der Möglichkeit des Editierens. In beiden Ausführungen ab Version 3.2 ist auch Unterstützung für Unicode vorhanden. Sie können sie von PrestoSoft herunterladen.

Beyond Compare

Dies ist ähnlich wie ExamDiff Pro eine exzellente Shareware, die auch Verzeichnisse vergleichen kann und Unicode-Unterstützung besitzt. Sie können sie von Scooter Software herunterladen.

Araxis Merge

Araxis Merge ist ein nützliches kommerzielles Programm, das sowohl Vergleichen als auch Zusammenführen von Dateien und Ordnern unterstützt. Es kann einen Drei-Wege-Vergleich beim Zusammenführen durchführen und besitzt Abgleichsfunktionen, falls Sie die Reihenfolge von Programmblöcken vertauscht haben. Sie können es von Araxis herunterladen.

Lesen Sie „Einstellungen für externe Programme“ für Informationen über die Einrichtung von TortoiseSVN zur Verwendung dieser Werkzeuge.

Neue Dateien und Ordner hinzufügen

Abbildung 4.31. Explorer-Kontextmenü für nicht versionierte Dateien

Explorer-Kontextmenü für nicht versionierte Dateien


Wenn Sie neue Dateien und/oder Ordner während Ihrer Arbeit erstellen, müssen Sie diese auch zur Versionskontrolle hinzufügen. Wählen Sie diese Dateien und/oder Ordner aus und wählen Sie dann den Befehl TortoiseSVNHinzufügen... im Kontextmenü.

Nachdem Sie die Dateien/Ordner zur Versionskontrolle hinzugefügt haben, erscheinen diese mit einem HInzugefügt-Symbol im Explorer. Dies bedeutet, dass diese bei der nächsten Übertragung mit in das Projektarchiv aufgenommen werden. Beachten Sie, dass das Hinzufügen alleine die Dateien/Ordner nicht im Projektarchiv speichert!

Mehrfaches Hinzufügen

Sie können den Hinzufügen-Befehl auch auf bereits versionierte Ordner anwenden. In diesem Falle zeigt Ihnen der Hinzufügen-Dialog alle noch nicht versionierten Dateien/Ordner innerhalb dieses Ordners an. Dies ist hilfreich, wenn Sie viele neue Dateien auf einmal in die Versionskontrolle aufnehmen wollen.

Wenn Sie Dateien von außerhalb zu Ihrer Arbeitskopie hinzufügen möchten, können Sie auch die Funktion Ziehen und Ablegen verwenden:

  1. Wählen Sie die Dateien zum Hinzufügen

  2. Ziehen Sie die Dateien mit gedrückter rechter Maustaste an den neuen Ort.

  3. Lassen Sie die rechte Maustaste los.

  4. Wählen Sie KontextmenüSVN-Dateien zu dieser Arbeitskopie hinzufügen. Die Dateien werden dann in die Arbeitskopie kopiert und zur Versionskontrolle hinzugefügt.

Sie können Dateien innerhalb einer Arbeitskopie einfach hinzufügen, indem Sie sie mit der Maus auf den Übertragen-Dialog ziehen.

Wenn Sie versehentlich eine Datei oder einen Ordner zur Versionskontrolle hinzugefügt haben, können Sie dies vor dem Übertragen mittels TortoiseSVNHinzufügen zurücknehmen... zurücknehmen.

Dateien oder Ordner kopieren/umbenennen/verschieben

Es kommt sicher häufiger vor, dass sich einige benötigte Dateien bereits an einer anderen Stelle in Ihrem Projektarchiv befinden und Sie diese einfach an den richtigen Ort kopieren wollen. Sie könnten die Dateien einfach kopieren und hinzufügen, aber dabei würde die Historie verloren gehen. Wenn Sie später einen Fehler beseitigen, können Sie diese Änderungen nur dann automatisch zusammenführen, wenn die Kopie mit dem Original in Subversion verbunden ist.

Die einfachste Methode, um Dateien und Ordner innerhalb einer Arbeitskopie zu verschieben, ist das Rechtsziehen. Wenn Sie eine Datei oder einen Ordner mit der rechten Maustaste an einen neuen Ort ziehen, erscheint beim Loslassen der Maustaste ein Kontextmenü.

Abbildung 4.32. Rechts-Ziehen-Menü für einen Ordner unter Versionskontrolle

Rechts-Ziehen-Menü für einen Ordner unter Versionskontrolle


Damit können Sie versionierte Objekte an eine andere Stelle kopieren und dabei gegebenenfalls umbenennen.

Sie können versionierte Dateien innerhalb einer oder zwischen zwei Arbeitskopien verschieben oder kopieren. Dazu verwenden Sie das bekannte Kopieren beziehungsweise Ausschneiden in die Zwischenablage. Falls die Zwischenablage versionierte Objekte enthält, können Sie mittels TortoiseSVNEinfügen (Achtung: Nicht das Standard-Einfügen von Windows) diese Objekte an einen neuen Platz in der Arbeitskopie verschieben oder kopieren.

Sie können Dateien und Ordner aus Ihrer Arbeitskopie an einen anderen Ort im Projektarchiv kopieren, indem Sie TortoiseSVNVerzweigen/Markieren aufrufen. Lesen Sie „Einen Zweig oder eine Marke erstellen“ für weitere Details.

Sie können eine ältere Version einer Datei oder eines Ordners mit Hilfe des Log-Dialogs finden und direkt aus dem Dialog an einen neuen Ort im Projektarchiv kopieren, indem Sie KontextmenüErstelle Zweig/Marke von Revision aufrufen. Lesen Sie „Zusätzliche Informationen erhalten“ für weiterführende Informationen.

Sie können auch mit Hilfe des Projektarchiv-Betrachters Objekte lokalisieren und von dort aus direkt in Ihre Arbeitskopie oder innerhalb des Projektarchivs umherkopieren. Lesen Sie in „Projektarchivbetrachter“ nach, wie man mit dem Betrachter arbeitet.

Kann nicht zwischen Projektarchiven kopieren

Während Sie Dateien und Ordner innerhalb eines Projektarchivs kopieren oder verschieben können, ist es nicht möglich, Objekte unter Beibehaltung der Historie in ein anderes Projektarchiv zu kopieren oder zu verschieben. Das geht selbst dann nicht, wenn die Projektarchive sich auf demselben Server befinden. Alles, was Sie tun können, ist, den aktuellen Inhalt zu kopieren und als neuen Inhalt zum zweiten Projektarchiv hinzuzufügen.

Wenn Sie unsicher sind, ob zwei URLs auf dem gleichen Server dasselbe Projektarchiv referenzieren, rufen Sie den Projektarchivbetrachter auf und finden Sie heraus, wo die Wurzel des Projektarchivs liegt. Wenn Sie von da aus beide URLs in einem Betrachterfenster sehen können, befinden sie sich im selben Projektarchiv.

Ignorieren von Dateien und Ordnern

Abbildung 4.33. Explorer-Kontextmenü für nicht versionierte Dateien

Explorer-Kontextmenü für nicht versionierte Dateien


In den meisten Projekten werden Sie Dateien und Ordner haben, die nicht der Versionskontrolle unterstellt sein sollen. Dabei kann es sich um compilergenerierte Dateien *.obj, *.lst oder um einen Ausgabeordner für die ausführbaren Dateien handeln. Jedes Mal, wenn Sie Änderungen zum Projektarchiv übertragen, zeigt Ihnen TortoiseSVN nicht versionierte Dateien, die die Liste im Übertragen-Dialog füllen. Sie könnten natürlich die Anzeige der nicht versionierten Dateien abschalten, aber dann übersehen Sie eventuell eine neue Datei, die Sie eigentlich zur Versionskontrolle hinzufügen wollten.

Die beste Möglichkeit, diese Probleme zu vermeiden, besteht darin, die generierten Dateien zur Ignorierliste des Projekts hinzuzufügen. Auf diese Weise werden sie im Übertragen-Dialog niemals auftauchen, wogegen Quelldateien weiterhin angezeigt werden.

Wenn Sie mit der rechten Maustaste auf eine einzelne nicht versionierte Datei klicken und TortoiseSVNIgnorieren aus dem Kontextmenü wählen, wird Ihnen ein Untermenü angezeigt, das Ihnen erlaubt, nur diese Datei oder alle Dateien mit dieser Endung zu ignorieren. Beide Untermenüs haben auch ein (rekursives) Äquivalent. Wenn Sie mehrere Elemente wählen, erscheint kein Untermenü und es werden genau diese Dateien / Ordner zur Ignorieren-Liste hinzugefügt.

Wenn Sie die (rekursive) Version des Ignorieren-Kontextmenüs gewählt haben, wird das Objekt nicht nur für den gewählten Ordner, sondern auch für alle seine Unterordner ignoriert. Dies erfordert jedoch SVN-Clients von Version 1.8 an aufwärts.

Wenn Sie einen oder mehrere Einträge aus der Ignorierliste entfernen wollen, machen Sie einen Rechtsklick und wählen Sie TortoiseSVNAus Ignorierliste entfernen. Sie können auch die svn:ignore-Eigenschaft des Ordners direkt bearbeiten. Dies ermöglicht Ihnen, wie im folgenden Abschnitt beschrieben, mittels Platzhalterzeichen allgemeinere Definitionen vorzunehmen. Lesen Sie „Projekt-Einstellungen“ für weitere Information darüber, wie man Eigenschaften direkt setzt. Bitte beachten Sie, dass jeder Eintrag auf einer eigenen Zeile stehen muss. Es genügt nicht, die Einträge durch Leerzeichen zu trennen.

Die globale Ignorierliste

Eine weitere Möglichkeit, Dateien zu ignorieren, ist, diese in die globale Ignorierliste einzutragen. Der große Unterschied besteht darin, dass die globale Liste eine Client-Eigenschaft ist. Sie gilt für alle Subversion-Projekte, aber nur auf dem jeweiligen Anwender-PC. Im allgemeinen ist es besser, die svn:ignore-Eigenschaft zu verwenden, weil diese für einzelne Projektbereiche gesetzt werden kann und weil sie für jeden gültig ist, der das Projekt auscheckt. Lesen Sie „Allgemeine Einstellungen“ für weitere Information.

Versionierte Objekte ignorieren

Versionierte Dateien und Ordner können niemals ignoriert werden - das ist eine Eigenschaft von Subversion. Wenn Sie versehentlich eine Datei zur Versionskontrolle hinzugefügt haben, lesen Sie „Dateien ignorieren, die bereits unter Versionskontrolle sind“, um zu erfahren, wie Sie das rückgängig machen können.

Platzhalter in der Ignorierliste

Die Ausschluss-Muster von Subversion verwenden Platzhalter, eine ursprünglich aus der Unix-Welt stammende Technik, um Dateien oder Ordner zu spezifizieren. Folgende Zeichen haben eine besondere Bedeutung:

*

Steht für eine beliebige (auch leere) Zeichenfolge.

?

Steht für ein beliebiges einzelnes Zeichen.

[...]

Steht für eines der Zeichen innerhalb der eckigen Klammern. Zwei durch - getrennte Zeichen innerhalb der Klammern stehen für alle Zeichen innerhalb dieses Bereichs. Zum Beispiel steht [AGm-p] für A, G, m, n, o oder p.

Die Platzhaltersuche beachtet Groß-/Kleinschreibung, was unter Windows zu Problemen führen kann. Sie können auf die harte Tour erzwingen, dass Groß-/Kleinschreibung ignoriert wird, indem Sie Buchstabenpaare angeben, um z. B. *.tmp auszuschließen *.[Tt][Mm][Pp].

Eine offizielle Definition für Platzhalterzeichen findet sich in der IEEE für die Shell Command Language im Abschnitt Pattern Matching Notation.

Keine Pfade in der globalen Ignorierliste

Sie sollten keine Pfadinformationen in die Muster einschließen. Der Algorithmus vergleicht mit reinen Datei- oder Ordnernamen. Wenn Sie alle CVS-Ordner ignorieren wollen, fügen Sie einfach CVS zur Ignorierliste hinzu. Es ist nicht nötig, wie in älteren Versionen CVS */CVS anzugeben. Wenn Sie alle tmp-Ordner in einem prog-Ordner, aber nicht in einem doc-Ordner ignorieren wollen, sollten Sie die svn:ignore-Eigenschaft des Ordners verwenden. Es gibt keinen zuverlässigen Weg, dies durch globale Ignoriermuster zu erreichen.

Löschen, Verschieben und Umbenennen

Subversion erlaubt es, Dateien und Ordner umzubenennen oder zu verschieben. Deshalb gibt es im Kontextmenü Befehle für diese Operationen.

Abbildung 4.34. Explorer-Kontextmenü für Dateien unter Versionskontrolle

Explorer-Kontextmenü für Dateien unter Versionskontrolle


Löschen von Dateien und Ordnern

Verwenden Sie TortoiseSVNLöschen, um Dateien oder Ordner aus der Versionskontrolle zu entfernen.

Wenn Sie mittels TortoiseSVNLöschen eine Datei oder einen Ordner löschen, wird das Objekt sofort aus Ihrer Arbeitskopie entfernt und markiert, damit es beim nächsten Übertragen aus dem Projektarchiv gelöscht wird. Das überlagerte Symbol des Elternordners zeigt den Status Verändert an. Solange Sie das Löschen noch nicht übertragen haben, können Sie das Objekt mittels TortoiseSVNRückgängig auf dem Elternordner wiederherstellen.

Wenn Sie eine Datei oder einen Ordner aus dem Projektarchiv löschen, aber lokal noch als unversioniertes Objekt beibehalten wollen, wählen Sie Erweitertes KontextmenüLöschen (lokal erhalten). Sie müssen die Umschalt-Taste gedrückt halten, während Sie einen Rechtsklick auf ein Objekt im rechten Fenster des Explorers machen, um das erweiterte Kontextmenü zu sehen.

Wenn ein Objekt über den Explorer anstelle des TortoiseSVN-Menüs gelöscht wird, zeigt Ihnen der Übertragen-Dialog die fehlenden Objekte an und erlaubt Ihnen, diese aus der Versionskontrolle zu entfernen. Wenn Sie allerdings vorher Ihre Arbeitskopie aktualisieren, wird Subversion die fehlenden Objekte erkennen und durch die aktuelle Version aus dem Projektarchiv ersetzen. Falls Sie ein Objekt löschen wollen, das sich in der Versionskontrolle befindet, müssen Sie dazu TortoiseSVNLöschen verwenden, damit Subversion nicht raten muss, was Sie wirklich tun wollen.

Eine gelöschte Datei/Ordner zurückholen

Wenn Sie eine Datei oder einen Ordner gelöscht und die Löschung bereits ins Projektarchiv übertragen haben, wird ein normaler TortoiseSVNRückgängig-Befehl diese nicht wieder zurückbringen können. Aber die Datei oder der Ordner ist nicht verloren. Wenn Sie die Revisionsnummer kennen, in der sie gelöscht wurde (Benutzen Sie den Log-Dialog, um das herauszufinden.), öffnen Sie den Projektarchivbetrachter. Wechseln Sie dann zu der Revisionsnummer, selektieren Sie die Datei oder den gelöschten Ordner, Rechtsklick und wählen Sie den Befehl KontextmenüKopieren zu.... Als Ziel für diesen Kopierbefehl geben Sie den Pfad zu Ihrer Arbeitskopie an.

Dateien und Ordner verschieben

Wenn Sie eine Datei oder einen Ordner an Ort und Stelle umbenennen wollen, wählen Sie KontextmenüUmbenennen.... Sie müssen nur noch den neuen Namen angeben.

Wenn Sie Dateien innerhalb Ihrer Arbeitskopie, zum Beispiel in einen anderen Ordner, verschieben möchten, können Sie ebenfalls die Ziehen und Ablegen-Funktion mit der rechten Maustaste verwenden:

  1. Wählen Sie die Dateien aus, die Sie verschieben möchten.

  2. Ziehen Sie die Dateien mit gedrückter rechter Maustaste an den neuen Ort.

  3. Lassen Sie die rechte Maustaste los.

  4. Wählen Sie den Befehl KontextmenüSVN-Dateien hierher verschieben

Den übergeordneten Ordner übertragen

Da Umbenennen beziehungsweise Verschieben intern in zwei Schritten als Löschen und Hinzufügen implementiert sind, müssen Sie den übergeordneten Ordner des verschobenen/umbenannten Objektes übertragen, damit die Löschung zum Projektarchiv übertragen wird. Wenn Sie das nicht tun, bleiben die lokal gelöschten Objekte im Projektarchiv erhalten und die Arbeitskopien Ihrer Kollegen werden beim Aktualisieren von der Löschung nichts mitbekommen. Das führt dazu, dass sie dann beide, die alte und die neue, Kopie des Objektes enthalten.

Sie müssen einen umbenannten Ordner übertragen, bevor Sie Dateien innerhalb des Ordners bearbeiten. Andernfalls kann Ihre Arbeitskopie sehr durcheinander kommen.

Eine weitere Möglichkeit, Dateien zu kopieren oder zu verschieben, besteht darin, die Kopieren/Ausschneiden-Befehle von Windows zu verwenden. Markieren Sie die gewünschte(n) Datei(en) und rufen Sie per Rechtsklick entweder KontextmenüKopieren oder KontextmenüAusschneiden aus, je nachdem, ob Sie die Objekte kopieren oder verschieben wollen. Dann navigieren Sie zum Zielordner und fügen die Datei(en) per Rechtsklick TortoiseSVNEinfügen an der gewünschten Stelle ein.

Sie können auch mit Hilfe des Projektarchiv-Betrachters Objekte verschieben. Lesen Sie in „Projektarchivbetrachter“ nach, wie man mit dem Betrachter arbeitet.

SVN-Externals nicht verschieben

Sie sollten niemals Ordner, die auf svn:externals zeigen, mittels TortoiseSVN Verschieben oder Umbenennen. Dies würde dazu führen, dass das Objekt aus dem externen Projektarchiv gelöscht wird, was voraussichtlich eine Menge Leute verärgern würde. Wenn Sie einen externen Ordner verschieben wollen, sollten Sie dazu den normalen Windows Explorer verwenden und anschließend die svn:externals-Eigenschaften des Quell- und des Zielordners anpassen.

Behandeln von Konflikten in der Groß-/Kleinschreibung

Wenn das Projektarchiv bereits zwei Dateien mit gleichem Namen, aber unterschiedlicher Groß-/Kleinschreibung (z. B. TEST.TXT und test.txt) enthält, können Sie diesen Ordner unter Windows nicht mehr aktualisieren oder auschecken. Während Subversion bei Dateinamen Groß-/Kleinschreibung beachtet, wird sie von Windows ignoriert.

Dies passiert manchmal, wenn aus verschiedenen Arbeitskopien Dateien mit dem gleichen Namen, aber unterschiedlicher Groß-/Kleinschreibung, übertragen werden. Eine weitere Möglichkeit sind Übertragungen aus einem Betriebssystem wie Linux, das Groß-/Kleinschreibung berücksichtigt.

In diesem Falle müssen Sie entscheiden, welche der beiden Dateien Sie behalten möchten und die andere Datei aus dem Projektarchiv löschen oder umbenennen.

Zwei Dateien mit dem gleichen Namen verhindern

Es gibt hier: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ ein serverseitiges Aktionsskript, das verhindert, dass zwei Dateien mit demselben Namen, aber unterschiedlicher Schreibweise, in das Projektarchiv gelangen.

Externes Umbenennen reparieren

Manchmal wird Ihre freundliche Entwicklungsumgebung beim Umarbeiten von Projekten Dateien für Sie umbenennen und Subversion nicht davon in Kenntnis setzen. Wenn Sie dann Ihre Änderungen übertragen wollen, zeigt Ihnen Subversion die alte Datei als fehlend und die neue als nicht versioniert an. Sie könnten jetzt einfach die neue Datei übertragen, aber Sie würden dadurch die Historie der Datei verlieren, da Subversion nicht weiß, dass die beiden Dateien zusammenhängen.

Besser ist es, wenn Sie Subversion mitteilen, dass diese Änderung eigentlich eine Umbenennung war. Sie können das in den Übertragen- und Auf Änderung prüfen-Dialogen tun. Markieren Sie einfach beide, die alte (fehlende) und die neue (unversionierte) Datei und wählen Sie KontextmenüUmbenennen reparieren, um die beiden Dateien zu einer Umbenennung zusammenzufassen.

Nicht versionierte Dateien löschen

Meistens tragen Sie in Ihre Ignorierliste sämtliche generierten Dateien ein, da diese normalerweise von der Versionierung ausgeschlossen werden sollen. Aber was ist, wenn Sie all diese ignorierten Dateien löschen wollen, um Ihr Projekt sauber generieren zu können? Meistens gibt es eine entsprechende Funktion im Makefile, aber falls es noch kein Makefile gibt oder dieses gerade überarbeitet wird, wäre es nützlich, eine Funktion zum Bereinigen der Arbeitskopie zu haben.

TortoiseSVN stellt eine solche Funktion unter Erweitertes KontextmenüUnversionierte Objekte löschen... zur Verfügung. Sie müssen die Umschalt-Taste drücken, während Sie einen Rechtsklick auf einen Ordner im rechten Fenster des Explorers machen, um das erweiterte Kontextmenü zu sehen. Daraufhin wird ein Dialog mit sämtlichen nicht versionierten Dateien in Ihrer Arbeitskopie angezeigt, in dem Sie die zu löschenden Objekte auswählen können.

Wenn solche Objekte gelöscht werden, werden sie in den Papierkorb verschoben, sodass Sie eine versehentlich gelöschte Datei, die eigentlich versioniert werden sollte, wiederherstellen können.

Änderungen rückgängig machen

Wenn Sie Änderungen, die Sie an Dateien vorgenommen haben, wieder rückgängig machen wollen, wählen Sie diese Datei aus und wählen dann den Befehl TortoiseSVNRückgängig... aus dem Kontextmenü aus. Es erscheint ein Dialog, indem alle Dateien aufgelistet sind, die geändert wurden. Wählen Sie die Dateien, die Sie in den Ursprungszustand zurückversetzen wollen und drücken Sie OK.

Abbildung 4.35. Rückgängig-Dialog

Rückgängig-Dialog


Wenn Sie außerdem alle definierten Änderungslisten löschen möchten, markieren Sie die Option am Ende des Dialogs.

Wenn Sie ein umbenanntes oder gelöschtes Objekt wiederherstellen möchten, müssen Sie Rückgängig auf dem Elternordner aufrufen, da das gelöschte Objekt für einen Rechtsklick nicht zur Verfügung steht.

Wenn Sie das Hinzufügen eines Objekts zur Versionskontrolle zurücknehmen wollen, steht dazu der Befehl TortoiseSVNHinzufügen zurücknehmen... zur Verfügung. Dahinter steckt in Wirklichkeit der Befehl Rückgängig..., aber der Name wurde einfachheitshalber geändert.

Die Spalten in diesem Dialog können, genau wie im Auf Änderungen prüfen-Dialog, angepasst werden. Lesen Sie in „Prüfe auf Änderungen“ nach, wie das geht.

Da Rückgängig manchmal dazu verwendet wird, um Arbeitskopien bereinigen, gibt es eine Extra-Schaltfläche, die Ihnen erlaubt, nicht versionierte Objekte zu entfernen. Wenn Sie diese Schaltfläche betätigen, erscheint ein zusätzlicher Dialog, der die nicht versionierten Objekte auflistet, die Sie dann zum Löschen auswählen können.

Änderungen rückgängig machen, die bereits übertragen wurden

Der Befehl Rückgängig kann nur lokale Änderungen rückgängig machen. Er kann keine Änderungen, die bereits übertragen wurden, rückgängig machen. Wenn Sie solche Änderungen rückgängig machen wollen, schlagen Sie dazu „Log-Dialog“ für weitere Informationen nach.

Rückgängig ist langsam

Wenn Sie Änderungen zurücknehmen, kommt Ihnen diese Aktion unter Umständen länger als erwartet vor. Das liegt daran, dass die geänderte Version Ihrer Datei in den Papierkorb verschoben wird, sodass Sie Ihre Änderungen wiederherstellen können, falls Sie sie versehentlich zurückgesetzt haben. Wenn allerdings der Papierkorb voll ist, benötigt Windows lange, um einen Ort für die Datei zu finden. Die Lösung ist einfach: Leeren Sie entweder den Papierkorb oder deaktivieren Sie die Option Verwende Papierkorb bei Rückgängig in den TortoiseSVN- Einstellungen.

Bereinigen

Wenn ein Subversion-Befehl, vielleicht durch ein Serverproblem, nicht erfolgreich abgeschlossen werden konnte, kann die Arbeitskopie in einem inkonsistenten Zustand zurückgelassen werden. In diesem Fall müssen Sie TortoiseSVNArbeitskopie bereinigen auf dem Ordner ausführen. Am besten tun Sie das auf dem obersten Ordner Ihrer Arbeitskopie.

Abbildung 4.36. Der Aufräumen-Dialog

Der Aufräumen-Dialog


Im Bereinigen-Dialog gibt es mehrere nützliche Optionen, die Arbeitskopie in einen sauberen Zustand zu versetzen.

Status der Arbeitskopie bereinigen

Wie oben erwähnt, versucht diese Option, eine inkonsistente Arbeitskopie in einen nutzbaren Zustand zu versetzen. Dies hat keine Auswirkungen auf Ihre Daten, sondern auf den internen Zustand der Datenbank innerhalb der Arbeitskopie. Es handelt sich um den Bereinigen-Befehl, den Sie von älteren SVN-Clients kennen.

Schreibsperren aufbrechen

Entfernt sämtliche Schreibsperren aus der Datenbank der Arbeitskopie. In den meisten Fällen ist diese Option beim Bereinigen der Arbeitskopie erforderlich.

Deaktivieren Sie diese Option nur, falls die Arbeitskopie momentan durch andere Anwender/Clients verwendet wird. Wenn das Bereinigen dann fehlschlägt, müssen Sie die Option wieder aktivieren.

Zeitstempel reparieren

Passt die aufgezeichneten Zeitstempel aller Dateien an, um zukünftige Statusprüfungen zu beschleunigen. Dies kann alle Dialoge beschleunigen, die Listen von Arbeitskopie-Dateien anzeigen, z. B. den Übertragen-Dialog.

Unberührte Kopien entrümpeln

Entfernt ungenutzte, unberührte Kopien und komprimiert alle verbleibenden unberührten Kopien von Arbeitsdateien.

Aktualisiert die überlagerten Symbole

Manchmal zeigen die überlagerten Symbole, besonders in der Strukturansicht der linken Seite des Explorers, nicht den korrekten Status an oder der Statuscache hat die Änderungen noch nicht erkannt. Dann können Sie mit diesem Befehl eine Aktualisierung erzwingen.

Externals einschließen

Wenn diese Option aktiv ist, werden alle Aktionen auch für die mittels svn:externals eingeschlossenen Dateien und Ordner durchgeführt.

Lösche unversionierte Dateien und Ordner, lösche ignorierte Dateien und Ordner

Dies ist eine schnelle und einfache Möglichkeit, alle generierten Dateien in Ihrer Arbeitskopie zu entfernen. Alle Dateien und Ordner, die nicht versioniert sind, werden in den Papierkorb verschoben.

Hinweis: Sie können das gleiche auch über den TortoiseSVNRückgängig-Dialog erreichen. Dort erhalten Sie eine Liste aller nicht versionierten Dateien und Ordner, die Sie entfernen können.

Alle Änderungen rekursiv zurücknehmen

Dieser Befehl wird alle Ihre lokalen Änderungen zurücknehmen, die noch nicht übertragen wurden.

Hinweis: Es ist besser, stattdessen den Befehl TortoiseSVNRückgängig zu verwenden, da Sie hier zuerst die Dateien, die Sie wiederherstellen möchten, auswählen können.

Projekt-Einstellungen

Subversion-Eigenschaften

Abbildung 4.37. Subversion-Eigenschaftsseite

Subversion-Eigenschaftsseite


Sie können die Subversion-Eigenschaften sowohl im Windows-Eigenschaftendialog als auch im Kontextmenü mit TortoiseSVNEigenschaften und in Statuslisten mit KontextmenüEigenschaften anzeigen und verändern.

Sie können Ihre eigenen Eigenschaften oder Subversion-Eigenschaften hinzufügen. Diese beginnen alle mit svn:. svn:externals ist solch eine Eigenschaft. Sehen Sie sich „Externe Objekte“ an, um mehr über das Thema zu erfahren.

svn:keywords

Subversion unterstützt eine CVS-ähnliche Expansion von Schlüsselwörtern, die dazu genutzt werden kann, Dateinamen und Revisionsinformationen in der Datei selbst einzubetten. Die derzeit unterstützten Schlüsselwörter sind:

$Date$

Datum der letzten bekannten Übertragung. Dieses Datum hängt von der Information ab, die bei der letzten Aktualisierung der Arbeitskopie erhalten wurde. Es überprüft nicht das Projektarchiv auf neuere Änderungen.

$Revision$

Revision der letzten bekannten Übertragung.

$Author$

Autor der letzten bekannten Übertragung.

$HeadURL$

Die vollständige URL der Datei im Projektarchiv.

$Id$

Eine komprimierte Kombination der vorherigen vier Schlüsselwörter.

Um mehr über diese Schlüsselwörter herauszufinden, lesen Sie den Abschnitt Ersetzung von Schlüsselworten im Subversion-Buch, in dem die Schlüsselwörter und ihre Anwendung im Detail beschrieben werden.

Um mehr Informationen über Eigenschaften in Subversion zu erhalten, schauen Sie sich das entsprechende Kapitel Eigenschaften im Subversion-Buch an.

Eigenschaften hinzufügen und bearbeiten

Abbildung 4.38. Eigenschaften hinzufügen

Eigenschaften hinzufügen


Um eine Eigenschaft hinzuzufügen, klicken Sie zunächst auf Neu.... Wählen Sie die gewünschte Eigenschaft aus dem Menü und tragen Sie die benötigten Informationen im entsprechenden Dialog ein. Diese eigenschaftsspezifischen Dialoge sind in „Eigenschaftseditoren“ detailliert beschrieben.

Um eine Eigenschaft hinzuzufügen, die nicht über einen eigenen Dialog verfügt, wählen Sie Erweitert im Menü Neu.... Dann wählen Sie entweder eine existierende Eigenschaft aus dem Kombinationsfeld oder tragen eine eigene Eigenschaft ein.

Wenn Sie eine Eigenschaft für mehrere Objekte gleichzeitig setzen wollen, markieren Sie die Dateien / Ordner im Explorer und wählen Sie KontextmenüEigenschaften.

Wenn Sie die Eigenschaft rekursiv für alle Dateien und Ordner unterhalb des aktuellen Ordners setzen wollen, wählen Sie die Rekursiv-Option.

Um eine Eigenschaft zu verändern, wählen Sie die Eigenschaft in der Liste der existierenden Eigenschaften aus und klicken dann auf Bearbeiten....

Um eine Eigenschaft zu löschen, wählen Sie die Eigenschaft zunächst aus der Liste aus. Klicken Sie anschließend auf Entfernen.

Die svn:externals Eigenschaft kann genutzt werden, um andere Projekte aus dem gleichen oder einem anderen Projektarchiv in die Arbeitskopie einzubinden. Weitere Informationen finden sich in „Externe Objekte“.

Eigenschaften der HEAD-Revision bearbeiten

Da Eigenschaften versioniert sind, können Sie die Eigenschaften der vorherigen Revisionen nicht bearbeiten. Wenn Sie Eigenschaften im Log-Dialog oder aus einer Nicht-HEAD-Revision im Repository-Browser betrachten, sehen Sie eine Liste der Eigenschaften und Werte, aber keine Steuerelemente zum Bearbeiten.

Eigenschaften exportieren und importieren

Häufig werden Sie wieder und wieder die gleichen Eigenschaften setzen, z. B. bugtraq:logregex. Um diesen Prozess zu vereinfachen und Eigenschaften von einem Projekt in ein anderes kopieren zu können, steht Ihnen die Export/Import-Funktion zur Verfügung.

Ausgehend von der Datei bzw. dem Ordner, für die die Eigenschaften bereits gesetzt sind, wählen Sie TortoiseSVNEigenschaften, markieren die Eigenschaften, die Sie exportieren möchten, und klicken auf Export.... Sie können anschließend eine Datei angeben, in der die Eigenschaften gespeichert werden.

Ausgehend von den Ordnern, die die Eigenschaften erhalten sollen, wählen Sie TortoiseSVNEigenschaften und klicken auf Import.... Über einen Dateiauswahldialog können Sie die gewünschte Datei angeben. Die importierten Eigenschaften werden nicht-rekursiv zu den Ordnern hinzugefügt.

Wenn sie Eigenschaften rekursiv hinzufügen möchten, folgen Sie den oben stehenden Schritten. Markieren Sie nacheinander die Eigenschaften im Dialog, klicken Sie auf Bearbeiten..., aktivieren Sie die Option Eigenschaften rekursiv anwenden und bestätigen mit OK.

Das Importformat ist binär und spezifisch für TortoiseSVN. Sein einziger Zweck besteht darin, Eigenschaften per Import/Export zu übertragen. Deshalb besteht kein Grund, die Dateien zu bearbeiten.

Binäreigenschaften

TortoiseSVN kann binäre Eigenschaften mittels Dateien handhaben. Um einen binären Eigenschaftswert zu lesen, müssen sie diesen in eine Datei Speichern.... Um eine binäre Eigenschaft zu setzen, benutzen Sie einen Hex-Editor oder ein anderes Programm, um eine Datei mit dem binären Inhalt zu erstellen, dann Laden... Sie diese aus der Datei.

Obwohl binäre Eigenschaften nicht häufig verwendet werden, sind sie doch in manchen Fällen nützlich. Sie können zum Beispiel die Vorschau einer großen Grafikdatei als binäre Eigenschaft in Subversion speichern, um sich schnell einen Eindruck des Bildes verschaffen zu können.

Eigenschaften automatisch setzen

Sie können Subversion und TortoiseSVN so einrichten, dass Eigenschaften für Dateien und Ordner automatisch gesetzt werden, wenn Sie zum Projektarchiv hinzugefügt werden. Es gibt zwei Möglichkeiten, dies zu tun.

Sie können die Subversion-Konfigurationsdatei bearbeiten, um diese Funktion auf dem Client zu aktivieren. Auf der Seite Allgemein der TortoiseSVN-Einstellungen findet sich die Schaltfläche Bearbeiten, die Sie direkt dort hinbringt. Die Konfigurationsdatei, mit der einige Subversion-Verhaltensweisen festgelegt werden, ist eine einfache Textdatei. Sie müssen darin zwei Dinge ändern. Erstens müssen Sie im Abschnitt miscellany die Zeile enable-auto-props = yes auskommentieren. Zweitens müssen Sie in dem darunterstehenden Bereich festlegen, welche Eigenschaften zu welchen Dateitypen hinzugefügt werden sollen. Dabei handelt es sich um eine Subversion-Standardfunktion, die in jedem Subversion-Client funktioniert. Allerdings müssen die Einstellungen auf jedem Computer vorgenommen werden. Es gibt keine Möglichkeit, die Einstellungen über das Projektarchiv zu verbreiten.

Eine alternative Methode besteht darin, die tsvn:autoprops-Eigenschaft auf Ordner zu setzen, wie im nächsten Abschnitt beschrieben. Diese Methode funktioniert nur mit TortoiseSVN-Clients, wird jedoch bei der Aktualisierung auf alle Arbeitskopien übertragen.

Ab Subversion 1.8 können Sie die Eigenschaft svn:auto-props auf den Wurzelordner setzen. Die Eigenschaft wird automatisch von allen Unterordnern geerbt.

Egal, welche Methode Sie wählen, Sie sollten wissen, dass auto-props nur beim Hinzufügen von Dateien zum Projektarchiv gesetzt werden. Es werden niemals die Eigenschaften von Dateien gesetzt oder geändert, die bereits versioniert sind.

Wenn Sie ganz sicher sein wollen, dass neue Dateien die korrekten Eigenschaften erhalten, sollten Sie eine pre-commit-Aktion im Projektarchiv einrichten, die Übertragungen verwirft, wenn die erforderlichen Eigenschaften nicht gesetzt sind.

Übertrage Eigenschaften

Subversion-Eigenschaften sind auch unter Versionskontrolle. Nachdem Sie eine Eigenschaft geändert haben, müssen Sie die Änderungen zum Projektarchiv übertragen.

Konflikte in Eigenschaften

Sollte es beim Übertragen zum Server zu einem Konflikt kommen, weil ein anderer Benutzer die gleiche Eigenschaft geändert hat, generiert Subversion eine .prej-Datei. Löschen Sie diese Datei, nachdem Sie den Konflikt aufgelöst haben.

TortoiseSVN-Projekteigenschaften

TortoiseSVN besitzt ein paar eigene spezielle Eigenschaften, die mit tsvn: beginnen.

  • tsvn:logminsize setzt die minimale Länge einer Logmeldung für eine Übertragung. Wenn Sie eine Logmeldung eingeben, die kürzer ist als mit dieser Eigenschaft festgelegt, dann bleibt die Übertragung deaktiviert. Dies ist nützlich, wenn Sie die Benutzer dazu anhalten möchten, für jede Übertragung eine gute Logmeldung zu schreiben. Wenn diese Eigenschaft nicht gesetzt ist, sind leere Logmeldungen erlaubt.

    tsvn:lockminsize setzt die minimale Länge einer Sperrmeldung. Wenn Sie eine Meldung eingeben, die kürzer ist als mit dieser Eigenschaft festgelegt, dann bleibt die Sperrung deaktiviert. Dies ist nützlich, wenn Sie die Benutzer dazu anhalten möchten, für jede Sperrung eine Beschreibung anzugeben. Wenn diese Eigenschaft nicht gesetzt ist, sind leere Sperrmeldungen erlaubt.

  • tsvn:logwidthmarker kann für Projekte benutzt werden, die Logmeldungen mit einer maximalen Zeilenlänge (typischerweise 80 Zeichen) haben sollen. Wenn diese Eigenschaft auf einen Wert ungleich 0 gesetzt wird, wird einerseits der Wortumbruch für die Logmeldung abgeschaltet und andererseits eine vertikale Linie gezeichnet, um die maximale Zeilenlänge anzuzeigen. Auf diese Weise können Sie jederzeit sehen, ob Ihre Logmeldung die maximale Zeilenlänge schon überschreitet oder nicht. Beachten Sie, dass dies nur korrekt funktioniert, wenn Sie eine Schrift mit fester Breite für das Eingabefeld ausgewählt haben.

  • tsvn:logtemplate wird für Projekte benutzt, die Regeln für die Formatierung der Logmeldungen haben. Diese Eigenschaft enthält einen mehrzeiligen Text, der automatisch im Übertragen-Dialog in die Textbox eingefügt wird. Sie können dann diesen Text bei der Übertragung bearbeiten. Wenn Sie gleichzeitig tsvn:logminsize verwenden, stellen Sie sicher, dass dieser Wert größer als die Länge der Schablone ist, da sonst dieser Schutz wegfällt.

    Es gibt auch aktionsspezifische Schablonen, die Sie anstelle von tsvn:logtemplate verwenden können. Wenn eine aktionsspezifische Schablone definiert ist, wird diese verwendet, ansonsten wird auf tsvn:logtemplate zurückgegriffen.

    Die aktionsspezifischen Schablonen sind:

    • tsvn:logtemplatecommit wird für alle Übertragungen aus einer Arbeitskopie verwendet.

    • tsvn:logtemplatebranch wird verwendet, wenn Sie eine Verzweigung/Marke anlegen oder wenn Sie Dateien/Ordner direkt im Projektarchivbetrachter kopieren.

    • tsvn:logtemplateimport wird für Importe verwendet.

    • tsvn:logtemplatedelete wird verwendet, wenn Objekte im Projektarchivbetrachter gelöscht werden.

    • tsvn:logtemplatemove wird verwendet, wenn Objekte im Projektarchivbetrachter verschoben werden.

    • tsvn:logtemplatemkdir wird verwendet, wenn Verzeichnisse im Projektarchivbetrachter angelegt werden.

    • tsvn:logtemplatepropset wird verwendet, wenn Eigenschaften im Projektarchivbetrachter verändert werden.

    • tsvn:logtemplatelock wird beim Holen einer Sperre verwendet.

  • Subversion erlaubt Ihnen, autoprops anzugeben, die für jede neu hinzugefügte oder importierte Datei, abhängig von der Dateiendung, gesetzt werden. Das erfordert, dass jeder Client die gleichen autoprops in seiner Subversion-Konfigurationsdatei stehen hat. tsvn:autoprops können auch auf Ordner gesetzt werden und werden mit den lokalen autoprops des Anwenders zusammengeführt, wenn Dateien zu einem Projektarchiv hinzugefügt oder importiert werden. Das Format ist dasselbe wie bei den Subversion autoprops, z. B. setzt *.sh = svn:eol-style=native;svn:executable zwei Eigenschaften auf Dateien mit der .sh-Endung.

    Wenn es einen Konflikt zwischen den lokalen autoprops und tsvn:autoprops gibt, haben die Projekteinstellungen Vorrang vor den allgemeinen Einstellungen.

    Ab Subversion 1.8 sollten Sie die Eigenschaft svn:auto-props anstelle von tsvn:autoprops verwenden, da diese die gleiche Funktionalität hat, aber mit allen Subversion-Clients funktioniert und nicht TortoiseSVN-spezifisch ist.

  • Im Übertragen-Dialog haben Sie die Möglichkeit, die Liste der geänderten Dateien inklusive des Status (hinzugefügt, geändert usw.) einzufügen. tsvn:logfilelistenglish legt fest, ob die vordefinierten Logmeldungen in englisch oder in einer anderen Sprache eingefügt werden sollen. Der Standardwert ist true.

  • TortoiseSVN kann eine Rechtschreibprüfung verwenden. Unter Windows 10 wird die Rechtschreibprüfung des Betriebssystems verwendet. In früheren Windows-Versionen kann es Rechtschreibprüfungsmodule verwenden, die auch von OpenOffice und Mozilla verwendet werden. Wenn Sie diese installiert haben, bestimmt diese Eigenschaft, welche Rechtschreibprüfung verwendet werden soll, d. h., in welcher Sprache die Logmeldungen für Ihr Projekt geschrieben werden sollen. tsvn:projectlanguage setzt das Sprachmodul, das die Rechtschreibprüfung verwenden soll, wenn Sie eine Logmeldung eingeben. Sie finden die Werte für Ihre Sprache auf dieser Seite MSDN: Sprachkennzeichen.

    Sie können diesen Wert als Dezimalzahl oder, wenn Sie das bevorzugen, als Hexadezimalzahl mit dem Prefix 0x angeben. Zum Beispiel Englisch (US) kann als 0x0409 oder 1033 eingegeben werden.

  • Die Eigenschaft tsvn:logsummary wird verwendet, um einen Abschnitt aus der Logmeldung zu extrahieren, der dann als Zusammenfassung der Logmeldung im Log-Dialog angezeigt wird.

    Die Eigenschaft tsvn:logsummary muss einen einzeiligen regulären Ausdruck enthalten, der eine RegEx-Gruppe enthält. Der Inhalt dieser Gruppe wird als Zusammenfassung verwendet.

    Ein Beispiel: \[ZUSAMMENFASSUNG\]:\s+(.*) Dieser Ausdruck wird alles nach [ZUSAMMENFASSUNG] aus der Logmeldung ausschneiden und als Zusammenfassung verwenden.

  • Mit der Eigenschaft tsvn:logrevregex wird ein regulärer Ausdruck festgelegt, der Referenzen auf Revisionen in Logmeldungen sucht. Im Log-Dialog werden diese Referenzen als anklickbare Verweise angezeigt. Bei einem Mausklick auf einen solchen Verweis im Log-Dialog wird entweder im selben Fenster zu dieser Revision gesprungen, wenn die Revision bereits geladen oder im Log-Puffer vorhanden ist oder es wird ein neuer Log-Dialog mit dieser Revision geöffnet.

    Der reguläre Ausdruck muss mit der gesamten Referenz und nicht nur mit der Revisionsnummer übereinstimmen. Die Revisionsnummer wird automatisch aus dem gefundenen Verweistext extrahiert.

    Wenn diese Eigenschaft nicht gesetzt ist, wird ein Standardausdruck verwendet, um die Revisionsverweise anzuzeigen.

  • Es gibt mehrere Eigenschaften, um clientseitige Aktionsskripte zu konfigurieren. Jede Eigenschaft gilt für einen bestimmten Typ von Aktionsskripten.

    Die verfügbaren Eigenschaften/Aktionsskripte sind

    • tsvn:startcommithook
    • tsvn:precommithook
    • tsvn:postcommithook
    • tsvn:startupdatehook
    • tsvn:preupdatehook
    • tsvn:postupdatehook
    • tsvn:prelockhook
    • tsvn:postlockhook

    Die Parameter sind mit denen identisch, die Sie zur Konfiguration der Aktionsskripte in den Einstellungen verwenden. Siehe „Clientseitige Aktionsskripte“ für Details.

    Da nicht jeder Anwender seine Arbeitskopie unter demselben Namen am selben Ort ausgecheckt hat, können Sie ein in Ihrer Arbeitskopie auszuführendes Skript/Programm festlegen, indem Sie mittels %REPOROOT% dessen URL im Projektarchiv angeben. Wenn Ihr Aktionsskript zum Beispiel in contrib/hook-scripts/client-side/checkyear.js liegt, können Sie den Pfad zum Skript als %REPOROOT%/trunk/contrib/hook-scripts/client-side/checkyear.js angeben. Auf diese Weise müssen Sie die Eigenschaften des Aktionsskripts nicht anpassen, wenn sich die URL Ihres Projektarchivs ändert.

    Statt %REPOROOT% können Sie auch %REPOROOT+% festlegen. Das + wird benutzt, um eine beliebige Anzahl von Pfaden anzugeben, die notwendig sind, um das Skript zu finden. Das ist nützlich, wenn Sie Ihr Skript so angeben möchten, dass es auch gefunden wird, wenn sich die URL der Arbeitskopie geändert hat, weil Sie einen Zweig erzeugen haben. Bei Benutzung des obigen Beispiels würden Sie den Pfad zum Skript als %REPOROOT+%/contrib/hook-scripts/client-side/checkyear.js festlegen.

    Das folgende Bild zeigt, wie das Aktionsskript, das die Quellen von TortoiseSVN auf aktuelle Copyrighteinträge überprüft, eingerichtet wird.

    Abbildung 4.39. Eigenschaftsdialog für Aktionsskripte

    Eigenschaftsdialog für Aktionsskripte


  • Wenn Sie eine neue Eigenschaft hinzufügen wollen, können Sie entweder eine Standardeigenschaft aus der Kombinationsliste wählen oder einen beliebigen Eigenschaftsnamen eingeben. Wenn Ihr Projekt einige benutzerdefinierte Eigenschaften verwendet und Sie möchten, dass diese Eigenschaften in der Liste im Kombinationsfeld angezeigt werden (um Tippfehler bei der Eingabe eines Eigenschaftsnamens zu vermeiden), können Sie mit Hilfe von tsvn:userfileproperties und tsvn:userdirproperties eine Liste Ihrer benutzerdefinierten Eigenschaften erstellen. Wenden Sie diese Eigenschaften auf einen Ordner an. Wenn Sie die Eigenschaften eines untergeordneten Elements bearbeiten, werden Ihre benutzerdefinierten Eigenschaften in der Liste der vordefinierten Eigenschaftsnamen angezeigt.

    Sie können auch angeben, ob ein benutzerdefiniertes Dialogfeld zum Hinzufügen und Bearbeiten Ihrer Eigenschaft verwendet wird. TortoiseSVN bietet, je nach Art der Eigenschaft, vier verschiedene Dialoge.

    bool

    Wenn Ihre Eigenschaft nur zwei Zustände haben kann, z. B. true und false, legen Sie sie als bool-Typen fest.

    Abbildung 4.40. Boolesche Benutzerdaten im Eigenschaftsdialog

    Boolesche Benutzerdaten im Eigenschaftsdialog


    Geben Sie die Eigenschaft folgendermaßen an:

    Eigenschaftsname=bool;Beschreibung(JA-WERT;NEIN-WERT;Checkboxtext)

    Die Beschreibung wird im Dialog oberhalb der Checkbox angezeigt. Sie können damit den Zweck und die Verwendung der Eigenschaft erklären.

    state

    Wenn Ihre Eigenschaft einen von mehreren möglichen Zuständen annehmen kann, z. B. Ja, Nein, Vielleicht, dann können Sie diese als state<placeholder-1> folgendermaßen konfigurieren:Eigenschaftsname=state;Beschreibung (STANDARD;WERT1;TEXT1;WERT2;TEXT2;WERT3;TEXT3;...)Die Eigenschaften sind die gleichen wie bei der bool Eigenschaft, wobei STANDARD der Vorgabewert ist, der verwendet wird, wenn die Eigenschaft nicht definiert ist oder einen nicht konfigurierten Wert enthBei bis zu drei verschiedenen Werten zeigt der Dialog RadioknsinglelineFsingleline: Einzelne Zeile als Benutzerdatentyp im EigenschaftsdialogEigenschaftsname=singleline;Beschreibung(RegEx)Die RegEx definiert einen regulmultilineFmultiline: Mehrzeilige Benutzerdaten im EigenschaftsdialogEigenschaftsname=multiline;Beschreibung(RegEx)Die RegEx definiert einen regul Die Bilder oben wurden mit den folgenden tsvn:userdirproperties erstellt: my:boolprop=bool;Dies ist eine boolesche Eigenschaft. Entweder aktivieren Sie oder deaktivieren Sie sie.(True;False;meine boolesche Eigenschaft) my:stateprop1=state;Dies ist eine Status-Eigenschaft. W</placeholder-1>

TortoiseSVN kann einige Fehlerverfolgungssysteme in Subversion integrieren. Dies geschieht über Eigenschaften, die mit bugtraq: beginnen. Wie Sie mit diesen Eigenschaften umgehen, ist in „Integration mit einem System zur Fehlerverfolgung“ erklärt.

TortoiseSVN kann auch mit einigen webbasierten Projektarchivbetrachtern unter Verwendung von Eigenschaften, die mit webviewer: beginnen, zusammenarbeiten. Lesen Sie „Integration mit webbasierten Projektarchivbetrachtern“ für weitere Informationen.

Setzen Sie die Projekteigenschaften auf Ordner

Diese speziellen Eigenschaften müssen für Ordner und nicht für Dateien gesetzt werden. Wenn Sie einen TortoiseSVN-Befehl aufrufen, der diese Eigenschaften verwendet, werden Sie aus dem gewählten Ordner gelesen. Wenn die Eigenschaften dort nicht gefunden werden, sucht TortoiseSVN im Ordnerbaum aufwärts nach diesen Eigenschaften, bis entweder die Eigenschaften oder der oberste Ordner des Ordnerbaums (z. B. C:\) gefunden wurde. Wenn Sie also sicher sind, dass alle Benutzer ihre Arbeitskopie z. B. von /trunk ausgecheckt haben, reicht es aus, die Eigenschaften dort zu setzen. Wenn Sie hingegen nicht sicher sein können, dann müssen Sie die Eigenschaften rekursiv auf alle Unterordner Ihres Projektes setzen. Wenn sie dieselbe Eigenschaft mit unterschiedlichen Werten an verschiedenen Stellen der Projekthierarchie setzen, erhalten Sie unterschiedliche Ergebnisse, je nachdem, wohin Sie in der Ordnerstruktur klicken.

Ausschließlich für Projekteigenschaften, z. B. tsvn:, bugtraq: und webviewer:, können Sie die Rekursiv-Option wählen, um die Eigenschaft auf alle Unterordner zu übertragen, ohne sie gleichzeitig auch für alle Dateien zu setzen.

Wenn Sie mit TortoiseSVN neue Unterordner zu einer Arbeitskopie hinzufügen, werden sämtliche Projekteigenschaften des Elternordners auf den Unterordner übertragen.

Einschränkungen des Projektarchivbetrachters

Das Holen von Projekteigenschaften vom Server ist eine langsame Operation, sodass einige der oben beschriebenen Operationen im Projektarchivbetrachter nicht genauso wie in einer Arbeitskopie funktionieren.

  • Wenn Sie eine Eigenschaft im Projektarchivbetrachter hinzufügen, werden nur die Standardeigenschaften svn: zur Auswahl angeboten. Alle anderen Eigenschaftsnamen müssen manuell eingegeben werden.

  • Eigenschaften können über den Projektarchivbetrachter weder rekursiv gesetzt noch gelöscht werden.

  • Projekteigenschaften werden nicht automatisch weitergereicht, wenn ein Unterordner im Projektarchivbetrachter hinzugefügt wird.

  • tsvn:autoprops werden nicht auf Dateien angewendet, die im Projektarchivbetrachter hinzugefügt werden.

Achtung

Obwohl die TortoiseSVN-Projekteigenschaften sehr nützlich sind, gelten sie nur für TortoiseSVN. Einige von ihnen sogar nur für neuere Versionen von TortoiseSVN. Sobald Projektmitarbeiter verschiedene Subversion-Clients oder eventuell alte Versionen von TortoiseSVN einsetzen, sollten Sie besser mit Aktionsskripten im Projektarchiv Projektregeln durchsetzen. Projekteigenschaften können nur beim Einrichten von Regeln helfen, jedoch nicht dabei, diese durchzusetzen.

Eigenschaftseditoren

Einige Eigenschaften müssen bestimmte Werte verwenden, oder auf bestimmte Art formatiert sein, damit sie für die Automatisierung verwendet werden. Um Ihnen die Formatierung zu vereinfachen, stellt TortoiseSVN Dialoge für einige Eigenschaften zur Verfügung, die die Auswahlmöglichkeiten anzeigen oder die Eigenschaft in ihre individuellen Komponenten aufbrechen.

Externer Inhalt

Abbildung 4.41. Eigenschaftsseite svn:externals

Eigenschaftsseite svn:externals


Die Eigenschaft svn:externals kann genutzt werden, um andere Projekte aus dem gleichen oder einem anderen Projektarchiv in die Arbeitskopie einzubinden. Weitere Informationen finden sich in „Externe Objekte“.

Sie müssen die Subversion-URL des externen Ordners sowie den Namen des Unterordners angeben, als der der externe Ordner ausgecheckt wird. Sie können Externals in der HEAD-Revision auschecken, sodass bei Änderungen am externen Objekt Ihre Arbeitskopie die Änderungen erhält. Wenn Sie allerdings möchten, dass das External auf eine bestimmte Revision verweist, können Sie die zu verwendende Revisionsnummer als fixe Revision mit angeben. Wenn das externe Objekt in der Zukunft umbenannt wird, kann Subversion es in Ihrer Arbeitskopie nicht mehr aktualisieren. Indem Sie eine fixe Revision angeben, teilen Sie Subversion mit, in einer bestimmten Revision (anstelle HEAD) nach dem Objekt mit dem angegebenen Namen zu suchen.

Die Schaltfläche HEAD-Revision finden holt die HEAD-Revision jeder externen URL und zeigt sie in der rechten Spalte an. Nachdem diese Revision bekannt ist, genügt ein einfacher Rechtsklick, um den externen Verweis fest an diese HEAD-Revision zu binden. Wenn die HEAD-Revision noch nicht bekannt ist, wird sie bei einem Rechtsklick zunächst geholt.

SVN-Schlüsselwörter

Abbildung 4.42. Eigenschaftsseite svn:keywords

Eigenschaftsseite svn:keywords


Wählt die Schlüsselwörter aus, die in der Datei expandiert werden sollen.

Zeilenendestil

Abbildung 4.43. Eigenschaftsseite svn:eol-style

Eigenschaftsseite svn:eol-style


Stellen Sie den von Ihnen gewünschten Zeilenendestil ein und TortoiseSVN wird den korrekten Wert verwenden.

Integration mit Fehlerverfolgungssystemen

Abbildung 4.44. Eigenschaftsseite tsvn:bugtraq

Eigenschaftsseite tsvn:bugtraq


Größen der Logmeldungen

Abbildung 4.45. Eigenschaften der Logmeldungen

Eigenschaften der Logmeldungen


These 3 properties control the formatting of log messages. The first 2 disable the OK in the commit or lock dialogs until the message meets the minimum length. The border position shows a marker at the given column width as a guide for projects which have width limits on their log messages. Setting a value to zero will delete the property.

Projektsprache

Abbildung 4.46. Sprach-Eigenschaftsseite

Sprach-Eigenschaftsseite


Legt die Sprache für die Rechtschreibprüfung der Logmeldungen im Übertragen-Dialog fest. Die Option Dateilisten wird aktiviert, wenn sie einen Rechtsklick in die Logmeldung machen und Dateiliste einfügen wählen. Standardmäßig wird der Subversion-Status in Ihrer Sprache angezeigt. Wenn diese Option aktiv ist, wird der Status bei Projekten, die nur englische Logmeldungen erfordern, immer auf Englisch eingefügt.

MIME-Typ

Abbildung 4.47. Eigenschaftsseite svn:mime-type

Eigenschaftsseite svn:mime-type


svn:needs-lock

Abbildung 4.48. Eigenschaftsseite svn:needs-lock

Eigenschaftsseite svn:needs-lock


This property simply controls whether a file will be checked out as read-only if there is no lock held for it in the working copy.

svn:executable

Abbildung 4.49. Eigenschaftsseite svn:executable

Eigenschaftsseite svn:executable


This property controls whether a file will be given executable status when checked out on a Unix/Linux system. It has no effect on a Windows checkout.

Vorlage für Zusammenführen-Log

Jedes Mal, wenn Revisionen zu einer Arbeitskopie zusammengeführt werden, erzeugt TortoiseSVN von allen zusammengeführten Revisionen eine Logmeldung. Diese Meldungen können über die Schaltfläche Letzte Meldungen im Übertragen-Dialog abgerufen werden.

Sie können die generierte Nachricht mit den folgenden Eigenschaften anpassen:

Abbildung 4.50. Eigenschaftsdialog Vorlage für Zusammenführen-Log

Eigenschaftsdialog Vorlage für Zusammenführen-Log


tsvn:mergelogtemplatetitle, tsvn:mergelogtemplatereversetitle

Diese Eigenschaft definiert den ersten Teil der generierten Protokollmeldung. Die folgenden Schlüsselwörter können verwendet werden:

{revisions}

Eine kommaseparierte Liste der zusammengeführten Revisionen, z. B. 3, 5, 6, 7

{revisionsr}

Wie {revisions}, aber jeder Revision wird ein r vorangestellt, z. B. r3, r5, r6, r7

{revrange}

Eine kommaseparierte Liste der zusammengeführten Revisionen, wenn möglich in Bereiche gruppiert, z. B. 3, 5-7

{mergeurl}

Die Quell-URL des Zusammenführens, d. h., von wo die Revisionen zusammengeführt werden.

Der Standardwert für diese Zeichenfolge ist Revision(en) {Revrange} von {Mergeurl}: mit einem Zeilenumbruch am Ende.

tsvn:mergelogtemplatemsg

Diese Eigenschaft gibt an, wie der Text für jede zusammengeführte Revision aussehen soll. Die folgenden Schlüsselwörter können verwendet werden:

{msg}

Die Logmeldung der zusammengeführten Revision, wie sie eingegeben wurde.

{msgoneline}

Wie {msg}, aber alle Zeilenumbrüche werden durch ein Leerzeichen ersetzt, sodass die ganze Logmeldung auf einer einzigen Zeile angezeigt wird.

{author}

Der Autor der zusammengeführten Revision.

{rev}

Die zusammengeführte Version selbst.

{bugids}

Die Fehler-IDs der zusammengeführten Revision, wenn es welche gibt.

tsvn:mergelogtemplatemsgtitlebottom

Diese Eigenschaft gibt die Position des Titels an, der mittels tsvn:mergelogtemplatetitle oder tsvn:mergelogtemplatereversetitle festgelegt wurde. Wenn die Eigenschaft auf yes oder true gesetzt wird, wird der Titel ans Ende und nicht an den Anfang gesetzt.

Wichtig

Dies funktioniert nur, wenn die zusammengeführten Revisionen bereits im Log-Puffer sind. Wenn Sie den Log-Puffer deaktiviert oder das Log vor dem Zusammenführen nicht angezeigt haben, wird die generierte Meldung keine Informationen über die zusammengeführten Revisionen enthalten.

Externe Objekte

Manchmal ist es nützlich, eine Arbeitskopie zu haben, die aus mehreren Projekten besteht. Zum Beispiel kann es vorkommen, dass Sie Unterordner haben wollen, die von verschiedenen anderen Stellen des Projektarchivs kommen oder vielleicht sogar aus verschiedenen Projektarchiven. Wenn Sie wollen, dass jeder Benutzer die gleiche Struktur der Arbeitskopie hat, können Sie mit Hilfe der Eigenschaft svn:externals die gewünschten Ressourcen an den benötigten Stellen in der Arbeitskopie einbinden.

Externe Ordner

Nehmen wir an, Sie erstellen eine Arbeitskopie von /projekt1 in D:\dev\projekt1. Markieren Sie den Ordner D:\dev\projekt1, machen Sie einen Rechtsklick und wählen Sie Windows MenüEigenschaften aus dem Kontextmenü. Der Windows-Eigenschaftendialog erscheint, auf dessen Subversion-Tab können Sie Eigenschaften anschauen, verändern oder setzen. Klicken Sie auf Eigenschaften.... Im TortoiseSVN-Eigenschaftendialog machen Sie entweder einen Doppelklick auf svn:externals, wenn der Eintrag existiert oder klicken Sie auf Neu... und wählen Sie externals aus dem Menü. Dann füllen Sie den Dialog mit den benötigten Informationen aus.

Achtung

Sonderzeichen in URLs müssen korrekt ersetzt werden, damit sie funktionieren, Leerzeichen z. B. durch %20.

Wenn der lokale Pfad Leerzeichen oder andere Sonderzeichen enthalten soll, können Sie ihn in doppelte Anführungszeichen setzen oder im Unix-Stil jedem Sonderzeichen einen \ (umgekehrter Schrägstrich) voranstellen. Dies bedeutet auch, dass Sie den normalen Schrägstrich / als Pfadtrennzeichen verwenden müssen. Beachten Sie, dass dieses Verhalten mit Subversion 1.6 eingeführt wurde und mit älteren Clients nicht funktioniert.

Explizite Revisionsnummern nutzen

Sie sollten in Erwägung ziehen, in allen Externals-Definitionen explizite Revisionsnummern anzugeben. Dies bedeutet, dass Sie entscheiden können, wann welcher Stand der externen Informationen herangezogen wird. Neben dem sofort zu erkennenden Aspekt, dass Sie nicht mehr von Änderungen in externen Bibliotheken überrascht werden können, über die Sie keine Kontrolle haben, bietet die Verwendung expliziter Revisionsnummern den Vorteil, dass auch die externen Verweise entsprechend zurückdatiert werden, wenn Sie Ihre Arbeitskopie zurückdatieren. Andernfalls enthalten die externen Verweise die HEAD-Revision. Für ein Softwareprojekt kann das den Unterschied zwischen einem erfolgreichen und einem fehlgeschlagenen Erzeugen eines älteren Projektstandes ausmachen.

Der Bearbeiten-Dialog für svn:externals-Eigenschaften erlaubt Ihnen, die externen Verweise zu definieren und sie automatisch an die HEAD-Revision zu binden.

Wenn das externe Projekt im selben Projektarchiv befindet, werden alle Änderungen in diesem externen Projekt im Übertragen-Dialog aufgelistet und gemeinsam mit dem Hauptprojekt übertragen.

Wenn sich ein externes Projekt in einem anderen Projektarchiv befindet, werden Sie zwar über Änderungen im externen Projekt informiert, Sie müssen diese jedoch separat übertragen.

Wenn Sie absolute URLs in Ihren svn:externals-Verweisen verwenden und Sie Ihre Arbeitskopie umplatzieren, weil sich z. B. die URL des Projektarchivs ändert, ändern sich die Verweise und funktionieren unter Umständen nicht mehr.

Um solche Probleme zu vermeiden, unterstützen Subversion-Clients ab Version 1.5 relative externe URLs. Es stehen vier verschiedene Methoden zur Verfügung, um externe URLs festzulegen. In den folgenden Beispielen nehmen wir zwei Projektarchive an: Eines in http://example.com/svn/repos-1 und ein weiteres in http://example.com/svn/repos-2. Wir haben http://example.com/svn/repos-1/projekt/trunk in C:\Projekt ausgecheckt und die Eigenschaft svn:externals ist auf trunk gesetzt.

Relativ zum Elternverzeichnis

Diese URLs beginnen stets mit der Zeichenkette ../, zum Beispiel

../../grafik/foo  gemeinsam/foo-grafik

. Dadurch wird http://example.com/svn/repos-1/grafik/foo in C:\Projekt\gemeinsam\foo-grafik extrahiert.

Beachten Sie, dass die URL relativ zu der URL des Verzeichnisses mit der Eigenschaft svn:externals ist und nicht zu dem Verzeichnis, in dem der externe Verweis auf die Festplatte gespeichert wird.

Relativ zur Wurzel des Projektarchivs

You can also specify whet

Sie können einfach auf andere Projekte innerhalb desselben SVNParentPath (ein gemeinsames Elternverzeichnis, das mehrere Projektarchive enthält) verweisen. Zum Beispiel:

^/../repos-2/hammers/claw common/claw-hammer

Dadurch wird http://example.com/svn/repos-2/werkzeug/hammer in C:\Projekt\gemeinsam\hammer-werkzeug extrahiert.

Relativ zum Schema

URLs, die mit der Zeichenkette // beginnen, kopieren nur den Schemateil der URL. Das ist dann nützlich, wenn auf denselben Rechnernamen, abhängig vom Netzwerk mit einem anderen Schema, zugegriffen werden muss. So können zum Beispiel Clients im Intranet per http:// zugreifen, während externe Clients svn+ssh:// verwenden müssen. Zum Beispiel:

//example.com/svn/repos-1/grafik/foo  gemeinsam/foo-grafik

Dadurch wird in Abhängigkeit vom Schema, das verwendet wurde, um C:\Projekt auszuchecken, http://example.com/svn/repos-1/grafik/foo oder svn+ssh://example.com/svn/repos-1/grafik/foo extrahiert.

Relativ zum Rechnernamen des Servers

URLs, die mit der Zeichenkette / anfangen, kopieren das Schema und den Rechnernamen der URL, zum Beispiel:

/svn/repos-1/grafik/foo  gemeinsam/foo-grafik

Dadurch wird http://example.com/svn/repos-1/grafik/foo in C:\Projekt\gemeinsam\foo-grafik extrahiert. Wenn Sie jedoch Ihre Arbeitskopie von einem anderen Server in svn+ssh://spiegel.server.net/svn/repos-1/projekt1/trunk auschecken, wird der externe Verweis von svn+ssh://spiegel.server.net/svn/repos-1/grafik/foo geholt.

Sie können außerdem eine fixe und eine Arbeitsrevision für die URL angeben, falls erforderlich. Um mehr über fixe und Arbeitsrevisionen zu erfahren, lesen Sie bitte das entsprechende Kapitel im Subversion-Buch.

Wichtig

Wenn Sie den Zielordner wie im obenstehenden Beispiel als Unterordner angeben, stellen Sie bitte sicher, dass alle Ordner dazwischen ebenfalls versioniert sind. Im obenstehenden Beispiel muss also der Ordner common versioniert sein.

Der externe Verweis selber wird in den meisten Fällen korrekt funktionieren, auch wenn die dazwischenliegenden Ordner nicht versioniert sind. Es gibt jedoch einige Operationen, die sich dann nicht wie erwartet verhalten. Die überlagerten Symbole im Explorer werden ebenfalls nicht den korrekten Status anzeigen.

Wenn sie mehr Informationen brauchen, wie TortoiseSVN Eigenschaften behandelt, lesen Sie „Projekt-Einstellungen“.

Um sich über verschiedene Methoden zum Zugriff auf gemeinsame Unterprojekte zu informieren, lesen Sie „Ein gemeinsames Unterprojekt einbinden“.

Externe Dateien

Beginnend mit Subversion 1.6 können Sie einzelne externe Dateien unter Verwendung der gleichen Syntax wie für Ordner an Ihre Arbeitskopie binden. Es gibt jedoch ein paar Einschränkungen.

  • Der Pfad zu einem externen Dateiverweis muss ein direktes Kind des Ordners sein, in dem Sie die Eigenschaft svn:externals setzen.

  • Die URL für die externe Datei muss sich in demselben Projektarchiv befinden wie die URL, in die die externe Datei eingebettet wird. Verweise auf externe Dateien zwischen Projektarchiven werden nicht unterstützt.

Eine externe Datei verhält sich in den meisten Fällen wie jede andere versionierte Datei, sie kann aber nicht mit den normalen Befehlen gelöscht oder verschoben werden. Stattdessen muss die Eigenschaft svn:externals verändert werden.

Externals per Ziehen und Ablegen erstellen

Wenn Sie bereits eine Arbeitskopie mit den Dateien oder Ordnern haben, die Sie als Externals in eine andere Arbeitskopie einbinden wollen, können Sie diese einfach per Ziehen und Ablegen im Windows Explorer hinzufügen.

Ziehen Sie einfach das Objekt mit der rechten Maustaste von der einen Arbeitskopie an den Ort, an dem es als External eingebunden werden soll. Ein Kontextmenü erscheint, aus dem Sie die FunktionSVN Als External hier hinzufügen wählen. Dadurch wird die Eigenschaft svn:externals automatisch gesetzt. Alles, was Sie danach tun müssen, ist die geänderte Eigenschaft zu übertragen und Ihre Arbeitskopie zu aktualisieren.

Verzweigen / Markieren

Eine der Funktionen von Versionskontrollsystemen ist die Möglichkeit, bestimmte isolierte Änderungen auf einer separaten Entwicklungslinie zu machen. Solche Linien werden Zweige genannt. Zweige werden üblicherweise dazu benutzt, um neue Funktionen auszutesten, ohne dadurch die normale Entwicklung am Projekt zu stören. Sobald dann eine solche neue Funktion stabil genug ist, wird der Zweig (branch) mit dem Stamm (trunk) zusammengeführt.

Eine andere wichtige Funktion ist die Möglichkeit, bestimmte Zustände zu markieren (z. B. eine Lieferversion), damit es jederzeit möglich ist, diesen bestimmten Zustand wiederherstellen zu können. Dieser Vorgang wird markieren genannt.

Subversion kennt keinen speziellen Befehl für das Verzweigen oder Markieren und benutzt stattdessen sogenannte billige Kopien. Diese funktionieren ähnlich wie Verweise, d. h., es wird keine richtige Kopie erstellt, sondern nur ein Verweis auf eine bestimmte Revision. Daraus ergibt sich, dass Zweige oder Marken schnell zu erstellen sind und nahezu keinen zusätzlichen Platz im Projektarchiv benötigen.

Einen Zweig oder eine Marke erstellen

Wenn Sie beim Importieren Ihres Projektes die empfohlene Ordnerstruktur verwendet haben, ist ein Verzweigen oder Markieren sehr einfach:

Abbildung 4.51. Der Verzweigen/Markieren-Dialog

Der Verzweigen/Markieren-Dialog


Wählen Sie den Ordner Ihrer Arbeitskopie, von dem Sie einen Zweig oder eine Marke erstellen wollen, und wählen Sie den Befehl TortoiseSVNVerzweigen/Markieren... im Kontextmenü.

Standardmäßig wird die Ziel-URL mit der Quell-URL Ihrer Arbeitskopie vorbelegt. Sie müssen nun diese URL in den Pfad Ihrer neuen Verzweigung oder Markierung ändern. Anstelle von

http://svn.collab.net/repos/ProjektName/trunk

könnte sie wie folgt lauten:

http://svn.collab.net/repos/ProjektName/tags/Version_1.10

Wenn Sie sich nicht mehr daran erinnern, welchen Namen Sie zuletzt vergeben hatten, klicken Sie einfach auf die rechte Schaltfläche. Damit öffnet sich der Projektarchivbetrachter und Sie können sich die Struktur des Projektarchivs ansehen.

Zwischenordner

Wenn Sie die Ziel-URL angeben, müssen alle Ordner bis zum letzten bereits existieren, sonst erhalten Sie eine Fehlermeldung. Im obenstehenden Beispiel muss die URL http://svn.collab.net/repos/ProjectName/tags/ existieren, um die Marke Release_1.10 anlegen zu können.

Wenn Sie allerdings einen Zweig oder eine Marke erstellen wollen, die Ordner enthält, die noch nicht existieren, können Sie die Option Zwischenordner erstellen markieren. Dann werden alle Zwischenordner automatisch erstellt.

Beachten Sie bitte, dass diese Option standardmäßig deaktiviert ist, um Schreibfehler zu vermeiden. Sollten Sie z. B. die Ziel-URL als http://svn.collab.net/repos/ProjectName/Tags/Release_1.10 anstelle von http://svn.collab.net/repos/ProjectName/tags/Release_1.10 angegeben haben, so erhalten Sie eine Fehlermeldung, wenn die Option nicht aktiv ist. Wenn die Option aktiv ist, würde Ihre Markierung in einem neuen Ordner Tags angelegt und nicht wie gewünscht im vorhandenen Ordner Marken.

Nun haben Sie mehrere Möglichkeiten, die Quelle der Kopie auszuwählen:

HEAD-Revision im Projektarchiv

Der neue Zweig wird direkt im Projektarchiv als Kopie der HEAD-Revision erstellt. Dabei werden keine Daten von Ihrer Arbeitskopie in das Projektarchiv übertragen und der Zweig kann sehr schnell erzeugt werden.

Revisionsnummer im Projektarchiv

Der neue Zweig wird direkt im Projektarchiv kopiert. Sie können aber auch eine ältere Revision auswählen. Das ist dann nützlich, wenn Sie z. B. vergessen haben, eine Marke anzulegen, als die Lieferversion in der letzten Woche erstellt wurde. Wenn Sie sich nicht mehr an die Revisionsnummer erinnern können, dann klicken Sie auf die Schaltfläche rechts und wählen die Revisionsnummer aus. Auch dabei werden keine Daten aus Ihrer Arbeitskopie an das Projektarchiv übertragen, sodass der Zweig sehr schnell erstellt werden kann.

Arbeitskopie

Der neue Zweig ist eine identische Kopie Ihrer lokalen Arbeitskopie. Egal, ob Sie einige Dateien durch die einer älteren Revision ersetzt haben oder sie geändert haben, diese Dateien sind genau die, die in diesen Zweig kopiert werden. Natürlich erfordert diese aufwändige Markierung, dass Daten von Ihrer Arbeitskopie zurück in das Projektarchiv übertragen werden müssen, sofern sie dort noch nicht existieren.

Wenn Sie wollen, dass Ihre Arbeitskopie sofort zum neuen Zweig/Marke wechselt, aktivieren Sie die Option Arbeitskopie zum neuen Zweig/Marke wechseln. Wenn Sie das tun, stellen Sie bitte vorher sicher, dass Ihre Arbeitskopie keine Änderungen enthält. Wenn sie Änderungen enthält, werden diese beim Wechseln mit dem Zweig zusammengeführt.

Falls Ihre Arbeitskopie weitere mittels svn:externals eingebundene Projekte enthält, werden diese am Ende des Dialogs aufgelistet. Für jedes externe Ziel wird der Pfad und die Quell-URL angezeigt.

Wenn Sie sicherstellen möchten, dass die neue Marke sich immer in einem konsistenten Zustand befindet, sorgen Sie dafür, dass die Revisionen aller Externals fixiert werden. Sollten Sie das nicht tun und die Externals zeigen auf eine HEAD-Revision, die sich ja in der Zukunft ändern könnte, so wird beim Auschecken der neuen Marke die HEAD-Revision des Externals ausgecheckt und Ihre Marke lässt sich unter Umständen nicht mehr übersetzen. Es ist also immer eine gute Idee, die Externals beim Anlegen einer Marke auf eine fixe Revision zu setzen.

Die Externals werden, abhängig von der Quelle der Markierung, entweder automatisch an der aktuelle HEAD-Revision des Projektarchivs oder die BASE-Revision der Arbeitskopie fixiert:

Tabelle 4.1. Fixe Revision

Quelle der KopieFixe Revision
HEAD-Revision im ProjektarchivHEAD-Revision des externen Projektarchivs
Revisionsnummer im ProjektarchivHEAD-Revision des externen Projektarchivs
ArbeitskopieBASE-Revision der externen Arbeitskopie


Externals innerhalb von Externals

Wenn ein extern eingebundenes Projekt weitere externe Projekte einbindet, werden diese nicht markiert! Es können nur externe Projekte markiert werden, die direkte Kinder des Projekts sind.

Klicken Sie OK, um die neue Kopie in das Projektarchiv zu übertragen und vergessen Sie dabei nicht, eine Logmeldung anzugeben. Beachten Sie, dass diese Kopie innerhalb des Projektarchivs angelegt wird.

Beachten Sie, dass das Anlegen eines Zweiges oder einer Marke sich nicht auf Ihre Arbeitskopie auswirkt, es sei denn, Sie haben die Option zum Wechseln auf den Zweig gleich mit aktiviert. Auch wenn Sie den Zweig aus der Arbeitskopie heraus erstellen, werden die Änderungen darin in den neuen Zweig übertragen und nicht in den Stamm. Die geänderten Dateien Ihrer Arbeitskopie bleiben als gegenüber dem Stamm verändert markiert.

Andere Wege, einen Zweig oder eine Marke erstellen

Sie können einen Zweig oder eine Marke ohne eine Arbeitskopie zu erstellen. Dazu öffnen Sie zunächst den Projektarchivbetrachter. Dort können Sie Ordner an einen neuen Platz ziehen und ablegen. Dabei müssen Sie die Strg-Taste gedrückt halten, um eine Kopie zu erstellen. Andernfalls wird der Ordner nur verschoben und nicht kopiert.

Alternativ können Sie einen Ordner mit gedrückter rechter Maustaste ziehen und ablegen. Sobald Sie die Maustaste loslassen, können Sie per Kontextmenü wählen, ob der Ordner verschoben oder kopiert werden soll. Zum Erstellen eines Zweiges oder einer Marke müssen Sie den Ordner kopieren.

Eine weitere Möglichkeit dazu besteht im Log-Dialog. Lassen Sie sich das Log anzeigen, markieren eine Revision in der Liste und wählen KontextmenüErstelle Zweig/Marke von Revision.

Auschecken oder Wechseln...

...das ist hier (eigentlich nicht) die Frage. Während beim Auschecken eine neue Arbeitskopie (z. B. des neu erstellten Zweiges) erstellt wird, verändert der Befehl TortoiseSVNWechseln zu... Ihre bestehende Arbeitskopie so, dass diese genau wie der erstellte Zweig aussieht. Dabei werden nur die Unterschiede zwischen Ihrer bestehenden Arbeitskopie und dem Zweig des Projektarchivs übertragen, was sich natürlich günstig auf die Netzwerkauslastung und Ihre Geduld auswirkt. :-)

Es gibt mehrere Möglichkeiten, mit Ihrer neuen Verzweigung oder Markierung weiterzuarbeiten. Sie können:

  • TortoiseSVNAuschecken, um eine neue Arbeitskopie in einem leeren Ordner zu erstellen. Sie können von einem Projektarchiv so viele Arbeitskopien erstellen, wie Sie möchten.

  • Wechseln Sie mit Ihrer Arbeitskopie zu Ihrer neuen Kopie im Projektarchiv. Dazu wählen Sie TortoiseSVNWechseln zu... aus dem Kontextmenü.

    Im folgenden Dialog geben Sie die URL des Zweiges an, den Sie gerade erzeugt haben. Wählen Sie die Option HEAD-Revision und bestätigen Sie mit OK. Ihre Arbeitskopie wird nun auf den neuen Zweig bzw. die neue Marke umgestellt.

    Wechseln zu wird genauso wie Aktualisieren niemals lokale Änderungen verwerfen. Sämtliche noch nicht übertragene Änderungen werden beim Wechseln mit den Daten aus dem Projektarchiv zusammengeführt. Wenn Sie das nicht wünschen, müssen Sie entweder die Änderungen übertragen oder verwerfen, bevor Sie Wechseln zu aufrufen.

  • Wenn Sie auf dem Stamm und einem Zweig gleichzeitig arbeiten wollen, aber nicht auf ein vollständiges Auschecken warten wollen, können Sie mit dem Explorer Ihre Arbeitskopie kopieren und mit der Kopie über TortoiseSVNWechseln zu... auf den Zweig wechseln.

Abbildung 4.52. Der Wechseln-Zu-Dialog

Der Wechseln-Zu-Dialog


Obwohl Subversion keine Unterscheidung zwischen tags und branches macht, werden sie normalerweise unterschiedlich genutzt.

  • Tags (= Marken) werden typischerweise dafür verwendet, einen Entwicklungszeitpunkt einzufrieren. Als solche werden sie normalerweise nicht für die Weiterentwicklung genutzt. Dafür sind Verzweigungen (= branches) gedacht. Das ist auch der Hauptgrund, warum wir die Struktur /trunk /branches /tags für Projektarchive empfehlen. Änderungen an einer markierten Revision vorzunehmen, ist keine gute Idee. Da aber die Daten in Ihrer Arbeitskopie nicht schreibgeschützt sind, kann es aus Versehen doch passieren. TortoiseSVN wird Sie jedoch warnen, wenn Sie versuchen, Änderungen in einem Pfad im Projektarchiv zu übertragen, den die Zeichenfolge /tags enthält.

  • Möglicherweise wollen Sie doch weitere Änderungen an einer Revision vornehmen, die Sie bereits markiert haben. Die korrekte Vorgehensweise ist, zunächst per Verzweigen/Markieren einen neuen Zweig aus der Marke (z. B. /branches/Version_1.0.x aus /tags/Version_1.0) zu erzeugen und die Änderungen auf dem Zweig durchzuführen. Wenn Sie Ihre Änderungen durchgeführt haben, erzeugen Sie eine neue Marke (z. B. /tags/Version_1.0.1) aus dem Zweig, an dem Sie gearbeitet haben.

  • Wenn Sie eine Arbeitskopie, die auf einem Zweig basiert, verändern und die Änderungen übertragen, gehen diese in den neuen Zweig und nicht in trunk. Nur die Unterschiede werden gespeichert. Der Rest bleibt eine billige Kopie.

Zusammenführen

Wenn Zweige für verschiedene Entwicklungslinien verwendet werden, werden Sie an einem bestimmten Punkt die Änderungen, die Sie in einem Zweig gemacht haben, wieder mit dem Stamm zusammenführen wollen oder umgekehrt.

Es ist wichtig zu verstehen, wie Verzweigen und Zusammenführen in Subversion funktioniert, bevor Sie es benutzen. Es kann unter Umständen sehr komplex werden. Wir empfehlen Ihnen, das Kapitel Verzweigen und Zusammenführen des Subversion-Buchs zu lesen. Dieses Kapitel beschreibt ausführlich das Verzweigen und Zusammenführen und gibt auch einige Beispiele, wie man diese Werkzeuge am besten benutzt.

Der nächste wichtige Punkt ist, dass Zusammenführen immer in der Arbeitskopie stattfindet. Wenn Sie Änderungen in einem Zweig zusammenführen möchten, müssen Sie eine Arbeitskopie für diesen Zweig auschecken und den Assistenten mittels TortoiseSVNZusammenführen... in dieser Arbeitskopie aufrufen.

Es ist grundsätzlich eine gute Idee, Revisionen in einer unmodifizierten Arbeitskopie zusammenzuführen. Wenn Ihre Arbeitskopie Änderungen enthält, übertragen Sie diese zuerst. Falls nämlich das Zusammenführen nicht zu dem von Ihnen gewünschten Ergebnis führt und Sie die Änderungen Rückgängig machen, wird dieser Befehl alles verwerfen, inklusive Ihrer eigenen Änderungen.

Es gibt drei Anwendungsfälle für das Zusammenführen, die ein wenig unterschiedlich gehandhabt werden, wie weiter unten beschrieben. Die erste Seite des Assistenten fragt Sie nach der gewünschten Methode.

Einen Revisionsbereich zusammenführen

Diese Methode deckt den Fall ab, dass Sie Änderungen an einem Zweig (oder dem Stamm) vorgenommen haben und diese Änderungen in einen anderen Zweig übertragen wollen.

Damit weisen Sie Subversion an, folgendes zu tun: Berechne die Änderungen, die nötig sind, um von Revision X des Zweiges A zu Revision Y des Zweiges A zu gelangen und wende diese Änderungen auf meine Arbeitskopie (von Stamm oder Zweig B) an.

Wenn Sie den Revisionsbereich leer lassen, wird Subversion auf das interne Änderungsprotokoll zurückgreifen, um den korrekten Revisionsbereich zu ermitteln. Dies wird als Reintegrieren oder automatisches Zusammenführen bezeichnet.

Zusammenführen zweier Bäume

Dies ist ein allgemeinerer Fall des Wiedereingliederns eines Zweiges. Damit weisen Sie Subversion an, folgendes zu tun: Berechne die Änderungen, die nötig sind, um von der HEAD-Revision des Stammes zur HEAD-Revision des Zweiges zu gelangen und wende diese Änderungen auf meine Arbeitskopie (des Stammes) an. Das Ergebnis ist, dass der Stamm danach exakt wie der Zweig aussieht.

Falls Ihr Server oder das Projektarchiv die Protokollierung der Datenintegration nicht unterstützt, ist das die einzige Methode, mit der Sie einen Zweig in den Stamm zurück integrieren können. Ein anderer Anwendungsfall tritt auf, wenn Sie mit Herstellerzweigen arbeiten und die Änderungen aufgrund einer neuen Auslieferung in Ihrem Stamm zusammenführen müssen. Für weiterführende Informationen lesen Sie bitte das Kapitel Herstellerzweige im Subversion-Buch.

Einen Revisionsbereich zusammenführen

Abbildung 4.53. Der Assistent - Revisionsbereich wählen

Der Assistent - Revisionsbereich wählen


Im Feld Von: geben Sie die URL des Zweiges an, der die Änderungen enthält, die Sie mit der Arbeitskopie zusammenführen möchten. Sie können auch auf ... klicken, um den gewünschten Zweig zu finden. Wenn Sie bereits Änderungen aus diesem Zweig zusammengeführt haben, finden Sie den Namen in der Liste der bereits benutzten URLs.

Wenn sie von einem umbenannten oder gelöschten Zweig zusammenführen möchten, müssen Sie zu einer Revision zurückgehen, in der dieser Zweig noch existierte. In diesem Fall müssen Sie die entsprechende Revision als fixe Revision im Bereich der zusammenzuführenden Revisionen angeben (siehe unten). Andernfalls wird das Zusammenführen fehlschlagen, wenn der Pfad in der HEAD-Revision nicht gefunden wird.

Geben Sie den zusammenzuführenden Revisionsbereich in das Feld Revisionsbereich ein. Das kann eine einzelne Revision, eine durch Kommata getrennte Liste von Revisionen, ein durch Bindestrich getrennter Revisionsbereich oder eine Kombination aus allem sein.

Wenn Sie eine fixe Revision für das Zusammenführen benötigen, geben Sie diese am Ende der Revisionen an, z. B.5-7,10@3. In diesem Beispiel werden die Revisionen 6,5,7 und 10 zusammengeführt, wobei 3 die fixe Revision darstellt.

Wichtig

Es gibt einen wichtigen Unterschied in der Spezifikation von Revisionsbereichen, wie sie in TortoiseSVN und im Kommandozeilenclient verwendet werden. Am einfachsten stellt man sich das als einen Zaun mit Pfählen und Brettern dazwischen vor.

Mit dem Kommandozeilenclient legt man die Revisionen der zusammenzuführenden Bereiche als Zaunpfähle fest, die die Punkte davor und danach festlegen.

Mit TortoiseSVN legen Sie die zusammenzuführenden Änderungen als Zaunbretter fest. Der Grund dafür wird deutlich, wenn Sie den Log-Dialog verwenden, um die Revisionen festzulegen, in dem jede Revision als ein Satz von Änderungen erscheint.

Wenn Sie Revisionen in Blöcken zusammenführen, würde die Methode im Subversion-Buch sie zunächst 100-200 und danach 200-300 zusammenführen lassen. Mit TortoiseSVN sind es zunächst 100-200 und dann 201-300.

Dieser Unterschied hat zu hitzigen Diskussionen auf der Mailingliste geführt. Wir räumen ein, dass es einen Unterschied zum Kommandozeilenclient gibt, aber wir sind davon überzeugt, dass die von uns implementierte Methode für die Mehrzahl der GUI-Anwender einfacher zu verstehen ist.

Der einfachste Weg, um den Revisionsbereich zu wählen, ist ein Klick auf Zeige Log. Dies zeigt Ihnen die letzten Änderungen inklusive der Logmeldungen an. Wenn Sie nur die Änderungen einer einzelnen Revision benötigen, wählen Sie die gewünschte Revision. Wenn Sie einen Revisionsbereich benötigen, wählen Sie diesen mit gedrückter Umschalt-Taste aus. Klicken Sie auf OK und die Liste der zusammenzuführenden Revisionsnummern wird für Sie ausgefüllt.

Wenn Sie bereits übertragene Änderungen rückgängig machen wollen, erreichen Sie das, indem Sie den gewünschten Revisionsbereich Rückwärts zusammenführen. Dadurch werden die Änderungen dieses Revisionsbereichs aus Ihrer Arbeitskopie entfernt.

Wenn Sie bereits Änderungen aus diesem Zweig zusammengeführt haben, so haben Sie hoffentlich auch in der Logmeldung notiert, welche Revisionen das waren. In diesem Fall können Sie einfach mit Hilfe der Zeige Log Schaltfläche nachschauen. Verwenden Sie die Endrevision des letzten Zusammenführens als Startrevision der geplanten Aktion. Wenn Sie zum Beispiel zuletzt die Revisionen 37 bis 39 mit Ihrer Arbeitskopie zusammengeführt haben, sollte die Startrevision für die aktuelle Aktion 40 sein.

Neuere Versionen von Subversion protokollieren die bisher durchgeführten Datenintegrationen mit. Deshalb müssen Sie sich nicht merken, welche Revisionen Sie bereits zusammengeführt haben. Wenn Sie den Revisionsbereich leer lassen, werden alle bisher noch nicht integrierten Revisionen ausgewählt. Lesen Sie in „Verfolgung der Datenintegration“, wie das funktioniert.

Wenn die zusammengeführten Revisionen aufgezeichnet wurden, zeigt der Log-Dialog bereits zusammengeführte Revisionen und Revisionen, die vor dem gemeinsamen Vorfahren liegen, d. h., bevor der Zweig angelegt wurde, ausgegraut an. Die Option Nicht zusammenführbare Revisionen ausblenden erlaubt Ihnen, diese Revisionen vollständig herauszufiltern, sodass Sie nur die Revisionen sehen, die zusammengeführt werden können.

Wenn außer Ihnen noch andere Personen Daten in das Projektarchiv übertragen, seien Sie vorsichtig bei der Verwendung der HEAD-Revision. Diese entspricht eventuell nicht der Revision, die Sie erwarten, weil seit Ihrer letzten Aktualisierung jemand anderes Daten übertragen haben könnte.

Wenn Sie den Revisionsbereich leer lassen oder die Option Alle Revisionen markiert haben, wird Subversion alle bisher noch nicht zusammengeführten Revisionen verwenden. Dies wird als Reintegrieren bzw. automatisches Zusammenführen bezeichnet.

Um einen Zweig wieder eingliedern zu können, müssen einige Bedingungen erfüllt sein. Zunächst muss der Server die Verfolgung der Datenintegration unterstützen. Die Tiefe der Arbeitskopie muss unendlich sein (keine spärliche Arbeitskopie) und sie darf weder lokale Änderungen noch Objekte auf einer anderen URL oder einer anderen Revision als HEAD enthalten. Alle Änderungen am Stamm während der Entwicklung des Zweiges müssen in den Zweig übertragen worden sein (oder als übertragen markiert worden sein). Der Bereich der zusammenzuführenden Revisionen wird dann automatisch berechnet.

Klicken Sie auf Weiter und gehen Sie zu „Optionen beim Zusammenführen“.

Zusammenführen zweier Bäume

Abbildung 4.54. Der Assistent - Zusammenführen von Bäumen

Der Assistent - Zusammenführen von Bäumen


Um mit dieser Methode einen Funktionszweig mit dem Stamm zusammenzuführen, müssen Sie den Assistenten aus einer Arbeitskopie des Stamms starten.

Im Von:-Feld geben Sie die URL des Stammes (trunk) an. Dies mag Ihnen jetzt vielleicht falsch vorkommen, aber bedenken Sie, dass der Stamm der Ausgangspunkt ist, von dem aus Sie die Änderungen des Funktionszweiges zusammenführen möchten. Sie können auch auf ... klicken, um die URL besser zu finden.

Im Bis:-Feld geben Sie die vollständige URL des Zweiges an.

Sowohl im Feld Von Revision als auch im Feld Bis Revision geben Sie die letzte Revision an, in der die beiden Zweige synchron waren. Wenn Sie sicher sind, dass niemand anders seit Ihrer letzten Synchronisation eine Übertragung gemacht hat, können Sie in beiden Feldern die HEAD-Revision angeben. Falls jedoch in der Zwischenzeit die Möglichkeit einer Übertragung besteht, geben Sie die letzte Revision Ihrer Synchronisation an.

Sie können auch auf Zeige Log klicken, um die Revision zu wählen.

Optionen beim Zusammenführen

Auf dieser Seite des Assistenten können Sie weitere Optionen angeben, bevor Sie das Zusammenführen starten. In den meisten Fällen können Sie die Standardeinstellungen verwenden.

Sie können die Tiefe für das Zusammenführen festlegen, das heißt, wie weit das Zusammenführen in Ihre Arbeitskopie herabsteigen soll. Die Tiefendefinitionen sind in „Rekursionstiefe“ beschrieben. Die Vorgabe ist Arbeitskopie, was den aktuell eingestellten Wert verwendet und meistens korrekt sein wird.

Meistens möchten Sie, dass die Historie der Dateien berücksichtigt wird, sodass Änderungen relativ zu einem gemeinsamen Vorgänger zusammengeführt werden. Manchmal möchten Sie aber auch Dateien zusammenführen, zwischen denen eine Beziehung besteht - allerdings nicht in Ihrem Projektarchiv. Sie haben zum Beispiel Versionen 1 und 2 einer externen Bibliothek in zwei verschiedene Verzeichnisse importiert. Obwohl zwischen diesen ein logischer Zusammenhang besteht, weiß Subversion nichts davon, weil es nur die separat importierten Dateibäume sieht. Wenn Sie versuchen, die Unterschiede zwischen den beiden Versionen zusammenzuführen, sehen Sie ein vollständiges Entfernen gefolgt von einem vollständigen Hinzufügen. Damit Subversion nur pfadbasierte Differenzen anstelle von vergangenheitsbasierten Differenzen erzeugt, wählen Sie die Option Vorfahren ignorieren. Weitere Informationen zu diesem Thema finden Sie im Subversion-Buch in Die Abstammung berücksichtigen oder ignorieren.

Sie können festlegen, wie Änderungen an Zeilenumbrüchen und Leerzeichen behandelt werden sollen. Diese Optionen sind in „Zeilenende- und Leerzeichenoptionen“ beschrieben. Die Vorgabe ist, dass alle Zeilenenden- und Leerzeichenänderungen als echte zusammenzuführende Änderungen behandelt werden.

Die Option Zusammenführen erzwingen dient dazu, Baumkonflikte zu vermeiden, wenn durch ein eingehendes Löschen eine veränderte oder nicht versionierte lokale Datei betroffen ist. Wenn dadurch die Datei gelöscht wird, kann sie nicht im Ursprungszustand wiederhergestellt werden, weshalb die Option standardmäßig deaktiviert ist.

Wenn Sie Ihre Datenintegrationsschritte verfolgen und eine Revision als zusammengeführt markieren wollen, ohne die Daten wirklich zusammenzuführen, aktivieren Sie die Option Zusammenführen nur aufzeichnen. Es gibt mehrere Gründe, dies zu tun. Zum Beispiel könnten die zusammenzuführenden Änderungen zu komplex für den Algorithmus sein, sodass Sie die Daten von Hand integrieren und die Revisionen als zusammengeführt markieren, damit die Änderungsverfolgung darüber informiert ist. Oder Sie möchten verhindern, dass eine bestimmte Revision zusammengeführt werden kann. Clients, die die Verfolgung der Datenintegration bereits beherrschen, werden diese Revision dann überspringen.

Nun, da alles vorbereitet ist, müssen Sie nur noch auf Zusammenführen klicken. Wenn Sie eine Vorschau der Ergebnisse wünschen, können Sie einen Trockenlauf durchführen, der das Zusammenführen lediglich simuliert und die Arbeitskopie nicht verändert. Eine Liste der veränderten Dateien und der eventuell resultierenden Konflikte wird angezeigt. Da die Protokollierung der Datenintegration das Zusammenführen weiter verkompliziert, gibt es kein sicheres Verfahren, im Vorhinein festzustellen, wo Konflikte auftreten. Dadurch kann es vorkommen, dass beim Trockenlauf als konfliktbehaftet markierte Dateien sich in Wirklichkeit problemlos zusammenführen lassen.

Der Fortschrittsdialog zeigt nun jeden Schritt des Zusammenführens mit den betroffenen Revisionen an. Eventuell wird hier eine Revision mehr als von Ihnen erwartet angezeigt. So wird zum Beispiel, wenn Sie die Revision 123 zusammenführen, im Fortschrittsdialog Zusammenführen von Revisionen 122 bis 123 angezeigt. Das Zusammenführen ist mit dem Vergleichen verwandt. Der Prozess erzeugt eine Liste von Änderungen zwischen zwei Punkten im Projektarchiv und wendet diese Änderungen auf Ihre Arbeitskopie an. Der Fortschrittsdialog zeigt lediglich den Start- und Endpunkt der Differenzbildung an.

Ergebnisse des Zusammenführens betrachten

Das Zusammenführen ist nun beendet. Es ist eine gute Idee, wenn Sie sich das Ergebnis anschauen und prüfen, ob es Ihren Erwartungen entspricht. Datenintegration ist normalerweise eine komplizierte Sache. Konflikte können auftreten, wenn der Zweig sich zu weit vom Stamm entfernt hat.

Tipp

Jedes Mal, wenn Revisionen zu einer Arbeitskopie zusammengeführt werden, erzeugt TortoiseSVN von allen zusammengeführten Revisionen eine Logmeldung. Diese Meldungen können über die Schaltfläche Letzte Meldungen im Übertragen-Dialog abgerufen werden.

Um die erzeugte Meldung anzupassen, setzen Sie die entsprechenden Eigenschaften auf Ihre Arbeitskopie. Siehe „Vorlage für Zusammenführen-Log“

Bei Subversion-Clients vor Version 1.5 müssen Informationen über zusammengeführte Revisionen von Hand protokolliert werden. Wenn Sie die Änderungen überprüft haben und diese nun übertragen möchten, beachten Sie, dass die Logmeldung dieser Übertragung immer die bereits zusammengeführten Revisionsnummern enthalten sollte. Wenn Sie später erneut Revisionen zusammenführen möchten/müssen, werden Sie froh sein zu wissen, was alles Sie bereits zusammengeführt haben und was nicht. Denn wenn Sie eine Revision ein weiteres Mal zusammenführen, würde dies zwingend zu einem Konflikt führen. Für genauere Informationen lesen Sie bitte Best Practices for Merging im Subversion-Buch.

Wenn Ihr Server und alle Clients unter Subversion 1.5 oder neuer laufen, wird die Protokollierung der Datenintegration sämtliche zusammengeführten Revisionen aufzeichnen und verhindern, dass eine Revision mehr als einmal integriert wird. Das vereinfacht Ihre Arbeit ungemein, da sie nun jedes Mal den gesamten Revisionsbereich wählen können und sichergestellt ist, dass nur neue Revisionen wirklich zusammengeführt werden.

Das Verwalten von Zweigen ist wichtig. Wenn Sie Ihren Zweig stets mit dem Stamm synchron halten wollen, stellen Sie sicher, dass Sie Änderungen häufig zusammenführen, damit Stamm und Zweig nicht zu weit auseinanderdriften. Wie bereits erklärt, sollten Sie wiederholtes Zusammenführen der gleichen Änderungen vermeiden.

Tipp

Wenn Sie gerade einen Funktionszweig in den Stamm integriert haben, enthält der Stamm nun sämtliche neuen Funktionen. Der Zweig ist nun überflüssig und kann deshalb gelöscht werden.

Wichtig

Subversion kann keine Datei mit einem Ordner zusammenführen und umgekehrt - nur Ordner mit Ordnern und Dateien mit Dateien können zusammengeführt werden. Wenn Sie auf eine Datei klicken, um den Zusammenführen-Dialog zu öffnen, müssen Sie eine URL zu einer Datei angeben. Wenn Sie auf einen Ordner klicken, um den Zusammenführen-Dialog zu öffnen, müssen Sie für den Vorgang eine URL zu einem Ordner angeben.

Verfolgung der Datenintegration

Mit Subversion 1.5 wurden Möglichkeiten zur Verfolgung der Datenintegration eingeführt. Wenn Sie Änderungen von einem Baum in einem anderen zusammenführen, werden die entsprechenden Revisionsnummern gespeichert. Diese Information kann für weitere Zwecke herangezogen werden.

  • Sie können vermeiden, dass eine Revision mehrfach integriert wird. Sobald eine Revision als bereits zusammengeführt markiert ist, werden zukünftige Datenintegrationen diese Revision überspringen.

  • Wenn Sie einen Zweig in den Stamm zurück integrieren, kann Ihnen der Log-Dialog die Übertragungen des Zweiges im Log des Stamms anzeigen und Ihnen damit die Verfolgung der Änderungen vereinfachen.

  • Wenn Sie den Log-Dialog aus dem Zusammenführen-Dialog heraus aufrufen, werden bereits zusammengeführte Revisionen in grau angezeigt.

  • Wenn Sie die Annotierungen für eine Datei anzeigen, können Sie sich den Originalautor der Änderungen anstelle des Autors, der die Änderungen zusammengeführt hat, anzeigen lassen.

  • Sie können Revisionen als nicht zusammenführbar markieren, indem Sie diese in die Liste der bereits zusammengeführten Revisionen aufnehmen, ohne das Zusammenführen tatsächlich anzustoßen.

Die zusammengeführten Revisionen und Pfade werden durch den Subversion-Client beim Zusammenführen in der Eigenschaft svn:mergeinfo abgespeichert. Sobald die Änderungen übertragen wurden, speichert der Server sie in einer Datenbank. Wenn jetzt Logdaten, Annotierungen oder Zusammenführen angefordert werden, kann der Server entsprechend reagieren. Damit das System korrekt arbeitet, müssen Sie sicherstellen, dass der Server, das Projektarchiv und alle Clients aktualisiert werden. Ältere Clients füllen die svn:mergeinfo nicht aus und ältere Server beantworten die Anfragen neuerer Clients nicht.

Lesen Sie mehr über die Verfolgung der Datenintegration in Subversions Merge tracking documentation.

Behandlung von Konflikten nach dem Zusammenführen

Wichtig

Die Texte in den Konfliktdialogen werden durch die SVN-Bibliotheken zur Verfügung gestellt und sind deswegen unter Umständen (noch) nicht übersetzt. Tut uns leid!

Zusammenführen geht nicht immer glatt. Manchmal gibt es einen Konflikt, der aufgelöst werden muss. TortoiseSVN hilft Ihnen mit dem Konfliktdialog bei diesem Vorgang.

Abbildung 4.55. Der Zusammenführen-Konfliktdialog

Der Zusammenführen-Konfliktdialog


Es ist wahrscheinlich, dass einige der Änderungen reibungslos zusammengeführt wurden, während andere lokale Änderungen mit Änderungen in Konflikt stehen, die bereits im Projektarchiv festgeschrieben wurden. Alle Änderungen, die zusammengeführt werden können, werden zusammengeführt. Das Dialogfeld "Konflikt zusammenführen" bietet Ihnen verschiedene Möglichkeiten, mit den konfliktbehafteten Zeilen umzugehen.

Für normale Konflikte, die vom Inhalt der Datei oder ihrer Eigenschaften ausgelöst werden, zeigt der Dialog Schaltflächen, die es erlauben zu wählen, welche der konfliktbehafteten Teile behalten oder verworfen werden sollen.

Aufschieben

Den Konflikt jetzt nicht auflösen. Mit dem Zusammenführen fortfahren und anschließend die Konflikte bearbeiten.

Basis übernehmen

Lässt die Datei im Originalzustand, ohne Ihre Änderungen und ohne die Änderungen aus dem Projektarchiv.

Eingehend übernehmen

Verwirft Ihre lokalen Änderungen und übernimmt die Datei aus dem Projektarchiv.

Eingehend verwerfen

Verwirft alle Änderungen aus dem Projektarchiv und behält Ihre lokalen Änderungen bei.

Eingehend für Konflikte übernehmen

Verwirft ihre lokalen Änderungen, wo sie mit den eingehenden Änderungen kollidieren. Behält alle konfliktfreien lokalen Änderungen bei.

Konflikte verwerfen

Verwirft alle eingehenden Änderungen, die mit ihren lokalen Änderungen kollidieren. Behält alle konfliktfreien eingehenden Änderungen bei.

Als aufgelöst markieren

Markiert die Konflikte als aufgelöst. Diese Schaltfläche ist deaktiviert, bis sie mit der Schaltfläche Bearbeiten die Konflikte manuell aufgelöst und gespeichert haben. Sobald die Änderungen gespeichert sind, wird die Schaltfläche aktiviert.

Bearbeiten

Startet den Zusammenführungseditor, damit Sie die Konflikte manuell auflösen können. Vergessen Sie nicht, die Datei zu speichern, damit die Schaltfläche Als gelöst markieren aktiviert wird.

Wenn es einen Baumkonflikt gibt, siehe „Baumkonflikte“ bezüglich der verschiedenen Arten von Baumkonflikten und wie und warum sie auftreten können.

Um Baumkonflikte nach dem Zusammenführen aufzulösen, wird ein Dialog mit verschiedenen Optionen zum Lösen des Konflikts angezeigt.

Abbildung 4.56. Der Dialog zum Zusammenführen von Baumkonflikten

Der Dialog zum Zusammenführen von Baumkonflikten


Weil es unterschiedliche Möglichkeiten gibt, Baumkonflikte zu lösen, zeigt der Dialog abhängig vom konkreten Konflikt unterschiedliche Schaltflächen. Der Text der Schaltflächen und Tooltipps erklärt, was die jeweilige Schaltfläche tut, um den Konflikt zu lösen. Wenn Sie unsicher sind, brechen Sie entweder den Dialog ab oder Sie benutzen die Schaltfläche später, um den Konflikt später zu lösen.

Wartung des Funktionszweiges

Wenn Sie eine neue Funktion in einem separaten Zweig entwickeln, ist es eine gute Idee, sich rechtzeitig eine Richtlinie zu überlegen, wie diese Funktion in die Hauptentwicklungslinie zurückintegriert wird. Wenn gleichzeitig in trunk weiter entwickelt wird, können die Unterschiede mit der Zeit bedeutend werden und die Rückintegration zu einem Alptraum machen.

Falls die Funktion relativ einfach ist und keine längere Zeit in Anspruch nehmen wird, können Sie den einfachen Ansatz wählen und auf dem Zweig solange separat entwickeln, bis die Funktion komplett ist und dann zurück integrieren. Im Assistenten wäre dies eine einfache Einen Revisionsbereich zusammenführen-Aktion, mit dem Revisionsbereich des Zweiges als Parameter.

Wenn die Entwicklung länger dauern wird und Sie Änderungen in trunk berücksichtigen müssen, sollten Sie den Zweig synchron halten. Das bedeutet, dass Sie periodisch Änderungen an trunk in den Zweig integrieren, sodass der Zweig alle Änderungen an trunk plus die neue Funktion enthält. Beim Synchronisationsvorgang verwenden Sie Einen Revisionsbereich zusammenführen. Sobald die Funktion komplett ist, können Sie die Änderungen entweder per Einen Zweig wieder eingliedern oder Zwei verschiedene Bäume zurück integrieren.

Eine andere (schnelle) Methode, um Änderungen vom Stamm in den Entwicklerzweig zu übertragen, ist TortoiseSVNAlles zusammenführen... aus dem erweiterten Kontextmenü. Halten Sie die Umschalt-Taste gedrückt, während Sie einen Rechtsklick auf die Datei machen.

Abbildung 4.57. Der Alles-Zusammenführen-Dialog

Der Alles-Zusammenführen-Dialog


Dieser Dialog ist sehr einfach. Sie müssen lediglich die in „Optionen beim Zusammenführen“ beschriebenen Optionen einstellen. Der Rest wird mit Hilfe der protokollierten Integration automatisch von TortoiseSVN erledigt.

Sperren

Subversion funktioniert im Allgemeinen am besten ohne Sperren, da es den in „Die Kopieren-Ändern-Zusammenführen-Lösung“ besprochenen Ansatz verfolgt. Es gibt jedoch einige Fälle, in denen es erforderlich ist, Dateien zu sperren.

  • Sie arbeiten mit nicht zusammenführbaren Dateien, z. B. Grafiken. Wenn zwei Personen dieselbe Datei modifizieren, ist ein Zusammenführen nicht möglich, sodass einer der beiden seine Änderungen verlieren wird.

  • Ihre Firma hat bisher immer ein sperrendes Versionskontrollsystem eingesetzt und es gibt eine Management-Entscheidung, dass Sperren das Beste ist.

Zunächst müssen Sie sicherstellen, dass Ihr Subversion-Server zumindest mit Version 1.2 arbeitet. Frühere Versionen unterstützen Sperren überhaupt nicht. Wenn Sie ausschließlich den file://-Zugriff nutzen, müssen nur Ihre Clients aktualisiert werden.

Die drei Bedeutungen von Sperre

In diesem Abschnitt und fast überall in diesem Buch beschreiben die Worte Sperre und Sperren einen Mechanismus zum wechselseitigen Ausschluss zwischen Benutzern, um Konflikte zu vermeiden. Leider gibt es zwei andere Arten von Sperren, mit denen Subversion und dieses Buch sich manchmal befassen müssen.

Die zweite Bedeutung bezieht sich auf gesperrte Arbeitskopien, die intern von Subversion verwendet werden, um Kollisionen zwischen mehreren Subversion-Clients zu verhindern, die auf dieselbe Arbeitskopie zugreifen. Diese Sperren können auftreten, wenn z. B. ein Befehl wie Aktualisieren/Übertragen/... aufgrund eines Fehlers unterbrochen wurde. Sie entfernen die Sperren, indem Sie den Aufräumen-Befehl auf der Arbeitskopie ausführen, wie in „Bereinigen“ beschrieben.

Drittens können Dateien oder Ordner gesperrt werden, wenn sie von einem anderen Prozess verwendet werden. Wenn Sie z. B. ein Dokument geöffnet haben, kann diese Datei gesperrt sein und durch TortoiseSVN nicht verändert werden.

Im Allgemeinen brauchen Sie den anderen Sperren solange keine Beachtung zu schenken, wie alles funktioniert und Sie sich nicht darum kümmern müssen. In diesem Buch hat Sperre stets die erste Bedeutung, es sei denn, es ist vom Kontext her klar oder es wird explizit darauf hingewiesen.

Sperren von Dateien in Subversion

In der Grundeinstellung sind keine Objekte gesperrt und jeder, der die entsprechende Berechtigung hat, kann seine Änderungen in das Projektarchiv übertragen. Andere werden Ihre Arbeitskopien regelmäßig aktualisieren und Änderungen im Projektarchiv werden mit den lokalen Änderungen zusammengeführt.

Wenn Sie für eine Datei Eine Sperre holen, können nur Sie Änderungen an dieser Datei übertragen. Übertragungen von anderen werden solange verhindert, bis Sie die Sperre wieder freigeben. Eine gesperrte Datei kann in keiner Weise im Projektarchiv verändert, umbenannt oder gelöscht werden. Dies ist nur dem Eigner der Sperre möglich.

Wichtig

Eine Sperre ist nicht an einen bestimmten Benutzer, sondern an eine bestimmte Arbeitskopie dieses Benutzers gebunden. Eine Sperre in einer Arbeitskopie hindert denselben Anwender daran, die gesperrte Datei von einer anderen Arbeitskopie aus einzuchecken.

Stellen Sie sich vor, dass John eine Arbeitskopie auf seinem Bürocomputer hat. Dort beginnt er ein Bild zu bearbeiten und holt sich deshalb eine Sperre für die Datei. Als er nach Hause geht, ist er noch nicht fertig und gibt deswegen die Sperre nicht frei. Daheim hat John noch eine Arbeitskopie und beschließt, noch ein wenig an dem Bild weiterzuarbeiten. Aber er kann das Bild nicht bearbeiten oder einchecken, weil die Dateisperre zur Arbeitskopie in seinem Büro gehört.

Andere Anwender werden nicht unbedingt wissen, dass Sie eine Datei gesperrt haben. Wenn sie nicht regelmäßig den Sperrstatus überprüfen, werden sie es frühestens merken, wenn ihre Übertragung fehlschlägt, was in den meisten Fällen nicht sehr nützlich ist. Damit es einfacher ist, Sperren zu verwalten, gibt es die neue Eigenschaft svn:needs-lock von Subversion. Wenn diese Eigenschaft (auf einen beliebigen Wert) gesetzt ist, wird beim Auschecken oder Aktualisieren die Datei in der Arbeitskopie mit einem Schreibschutz versehen, es sei denn, die Arbeitskopie besitzt die Sperre für die Datei. Dies dient als Warnung, dass Sie die Datei nicht bearbeiten sollen, bevor Sie nicht die Sperre für die Datei besitzen. Dateien unter Versionskontrolle, die mit Schreibschutz versehen sind, erhalten von TortoiseSVN ein überlagertes Symbol, das anzeigt, dass Sie erst eine Sperre holen müssen, bevor Sie die Datei bearbeiten.

Sperren gehören sowohl zu einer Arbeitskopie als auch zu einer Person. Wenn Sie mehrere Arbeitskopien desselben Projekts (bei der Arbeit, daheim) haben, können Sie eine Datei nur in einer dieser Arbeitskopien sperren.

Wenn einer Ihrer Kollegen eine Datei sperrt und in Urlaub geht, ohne die Sperre vorher freizugeben, was dann? Subversion bietet Ihnen eine Möglichkeit, Sperren auszuhebeln. Eine Sperre freizugeben, die jemand anders besitzt, wird auch Sperre aufbrechen genannt. Sich eine Sperre zu holen, die jemand anders besitzt, wird auch Sperre stehlen genannt. Selbstverständlich sollten Sie dies nicht leichtfertig tun, wenn Sie sich weiterhin mit Ihren Kollegen gut stellen wollen.

Sperren werden im Projektarchiv verwaltet und eine Sperrmarke wird zusätzlich in Ihrer Arbeitskopie angelegt. Wenn es einen Unterschied zwischen diesen Werte gibt, weil zum Beispiel jemand eine Sperre aufgebrochen hat, wird die lokale Sperrmarke ungültig. Der Sperrstatus im Projektarchiv ist stets maßgeblich.

Eine Sperre erhalten

Markieren Sie die Datei(en) in Ihrer Arbeitskopie, für die Sie eine Sperre erhalten möchten und wählen Sie TortoiseSVNSperre holen....

Abbildung 4.58. Der Sperren-Dialog

Der Sperren-Dialog


Ein Dialog erscheint, in dem Sie einen Sperrkommentar eingeben können, damit andere wissen, warum Sie die Datei für sich reservieren. Der Kommentar ist optional und wird derzeit nur bei svnserve-basierten Projektarchiven genutzt. Wenn (und nur wenn) Sie eine Sperre von jemand anderem stehlen wollen, aktivieren Sie die Option Sperren stehlen, bevor Sie auf OK klicken.

Sie können die Projekteigenschaft tsvn:logtemplatelock setzen, um den Anwendern eine Schablone zum Erfassen der Sperrmeldung anzubieten. Lesen Sie in „Projekt-Einstellungen“ nach, wie Eigenschaften gesetzt werden.

Wenn Sie einen Ordner markieren und TortoiseSVNSperre Holen... aufrufen, wird der Sperr-Dialog mit jeder Datei in jedem zum Sperren ausgewählten Unterordner geöffnet. Wenn Sie wirklich eine ganze Ordnerstruktur sperren wollen, ist das der richtige Weg, es zu erreichen. Sie können sich damit allerdings bei Ihren Kollegen sehr unbeliebt machen, wenn Sie diese aus dem gesamten Projekt aussperren ...

Eine Sperre freigeben

Um sicherzustellen, dass Sie nicht vergessen, Sperren freizugeben, werden gesperrte Dateien im Übertragen-Dialog angezeigt und sind standardmäßig gewählt. Wenn Sie die Übertragung durchführen, werden die Sperren der markierten Dateien freigegeben, auch wenn die Dateien selbst sich nicht geändert haben. Wenn Sie die Dateisperren nicht freigeben wollen, können Sie die entsprechenden Dateien abwählen, vorausgesetzt, dass sie nicht modifiziert sind. Wenn Sie die Sperre für veränderte Dateien behalten wollen, müssen Sie vor der Übertragung die Option Sperren behalten aktivieren.

Um eine Sperre von Hand freizugeben, markieren Sie die gewünschten Datei(en) in Ihrer Arbeitskopie und wählen Sie TortoiseSVNSperre freigeben. TortoiseSVN wird das Projektarchiv kontaktieren und die Sperren dort freigeben. Sie können diesen Befehl auch für einen Ordner aufrufen, um alle Sperren rekursiv freizugeben.

Den Sperrstatus prüfen

Abbildung 4.59. Der Dialog Prüfe auf Änderungen

Der Dialog „Prüfe auf Änderungen“


Um zu sehen, welche Sperren Sie oder andere Personen besitzen, können Sie TortoiseSVNPrüfe auf Änderungen... aufrufen. Lokale Sperren werden sofort angezeigt. Damit Sie sehen können, welche Sperren von anderen gehalten werden und um festzustellen, ob Ihre Sperren aufgebrochen oder gestohlen wurden, müssen Sie Projektarchiv prüfen wählen.

Aus dem Kontextmenü dieses Dialogs heraus können Sie Sperren holen oder freigeben und auch Sperren von anderen stehlen oder aufbrechen.

Vermeiden Sie es, Sperren aufzubrechen oder zu stehlen

Wenn Sie die Sperre eines Kollegen stehlen oder aufbrechen, ohne ihm dies mitzuteilen, können Sie doppelte Arbeit verursachen. Wenn Sie mit nicht zusammenführbaren Dateien arbeiten und die Sperre eines anderen Benutzers stehlen, kann dieser Ihre Daten überschreiben, sobald Sie die Sperre freigeben. Subversion verliert zwar keine Daten, aber Sie haben den Schutz bei der Zusammenarbeit verloren, den Ihnen die Sperre gegeben hat.

Nicht gesperrte Dateien mit Schreibschutz versehen

Wie bereits erwähnt, ist der einfachste Weg, Sperren zu verwenden, die Eigenschaft svn:needs-lock auf Dateien zu setzen. Lesen Sie „Projekt-Einstellungen“, um zu erfahren, wie man Eigenschaften setzt. Dateien mit dieser Eigenschaft werden beim Aktualisieren und Auschecken stets mit einem Schreibschutz versehen, wenn die Arbeitskopie keine Sperre für die Datei besitzt.

Als Erinnerung zeigt TortoiseSVN dieses Symbol dafür an.

Wenn Sie ein Entwicklungsverfahren nutzen, das stets Dateisperren erfordert, ist es einfacher, die Subversion-Eigenschaft auto-props zu nutzen, um die Dateieigenschaften automatisch zu setzen, sobald Sie Dateien zum Projektarchiv hinzufügen. Lesen Sie „Eigenschaften automatisch setzen“ für weitere Information.

Aktionsskripte für Sperren

Wenn Sie ein neues Projektarchiv mit Subversion 1.2 anlegen, werden vier Schablonen für Aktionsskripte im hooks-Verzeichnis des Projektarchivs angelegt. Diese Aktionsskripte werden aufgerufen, bevor und nachdem eine Sperre geholt bzw. freigegeben wird.

Es ist eine gute Idee, ein post-lock- und ein post-unlock-Aktionsskript auf dem Server zu installieren, die eine Benachrichtigungs-E-Mail verschicken. Mit solch einem Skript können alle betroffenen Personen darüber informiert werden, wenn eine Datei gesperrt wurde. Sie finden das Beispielskript hooks/post-lock.tmpl in Ihrem Projektarchiv.

Vielleicht möchten Sie mit Aktionsskripten auch verhindern, dass jemand Sperren stiehlt oder aufbricht oder Sie möchten diese Möglichkeit auf Administratoren beschränken. Sie können mit einem Skript auch den Eigner der Sperre per E-Mail darüber informieren, wenn seine Sperre gestohlen wurde.

Lesen Sie „Serverseitige Aktionsskripte“ für weitere Informationen.

Erzeugen und Anwenden von Patches

In Open-Source-Projekten (wie diesem) hat jedermann Lesezugriff auf das Projektarchiv, und jeder kann einen Beitrag zum Projekt leisten. Wie sollen diese Beiträge nun kontrolliert werden? Wenn jeder stets seine Änderungen in das Projektarchiv übertragen würde, wäre das Projekt permanent instabil und wahrscheinlich nicht funktionsfähig. Dieses Problem wird gelöst, indem ein Patch an das Entwicklerteam geschickt wird. Die Entwickler können den Patch überprüfen und dann entweder in das Projektarchiv übertragen oder verwerfen und an den Autor zurückschicken.

Bei Patchdateien handelt es sich um einfache Standard-Diff-Dateien, die die Unterschiede zwischen Ihrer Arbeitskopie und der Basisrevision beinhalten.

Eine Patch-Datei erstellen

Zunächst müssen Sie Ihre Änderungen selbstverständlich selber testen. Statt den übergeordneten Ordner zum Projektarchiv zu TortoiseSVNÜbertragen..., wählen Sie TortoiseSVNPatch erzeugen...

Abbildung 4.60. Der Erzeuge Patch-Dialog

Der „Erzeuge Patch“-Dialog

Sie können nun die Dateien auswählen, die in den Patch aufgenommen werden sollen, genau wie bei einer vollständigen Übertragung. Dadurch wird eine einzige Datei erzeugt, die eine Zusammenfassung aller Änderungen enthält, die Sie seit der letzten Aktualisierung an den ausgewählten Dateien aus dem Projektarchiv vorgenommen haben.

Die Spalten in diesem Dialog können, genau wie im Auf Änderungen prüfen-Dialog, angepasst werden. Lesen Sie in „Prüfe auf Änderungen“ nach, wie das geht.

Durch Klicken auf die Schaltfläche Optionen können Sie festlegen, wie der Patch erstellt wird. Sie können z. B. angeben, dass Änderungen bei Zeilenenden oder Leerzeichen nicht in die endgültige Patch-Datei eingeschlossen werden sollen.

Sie können separate Patches für die verschiedenen Änderungen an den Dateien erzeugen. Wenn Sie jedoch eine Patchdatei erstellen, dann weitere Änderungen an denselben Dateien vornehmen und eine weitere Patchdatei erstellen, wird die zweite Patchdatei beide Sätze von Änderungen enthalten.

Speichern Sie die Datei unter einem Namen Ihrer Wahl. Patchdateien können jede beliebige Dateiendung haben. Eine Konvention ist jedoch, .patch dafür zu verwenden. Nun sind Sie soweit. Sie können Ihre Patchdatei an die Entwickler schicken.

Tipp

Speichern Sie die Patchdatei nicht mit einer .txt Erweiterung, wenn Sie vorhaben, sie per E-Mail zu verschicken. Einfache Textdateien werden oft durch die E-Mail-Programme umformatiert und der Patch lässt sich anschließend nicht mehr anwenden. Benutzen Sie bitte .patch oder .diff als Endung, wenn Sie die Datei speichern.

Sie können den Patch auch in der Zwischenablage statt einer Datei speichern, zum Beispiel, weil Sie den Patch per E-Mail zur Begutachtung weiterschicken wollen. Auch wenn sie zwei Arbeitskopien auf einem Rechner haben und gezielt Änderungen von einer in die andere übertragen wollen, ist ein Patch in der Zwischenablage der bequemste Weg.

Wenn Sie es vorziehen, können Sie eine Patchdatei innerhalb des Übertragen- oder des Auf Änderungen prüfen-Dialogs erstellen. Wählen Sie einfach die Dateien und erzeugen Sie per Kontextmenü einen Patch für diese Dateien. Wenn Sie die Optionen verändern wollen, halten Sie die Umschalt-Taste während des Rechtsklicks gedrückt.

Eine Patchdatei anwenden

Patchdateien werden stets innerhalb Ihrer Arbeitskopie angewendet. Dies muss innerhalb desselben Ordners durchgeführt werden, in dem die Patchdatei erstellt wurde. Wenn Sie nicht genau wissen, welcher Ordner das war, schauen Sie in die erste Zeile der Patchdatei. Wenn z. B. die erste bearbeitete Datei doc/source/deutsch/kapitel1.xml hieß und die erste Zeile in der Patchdatei Index: deutsch/kapitel1.xml lautet, dann müssen Sie den Patch auf den Ordner doc/source/ anwenden. Wenn Sie den Patch in der richtigen Arbeitskopie, aber nicht im richtigen Ordner anwenden, wird TortoiseSVN das bemerken und den Pfad vorschlagen, den es für richtig hält.

Um den Patch anwenden zu können, benötigen Sie zumindest Lesezugriff auf das Projektarchiv. Das Programm zum Zusammenführen (Patchen) der Daten muss eventuell auf dieses zurückgreifen, um die Änderungen auf die Revision im Projektarchiv zurückzuführen, auf der sie basieren.

Vom Kontextmenü des betroffenen Ordners aus wählen Sie TortoiseSVNPatch anwenden... Dies öffnet einen Dateidialog von TortoiseMerge, in dem sie die anzuwendende Patchdatei auswählen können. Standardmäßig werden nur .patch-Dateien angezeigt, aber sie können auch Alle Dateien auswählen. Wenn Sie einen Patch in der Zwischenablage gespeichert haben, können Sie Aus Zwischenablage öffnen... im Datei Öffnen-Dialog aufrufen. Beachten Sie bitte, dass diese Option nur zur Verfügung steht, wenn Sie den Patch aus dem Dialog TortoiseSVNErzeuge Patch... heraus in die Zwischenablage kopiert haben. Wenn Sie einen Patch auf andere Art in die Zwischenablage kopieren, erscheint die Schaltfläche nicht.

Wenn die Patchdatei die Erweiterung .patch oder .diff hat, können Sie mit einem Rechtsklick auf die Datei direkt TortoiseSVNPatch anwenden... wählen. In diesem Fall werden Sie gebeten, eine Arbeitskopie anzugeben.

Dies sind zwei verschiedene Wege, um das gleiche Ziel zu erreichen. Mit der ersten Methode geben Sie die Arbeitskopie vor und suchen die Patchdatei. Mit der zweiten Methode geben Sie die Patchdatei vor und suchen die Arbeitskopie.

Sobald Sie eine Datei gewählt haben, wird TortoiseMerge gestartet, um die Änderungen in Ihrer Arbeitskopie zusammenzuführen. Ein kleines Fenster listet die Dateien auf, die geändert wurden. Doppelklicken Sie nacheinander auf jede einzelne, überprüfen Sie die Änderungen und speichern Sie die zusammengeführten Dateien.

Die Patchdatei wurde nun in Ihrer Arbeitskopie angewendet, sodass die Veränderungen nun zum Projektarchiv übertragen werden müssen, um anderen Projektteilnehmern zur Verfügung zu stehen.

Wer hat welche Zeile geändert?

Manchmal möchten Sie nicht nur erfahren, welche Zeilen sich zwischen verschiedenen Revisionen geändert haben, sondern auch, wer genau für welche Zeile in einer Datei verantwortlich ist. Dazu gibt es den Befehl TortoiseSVNAnnotieren....

Dieser Befehl listet für jede Zeile einer Datei den Autor und die Revision der letzten Änderung dieser Zeile auf.

Annotieren für Dateien

Abbildung 4.61. Der Annotieren-Dialog

Der Annotieren-Dialog


Wenn Sie nur an den Änderungen in neueren Revisionen interessiert sind, können Sie die Revision festlegen, bei der das Annotieren beginnen soll. Wenn Sie jede Revision annotieren wollen, setzen Sie diesen Wert auf 1.

Standardmäßig wird die annotierte Datei in TortoiseBlame angezeigt, wobei die verschiedenen Revisionen hervorgehoben werden, um die Lesbarkeit zu erleichtern. Wenn Sie die annotierte Datei bearbeiten oder ausdrucken möchten, aktivieren Sie Betrachte Annotierungen im Texteditor.

Sie können festlegen, wie Änderungen an Zeilenumbrüchen und Leerzeichen behandelt werden sollen. Diese Optionen sind in „Zeilenende- und Leerzeichenoptionen“ beschrieben. Die Vorgabe ist, dass alle Zeilenende- und Leerzeichenänderungen als echte Änderungen behandelt werden. Wenn Sie solche Änderungen ignorieren und den Originalautor finden wollen, können Sie hier die entsprechende Option wählen.

Sie können sich, wenn gewünscht, auch die Informationen über zusammengeführte Revisionen anzeigen lassen. Diese Funktion benötigt wesentlich mehr Zeit, um die Daten vom Server abzurufen. Wenn Zeilen aus einer anderen Quelle integriert wurden, wird beim Annotieren die Revision angezeigt, in der die Änderung im Original vorgenommen wurde, sowie die Revision beim Zusammenführen in diese Datei.

Sobald Sie auf OK klicken, berechnet TortoiseSVN die Annotierungen für diese Datei. Sobald der Prozess abgeschlossen ist, wird das Ergebnis in eine temporäre Datei geschrieben und Sie können das Ergebnis betrachten.

Abbildung 4.62. TortoiseBlame

TortoiseBlame


TortoiseBlame, das zusammen mit TortoiseSVN installiert wird, macht eine solche Annotierung leichter lesbar. Wenn Sie mit dem Mauszeiger über eine Zeile in der linken Spalte fahren, werden alle Zeilen, die in derselben Revision geändert wurden, mit einer dunkleren Farbe dargestellt. Zeilen von anderen Revisionen, aber demselben Autor, werden mit einem helleren Hintergrund dargestellt. Die Einfärbung funktioniert eventuell nicht optimal, wenn Sie Ihren Monitor auf nur 256 Farben eingestellt haben.

Wenn Sie auf eine Zeile Linksklicken, werden alle Zeilen derselben Revision markiert und Zeilen von anderen Revisionen, aber demselben Autor, werden in einer anderen Farbe dargestellt. Diese Markierung bleibt bestehen, sodass Sie den Mauszeiger bewegen können, ohne die Einfärbung zu verlieren. Klicken Sie nochmals auf diese Revision, um die Markierung wieder aufzuheben.

Die Revisionskommentare (Logmeldungen) werden in einem Hinweistext angezeigt, wenn sich die Maus über der Informationsspalte befindet. Wenn Sie diese Logmeldung in die Zwischenablage kopieren wollen, benutzen Sie dazu das Kontextmenü, das bei einem Rechtsklick auf die Informationsspalte erscheint.

Sie können innerhalb der Annotierungen suchen, indem Sie BearbeitenSuchen... aufrufen. Diese Funktion erlaubt Ihnen, nach Revisionsnummern, Autoren und dem Inhalt der Datei selbst zu suchen. Logmeldungen werden nicht durchsucht. Für diese Funktion steht der Log-Dialog zur Verfügung.

Sie können auch mittels BearbeitenGehe zu Zeile... in eine bestimmte Zeile der Datei springen.

Wenn sich die Maus über den Informationsspalten im Annotieren-Fenster befindet, steht ein Kontextmenü zur Verfügung, das den Vergleich von Revisionen und die Untersuchung der Historie erleichtert, wobei die Revisionsnummer der Zeile unter der Maus als Referenz verwendet wird. KontextmenüVorherige Revision annotieren erzeugt eine Annotierung derselben Datei unter Verwendung der vorherigen Revisionsnummer als Obergrenze. Dies zeigt Ihnen den Zustand der Datei an, kurz bevor die Zeile, die Sie gerade betrachten, geändert wurde. KontextmenüZeige Änderungen startet das Vergleichsprogramm mit den Änderungen der Revision. KontextmenüZeige Log startet den Log-Dialog in der gewählten Revision.

Wenn Sie leichter erkennen möchten, wo die ältesten und die neuesten Änderungen sind, wählen Sie AnsichtFarbcodierung für Alter der Zeilen. Dann werden neue Zeilen in rot, ältere Zeilen in blau mit einem Farbgradienten hinterlegt. Die Standardfarben sind recht hell, können aber in den TortoiseBlame-Einstellungen geändert werden.

Wenn Sie die Änderungsverfolgung verwenden und die Zusatzinformation beim Annotieren angefordert haben, werden zusammengeführte Zeilen leicht unterschiedlich angezeigt. Wenn eine Zeile als Ergebnis des Zusammenführens mit einem anderen Pfad geändert wurde, zeigt TortoiseBlame die Revision und den Autor der letzten Änderung in der Originaldatei statt der Revision an, in der die Daten zusammengeführt wurden. Die entsprechenden Zeilen werden durch Kursivschrift hervorgehoben. Die Revision, in der die Änderungen zusammengeführt wurden, wird im Hinweistext angezeigt, sobald Sie mit der Maus über die Infospalten fahren. Wenn Sie nicht möchten, dass zusammengeführte Zeilen so angezeigt werden, deaktivieren Sie die Option Zusammenführen-Info einschließen, wenn Sie das Annotieren starten.

Wenn Sie die Pfade sehen wollen, die beim Zusammenführen beteiligt waren, wählen Sie AnsichtZusammengeführte Pfade. Dies zeigt den Pfad, in dem die Zeile zuletzt geändert wurde, mit Ausnahme von Änderungen, die sich aus einer Zusammenführung ergeben.

Die Revisionsnummer beim Annotieren repräsentiert die letzte Revision, bei der sich der Inhalt der Zeile geändert hat. Wenn die Datei als Kopie einer anderen Datei erstellt wurde, entspricht die Revision der letzten Änderung in der Originaldatei und nicht der Revision, in der die Datei kopiert wurde. Das gleiche Verhalten gilt auch für die Pfade, die beim Zusammenführen beteiligt waren. Der Pfad zeigt den Speicherort des Projektarchivs an, an dem die letzte Änderung an dieser Zeile vorgenommen wurde.

Die Einstellungen für TortoiseBlame können Sie überTortoiseSVNEinstellungen auf dem Karteireiter TortoiseBlame anpassen. Siehe „TortoiseBlame-Einstellungen“.

Unterschiede annotieren

Eine der Einschränkungen beim Annotieren ist, dass der Bericht nur die Datei in einer bestimmten Revision sowie die Personen anzeigt, die die letzten Änderungen an den Zeilen vorgenommen haben. Manchmal möchten Sie sehen, was genau durch wen geändert wurde. Dazu steht ein Kontextmenü zur Verfügung, mit dessen Hilfe Sie sich die Änderungen in einer bestimmten Revision anzeigen lassen können. Wenn Sie jedoch die Änderungen und die Annotierungen gleichzeitig sehen wollen, benötigen Sie eine Kombination dieser Berichte.

Der Log-Dialog bietet Ihnen mehrere Möglichkeiten dazu.

Revisionen annotieren

Selektieren sie im oberen Teil zwei Revisionen und wählen dann KontextmenüRevisionen annotieren. Dadurch wird die Annotierungsinformation für beide Revisionen geholt und anschließend das Vergleichsprogramm gestartet, um die zwei Annotierungen gegenüberzustellen.

Änderungen annotieren

Markieren Sie eine Revision in der oberen Liste und eine Datei aus der unteren Liste. Wählen Sie dann KontextmenüUnterschiede annotieren. Dies wird die Annotierungen für die gewählte sowie die vorherige Revision erstellen und im Vergleichsprogramm anzeigen.

Vergleiche und annotiere mit Arbeitskopie BASE

Zeigen Sie das Log für eine einzelne Datei an und markieren Sie in der oberen Liste eine einzelne Revision. Wählen Sie KontextmenüVergleiche und Annotiere mit Arbeitskopie BASE. Dies wird die Annotierungen für die gewählte Revision sowie für die BASE-Revision der Arbeitskopie erstellen und im Vergleichsprogramm anzeigen.

Projektarchivbetrachter

Vielleicht möchten Sie manchmal direkt im Projektarchiv Änderungen vornehmen, ohne eine Arbeitskopie zu haben oder gar auschecken zu müssen. In solchen Situationen kommt der Projektarchivbetrachter zum Einsatz. Was der Explorer und die überlagerten Symbole für Ihre Arbeitskopie sind, ist der Projektarchivbetrachter für das Projektarchiv.

Abbildung 4.63. Projektarchivbetrachter

Projektarchivbetrachter


Mit dem Projektarchivbetrachter können Sie Befehle wie kopieren, löschen, umbenennen ... direkt im Projektarchiv ausführen.

Der Projektarchivbetrachter sieht dem Windows Explorer sehr ähnlich. Im Gegensatz zu diesem zeigt er den Inhalt eines Projektarchivs anstelle von lokalen Dateien an. Auf der linken Seite sehen Sie einen Verzeichnisbaum und auf der rechten Seite den Inhalt des gewählten Verzeichnisses. In der Adresszeile können Sie die URL des Projektarchivs sowie die Revision angeben, die Sie betrachten wollen.

Ordner, die mit der Eigenschaft svn:externals eingeschlossen sind, werden auch im Projektarchivbetrachter angezeigt. Als Kennzeichnung dient ein kleiner Pfeil, um darauf hinzuweisen, dass sie nicht Teil des Projektarchivs sind, sondern nur Verweise.

Wie im Windows Explorer können Sie auf die Spaltenköpfe klicken, um den Inhalt zu sortieren. In beiden Bereichen stehen Ihnen Kontextmenüs zur Verfügung.

Das Kontextmenü einer Datei erlaubt Ihnen:

  • Die gewählte Datei entweder mit dem Standardprogramm für den Dateityp oder mit einem von Ihnen gewählten Programm öffnen.

  • Bearbeitet die gewählte Datei. Dies wird eine temporäre Arbeitskopie auschecken und den Standardeditor für diesen Dateityp aufrufen. Wenn Sie den Editor schließen, wird nach dem Speichern der Änderungen ein Übertragen-Dialog angezeigt, sodass Sie eine Logmeldung eingeben und die Änderung übertragen können.

  • Zeigt das Revisionslog der Datei oder den Graphen aller Revisionen, sodass Sie sehen können, woher die Datei stammt.

  • Annotiert jede Zeile der Datei mit dem Autor und dem Änderungsdatum.

  • Auschecken einer einzelnen Datei. Dies erstellt eine spärliche Arbeitskopie, die nur diese eine Datei enthält.

  • Datei löschen oder umbenennen.

  • Eine nicht versionierte Kopie der Datei auf Ihrer Festplatte speichern.

  • Kopiert die in der Adressleiste angezeigte URL in die Zwischenablage.

  • Erstellt eine Kopie der Datei entweder in einem anderen Teil des Projektarchivs oder in einer Arbeitskopie, die auf demselben Projektarchiv basiert.

  • Die Dateieigenschaften anzeigen/bearbeiten.

  • Erstellt eine Verknüpfung, sodass Sie den Projektarchivbetrachter schnell direkt an dieser Stelle wieder öffnen können.

Das Kontextmenü eines Ordners erlaubt Ihnen:

  • Zeigt das Revisionslog des Ordners oder den Graphen aller Revisionen, sodass Sie sehen können, woher der Ordner stammt.

  • Exportiert den Ordner in eine lokale unversionierte Kopie.

  • Checkt den Ordner in eine lokale Arbeitskopie aus.

  • Einen neuen Ordner im Projektarchiv anlegen.

  • Fügt nicht versionierte Dateien oder Ordner direkt dem Projektarchiv hinzu. Dies entspricht dem Subversion-Importvorgang.

  • Ordner löschen oder umbenennen.

  • Erstellt eine Kopie des Ordners, entweder in einem anderen Teil des Projektarchivs oder in einer Arbeitskopie, die auf demselben Projektarchiv basiert.

  • Ordnereigenschaften betrachten/ändern.

  • Markiert den Ordner für den Vergleich. Ein markierter Ordner wird durch Fettdruck gekennzeichnet.

  • Den Ordner mit einem bereits gewählten Ordner vergleichen. Sie können den Vergleich als Standard-Diff oder als Liste von Dateien anzeigen lassen, die Sie dann einzeln miteinander vergleichen. Diese Funktion ist sehr nützlich, wenn Sie z. B. herausfinden wollen, was sich zwischen zwei Marken geändert hat.

Wenn Sie im rechten Bereich zwei Ordner wählen, können Sie sich die Unterschiede entweder als Standard-Diff oder als Liste von Dateien anzeigen lassen, die Sie dann einzeln miteinander vergleichen.

Wenn Sie mehrere Ordner im rechten Bereich wählen, können Sie diese Ordner alle gleichzeitig in einen gemeinsamen Elternordner auschecken.

Wenn Sie zwei Marken wählen, die von derselben Basis erstellt wurden (typischerweise /trunk/), können Sie KontextmenüZeige Log... verwenden, um sich die Unterschiede zwischen den beiden Marken anzeigen zu lassen.

Externe Elemente (per svn:externals referenziert) werden auch im Projektarchivbetrachter angezeigt und Sie können sich sogar die Ordnerinhalte anschauen. Externe Elemente sind mit einem roten Pfeil über dem Element gekennzeichnet.

Sie können mit F5 die Anzeige aktualisieren. Wenn Sie die Daten von Knoten laden wollen, die bisher noch nicht geöffnet wurden, verwenden Sie dafür Strg+F5. Danach erfolgt das Öffnen eines Knotens ohne Verzögerung, da keine Informationen mehr über das Netzwerk geladen werden müssen.

Sie können den Projektarchivbetrachter auch für Ziehen und Ablegen-Aktionen verwenden. Wenn Sie eine Datei aus dem Explorer in den Projektarchivbetrachter ziehen, wird sie in das Projektarchiv importiert. Wenn Sie auf diese Weise mehrere Objekte gleichzeitig importieren, wird jedes Objekt in einer eigenen Revision importiert.

Wenn Sie ein Objekt innerhalb des Projektarchivs verschieben wollen, ziehen Sie es einfach mit der linken Maustaste an seinen neuen Ort. Wenn Sie stattdessen eine Kopie erstellen wollen, halten Sie dabei die Strg-Taste gedrückt. Beim Kopieren erhält der Mauszeiger wie im Explorer ein Plus-Symbol.

Wenn Sie eine Datei oder einen Ordner an einen anderen Platz kopieren/verschieben und gleichzeitig einen neuen Namen vergeben möchten, können Sie die Datei oder den Ordner mit Rechts-Ziehen oder Strg-Rechts-Ziehen statt Links-Ziehen verschieben. In diesem Fall wird ein Umbenennen-Dialog angezeigt, in dem Sie den neuen Namen für die Datei oder den Ordner eingeben können.

Immer, wenn Sie so Änderungen im Projektarchiv vornehmen, wird ein Log-Dialog zur Eingabe einer Logmeldung angezeigt. Wenn Sie versehentlich etwas verschoben haben, ist dies auch Ihre Chance, die Aktion abzubrechen.

Manchmal werden Sie, wenn Sie einen Pfad öffnen wollen, eine Fehlermeldung anstelle der Details erhalten. Das kann daran liegen, dass Sie eine falsche URL angegeben haben, nicht über entsprechende Zugriffsrechte verfügen oder dass ein Serverfehler vorliegt. Wenn Sie diese Meldung z. B. in eine E-Mail kopieren wollen, machen Sie einen Rechtsklick darauf und wählen Sie KontextmenüFehlermeldung in die Zwischenablage kopieren oder einfach Strg+C.

Lesezeichen für URLs/Projektarchive werden unterhalb der aktuellen Ordner in der linken Baumansicht angezeigt. Sie können Dateien oder Ordner perRechtsklickZu Lesezeichen hinzufügen. Per Klick auf ein Lesezeichen wechseln Sie zum entsprechenden Projektarchiv beziehungsweise Ordner.

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 Kopierquellen

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.

Eine Arbeitskopie exportieren

Es kommt vor, dass Sie eine saubere Kopie Ihres Projektes ohne die administrativen Ordner (.svn) benötigen, zum Beispiel, weil Sie das Projekt zippen oder auf einen Webserver exportieren möchten. Statt eine Kopie Ihrer Arbeitskopie zu erstellen und dann von Hand den .svn-Ordner zu löschen, können Sie den Befehl TortoiseSVNExport... verwenden. Exportieren von einer URL und von einer Arbeitskopie werden leicht unterschiedlich behandelt.

Abbildung 4.65. Der Dialog für Exportiere von URL

Der Dialog für Exportiere von URL


Wenn Sie diesen Befehl auf einem nicht versionierten Ordner ausführen, wird TortoiseSVN annehmen, dass es sich dabei um das Ziel des Exports handelt und einen Dialog anzeigen, in dem Sie die URL angeben können, von der exportiert werden soll. Dieser Dialog bietet die Optionen, nur den obersten Ordner zu exportieren, externe Verweise auszulassen und den Zeilenendestil für Dateien mit gesetzter Eigenschaft svn:eol-style zu überschreiben.

Selbstverständlich können sie auch direkt aus einem Projektarchiv exportieren. Benutzen Sie dazu den Projektarchivbetrachter, wählen den entsprechenden Pfad und benutzen dann das KontextmenüExport.... Ihnen wird dann der oben beschriebene Exportiere von URL-Dialog angezeigt.

Wenn Sie den Befehl in einer Arbeitskopie ausführen, werden Sie nach einem Ort gefragt, an dem Sie eine saubere Kopie Ihrer Arbeitskopie ohne den Ordner .svn speichern möchten. Standardmäßig werden nur die versionierten Dateien exportiert, aber Sie können mit der Option Exportiere alle Dateien festlegen, dass auch die nicht versionierten Dateien exportiert werden sollen. Externe Referenzen via svn:externals können, wenn gewünscht, ausgelassen werden.

Eine weitere Möglichkeit, aus einer Arbeitskopie zu exportieren, besteht darin, den Ordner selbst mittels Rechtsziehen an einen anderen Ort zu kopieren und dort KontextmenüSVN versionierte Objekte hierher exportieren oder KontextmenüSVN alle Objekte hierher exportieren oder KontextmenüSVN geänderte Objekte hierher exportieren zu wählen. Die zweite Option beinhaltet auch die nicht versionierten Objekte. Die dritte Option exportiert nur die geänderten Elemente, behält aber die Ordnerstruktur.

Wenn Sie eine Arbeitskopie exportieren und der Zielordner bereits einen Ordner mit dem gleichen Namen wie der zu exportierende enthält, können Sie auf Nachfrage den existierenden Ordner überschreiben oder einen neuen Ordner mit einem Suffix (n) anlegen lassen, z. B. Ziel (1).

Einzelne Dateien exportieren

Aus dem Exportdialog heraus können keine einzelnen Dateien exportiert werden, obwohl Subversion dazu in der Lage ist.

Um einzelne Dateien mit TortoiseSVN zu exportieren, müssen Sie den Projektarchivbetrachter verwenden („Projektarchivbetrachter“). Ziehen Sie einfach die Datei(en) mit Hilfe der Maus aus dem Projektarchivbetrachter in den Windows Explorer oder exportieren Sie die Datei über das Kontextmenü.

Exportieren von Baumänderungen

Wenn Sie eine Kopie Ihrer Projektstruktur exportieren wollen, die nur die zwischen zwei Revisionen geänderten Objekte enthält, verwenden Sie die in „Ordner vergleichen“ beschriebene Funktion zum Vergleichen von Revisionen.

Wenn Sie eine Kopie Ihrer Projektstruktur erstellen wollen, die nur die veränderten Dateien enthält, wählen Sie oben erwähnte Funktion SVN geänderte Objekte hierher exportieren.

Eine Arbeitskopie aus der Versionskontrolle entfernen

Wenn Sie eine Arbeitskopie in einen normalen Ordner zurück konvertieren wollen, müssen Sie nur das .svn-Verzeichnis aus der Basis der Arbeitskopie löschen.

Alternativ können Sie den Ordner auf sich selbst exportieren. Im Windows Explorer ziehen Sie dazu die Basis der Arbeitskopie aus dem Dateibereich in den Ordnerbereich. TortoiseSVN erkennt diesen Spezialfall und fragt, ob die Arbeitskopie nicht mehr versioniert sein soll. Wenn Sie mit Ja antworten, wird das Steuerverzeichnis entfernt und Sie erhalten eine normale, nicht versionierte Verzeichnisstruktur.

Eine Arbeitskopie umplatzieren

Abbildung 4.66. Der Umplatzieren-Dialog

Der Umplatzieren-Dialog


Sollte sich die URL bzw. die IP-Adresse Ihres Projektarchivs geändert haben (weil sich z. B. der DNS-Eintrag des Servers geändert hat), so müssen Sie nicht erneut eine ganze Arbeitskopie aus dem Projektarchiv auschecken. Es genügt, wenn Sie den Befehl TortoiseSVNUmplatzieren... ausführen und die neue URL angeben. Dieser Befehl setzt alle Verweise innerhalb der Arbeitskopie auf die neue URL des Projektarchivs.

Anmerkung

Dieser Vorgang funktioniert nur auf der Wurzel einer Arbeitskopie. Deshalb wird der Kontextmenüeintrag auch nur in diesem Fall angezeigt.

Es mag Sie überraschen, dass TortoiseSVN als Teil dieser Operation das Projektarchiv kontaktiert. Es müssen ein paar einfache Tests durchgeführt werden, um sicherzustellen, dass die neue URL wirklich auf das zur Arbeitskopie gehörige Projektarchiv verweist.

Warnung

Dies ist eine sehr selten durchgeführte Aktion. Der Umplatzieren-Befehl darf nur angewendet werden, wenn sich die URL der Arbeitskopie geändert hat. Mögliche Gründe dafür sind:

  • Die IP-Adresse des Servers hat sich geändert.

  • Das Protokoll hat sich geändert (z. B. von http:// in https://).

  • Der Basispfad des Projektarchivs hat sich in der Serverkonfiguration geändert.

Andersherum ausgedrückt: Sie müssen Ihre Arbeitskopie umplatzieren, wenn diese weiterhin auf die gleiche Stelle im selben Projektarchiv zeigt wie vorher, das Projektarchiv sich aber nun woanders befindet.

Es darf nicht umplatziert werden, wenn:

  • Sie wollen zu einem anderen Subversion Projektarchiv wechseln. In diesem Fall sollten Sie eine frische Arbeitskopie auschecken.

  • Sie wollen zu einem anderen Zweig oder Verzeichnis innerhalb desselben Projektarchivs wechseln. Dazu müssen Sie den Befehl TortoiseSVNWechseln zu... verwenden, der in „Auschecken oder Wechseln...“ beschrieben wird.

Wenn Sie fälschlicherweise in einem der oben genannten Fälle Ihre Arbeitskopie umplatzieren, wird diese ruiniert! Sie werden unerklärliche Fehlermeldungen beim Aktualisieren, Übertragen usw. erhalten. Sobald dies geschehen ist, müssen Sie Ihre Arbeitskopie frisch auschecken.

Integration mit einem System zur Fehlerverfolgung

Es ist in der Software-Entwicklung üblich, Änderungen am Quellcode mit einer spezifischen ID in einem Fehlerverfolgungssystem (Bugtracker) zu verbinden. Dies wird meist mittels eines pre-commit-Aktionsskripts im Projektarchiv erreicht, das vom Fehlerverfolgungssystem zur Verfügung gestellt wird und die Logmeldung einer Übertragung nach bestimmten Wörtern durchsucht. Dies ist jedoch sehr fehleranfällig, da der Benutzer sich merken muss, wie die Logmeldung auszusehen hat, damit das Aktionsskript dies auch richtig erkennen kann.

TortoiseSVN kann hier zweifach helfen:

  1. Wenn der Benutzer eine Logmeldung eingibt, kann eine vordefinierte Zeile automatisch der Logmeldung angehängt oder vorangestellt werden. Dies reduziert das Risiko, dass der Benutzer die Logmeldung falsch eingibt und das Aktionsskript die Eintragsnummer nicht mehr erkennen kann.

    Oder TortoiseSVN kann, während der Benutzer die Logmeldung eingibt, die Stelle in der Logmeldung hervorheben, die vom Aktionsskript als Eintragsnummer erkannt wird. Auf diese Weise hat der Benutzer eine visuelle Bestätigung für die Korrektheit der Logmeldung.

  2. Wenn der Benutzer die Logmeldungen im Log-Dialog ansieht, kann TortoiseSVN einen Verweis zum Eintrag erstellen und damit durch einen Klick den Web-Browser gleich auf die entsprechende Seite führen.

Eintragsnummern in Logmeldungen einfügen

Sie können ein Fehlerverfolgungssystem Ihrer Wahl in TortoiseSVN einbinden. Dafür müssen Sie ein paar Subversion-Eigenschaften definieren, die mit bugtraq: beginnen. Diese Eigenschaften müssen auf Ordner gesetzt werden: („Projekt-Einstellungen“)

Abbildung 4.67. Der Dialog Bugtraq-Eigenschaften

Der Dialog Bugtraq-Eigenschaften


Wenn Sie eine der Bugtraq-Eigenschaften bearbeiten, wird ein spezieller Editor verwendet, um die Eingabe zu erleichtern.

Es gibt zwei verschiedene Wege, um TortoiseSVN mit einem Fehlerverfolgungssystem zu verbinden. Ein Weg basiert auf einfachen Zeichenketten, der andere basiert auf Regulären Ausdrücken. Die Eigenschaften, die von beiden Methoden benutzt werden sind:

bugtraq:url

Hier geben Sie die URL zu Ihrem Fehlerverfolgungssystem ein. Die URL muss korrekt URI-codiert sein und %BUGID% enthalten. %BUGID% wird später durch die Eintragsnummer ersetzt. Dies ermöglicht es TortoiseSVN, einen direkten Verweis auf die Revision im Log-Dialog anzuzeigen, sodass Sie direkt dorthin springen können. Sie müssen diese Eigenschaft nicht setzen, aber wenn Sie sie weglassen, zeigt TortoiseSVN später nur die Eintragsnummer an und keinen Verweis. Ein Beispiel für TortoiseSVN wäre http://issues.tortoisesvn.net/?do=details&id=%BUGID%.

Sie können auch relative URLs anstelle von absoluten verwenden. Das ist nützlich, wenn Ihr Fehlerverfolgungssystem sich in derselben Domäne oder auf demselben Server befindet wie Ihr Projektarchiv. Falls sich der Domänenname ändern sollte, müssen Sie die Eigenschaft bugtraq:url nicht anpassen. Es gibt zwei Möglichkeiten, relative URLs zu definieren:

Wenn es mit der Zeichenkette ^/ beginnt, wird davon ausgegangen, dass es relativ zur Wurzel des Projektarchivs ist. Beispielsweise wird ^/../?do=details&id=%BUGID% in https://tortoisesvn.net/?do=details&id=%BUGID% aufgelöst, wenn sich Ihr Projektarchiv auf https://tortoisesvn.net/svn/trunk/ befindet.

Eine URL, die mit dem Zeichen / beginnt, wird als relativ zum Hostnamen des Servers angesehen. Zum Beispiel wird /?do=details&id=%BUGID% in https://tortoisesvn.net/?do=details&id=%BUGID% aufgelöst, wenn sich Ihr Projektarchiv irgendwo auf https://tortoisesvn.net befindet.

bugtraq:warnifnoissue

Wenn die Eigenschaft auf true gesetzt ist, warnt Sie TortoiseSVN, falls das Feld für die Eintragsnummer im Übertragen-Dialog leer gelassen wurde. Das ist nur eine Erinnerungshilfe, falls der Benutzer die Eingabe vergessen hat. Gültige Werte: true/false. Wenn keine Eigenschaft definiert ist, wird false angenommen.

Eintragsnummer in einem Textfeld

In der einfachen Variante zeigt TortoiseSVN dem Benutzer ein zusätzliches Eingabefeld für die Eintragsnummer an. Es wird dann der Logmeldung eine zusätzliche Zeile angehängt oder vorangestellt.

bugtraq:message

Diese Eigenschaft aktiviert das Fehlerverfolgungssystem im Eingabefeld-Modus. Wenn sie gesetzt ist, wird TortoiseSVN Sie auffordern, beim Übertragen eine Eintragsnummer anzugeben. Sie wird benutzt, um eine Extrazeile an das Ende der Logmeldung anzufügen. Dafür muss sie den Text %BUGID% enthalten, der beim Übertragen durch die Eintragsnummer ersetzt wird. Mithilfe dieses Textes kann Ihr Fehlerverfolgungssystem die Logmeldungen analysieren und die Revisionen einem Eintrag zuordnen. TortoiseSVN benutzt z. B. Issue : %BUGID%, aber das hängt von Ihrem Programm ab.

bugtraq:label

Dieser Text wird von TortoiseSVN im Übertragen-Dialog angezeigt. Er beschreibt das Eingabefeld für die Eintragsnummer. Wird er weggelassen, wird Fehler-ID / Eintrags-Nr: angezeigt. Beachten Sie bitte, dass der Text nicht zu lang ist, da er sonst eventuell einfach abgeschnitten wird. Empfohlen werden maximal 20 bis 25 Zeichen.

bugtraq:number

Auf true gesetzt, werden nur Zahlen im Eingabefeld akzeptiert. Eine Ausnahme bildet das Komma, damit Sie es als Trennzeichen für mehrere Zahlen verwenden können. Gültige Werte sind: true/false. Wenn nichts angegeben ist, wird true angenommen.

bugtraq:append

Diese Eigenschaft definiert, ob die Eintragsnummer an das Ende angehängt (true) oder vor der Logmeldung (false) eingefügt wird. Gültige Werte sind: true/false. Wenn nichts angegeben ist, wird true angenommen, um existierende Projekte nicht zu beschädigen.

Eintragsnummern mittels regulärer Ausdrücke

In der Variante mit den Regulären Ausdrücken zeigt TortoiseSVN kein separates Eingabefeld an, sondern hebt den Teil der Logmeldung hervor, der als Eintragsnummer erkannt wird. Die Erkennung erfolgt, während der Benutzer die Logmeldung eingibt. Das bedeutet auch, dass die Eintragsnummer irgendwo in der Logmeldung stehen kann und nicht nur in einer separaten Zeile. Diese wesentlich flexiblere Methode wird vom TortoiseSVN-Projekt verwendet.

bugtraq:logregex

Diese Eigenschaft aktiviert das Fehlerverfolgungssystem im RegEx-Modus. Sie enthält entweder ein oder zwei reguläre Ausdrücke, die durch einen Zeilenumbruch getrennt werden.

Wenn zwei Ausdrücke definiert sind, ist der erste Ausdruck ein Vorfilter, mit dem Zeichenfolgen gefunden werden, die Eintrags-IDs enthalten. Der zweite Ausdruck extrahiert dann die Eintrags-IDs aus dem Ergebnis des ersten. Das ermöglicht es Ihnen, Eintrags-IDs auf natürliche Art in die Beschreibung einfließen zu lassen, z. B. Diese Änderung erledigt die Fehler #23, #24 und #35.

Wenn Sie, wie im obigen Beispiel, Zeichenketten in einer Logmeldung finden möchten, können Sie dazu die folgenden beiden regulären Ausdrücke verwenden: [Ff]ehler:?(\s*(,|und)?\s*#\d+)+ sowie (\d+) als zweiten Ausdruck.

Der erste Ausdruck schneidet Fehler #23, #24 und #35 aus der umgebenden Logmeldung. Der zweite Ausdruck extrahiert die reinen Dezimalzahlen aus der Ausgabe des ersten Ausdrucks. Er gibt also 23, 24 und 25 als Eintrags-IDs zurück.

Eine kleine Erklärung des ersten regulären Ausdrucks: Er sucht nach einem Text, der mit Fehler beginnt, alternativ klein geschrieben. Danach kann ein Doppelpunkt folgen. Darauf folgen eine oder mehrere Gruppen, bestehend aus null oder mehr führenden Leerzeichen, einem optionalen Komma oder und sowie möglicherweise weiteren Leerzeichen. Abschließend werden ein # und eine Dezimalzahl gesucht.

Wenn nur ein regulärer Ausdruck gesetzt ist, dann müssen alleine mit ihm die Eintragsnummern in den Gruppen des Ausdrucks gefunden werden. Als Beispiel: [Ii]ssue(?:s)? #?(\d+). Diese Methode wird von einigen Fehlerverfolgungssystemen, wie z. B. Trac verwendet. Es ist jedoch schwieriger, einen passenden regulären Ausdruck zu konstruieren. Wir empfehlen, dass Sie diese Methode nur verwenden, wenn Ihr Fehlerverfolgungssystem dies erfordert.

Wenn Sie sich mit regulären Ausdrücken noch nicht so gut auskennen, lesen Sie sich die Einführung unter https://de.wikipedia.org/wiki/Regulärer_Ausdruck sowie die Online-Dokumentation und -Anleitung auf https://www.regular-expressions.info/ durch.

Es ist nicht immer einfach, einen regulären Ausdruck korrekt zu definieren. Als Hilfsmittel gibt es einen Testdialog, der im bugtraq-Eigenschaftendialog integriert ist. Klicken Sie auf die Schaltfläche rechts vom Eingabefeld, um ihn anzuzeigen. Hier können Sie einen Testtext eingeben und jeden regulären Ausdruck ändern, um die Ergebnisse zu sehen.

Wenn sowohl die Eigenschaft bugtraq:message als auch bugtraq:logregex gesetzt ist, erhält logregex Vorrang.

Tipp

Auch wenn Sie gar kein Fehlerverfolgungssystem mit einem pre-commit-Aktionsskript haben, können Sie diese Funktion dazu nutzen, Eintragsnummern, die Sie in Ihren Logmeldungen erwähnt haben, in einen Verweis zum Fehlerverfolgungssystem zu verwandeln.

Auch wenn Sie die Verweise selbst nicht benötigen, können Sie Änderungen zu einer bestimmten Nummer einfach finden, denn die Eintragsnummern werden in separaten Spalten im Log-Dialog angezeigt.

Manche tsvn:-Eigenschaften erfordern einen true/false-Wert. TortoiseSVN versteht auch yes als Synonym für true und no als Synonym für false.

Setzen Sie die Eigenschaften auf Ordner

Die obigen Eigenschaften müssen auf Ordner gesetzt sein, damit das System richtig funktioniert. Beim Übertragen werden die Eigenschaften des aktuellen Ordners gelesen. Wenn die Eigenschaften nicht gefunden werden, sucht TortoiseSVN nach oben durch die Ordnerstruktur, bis es auf einen nicht versionierten Ordner oder die Wurzel (z. B. C:\) stößt. Wenn Sie sicher sein können, dass jeder Benutzer z. B. von trunk/ und nicht aus einem Unterordner auscheckt, definieren Sie die Eigenschaften nur für trunk/. Wenn Sie nicht sicher sein können, definieren Sie die Eigenschaft rekursiv für jeden Unterordner. Eigenschaften in einem Unterordner überschreiben die Einstellungen in einem übergeordneten Ordner (näher an trunk/).

Ab Subversion 1.8 verwenden TortoiseSVN und Subversion sogenannte vererbte Eigenschaften. Das bedeutet, dass eine Ordnereigenschaft automatisch auch für alle Unterordner gilt. Deshalb ist es nicht erforderlich, die Eigenschaften für alle Ordner zu setzen, sondern nur noch für den Wurzelordner.

Ausschließlich für Projekteigenschaften, z. B. tsvn:, bugtraq: und webviewer:, können Sie die Rekursiv-Option wählen, um die Eigenschaft auf alle Unterordner zu übertragen, ohne sie gleichzeitig auch für alle Dateien zu setzen.

Wenn Sie mit TortoiseSVN neue Unterordner zu einer Arbeitskopie hinzufügen, werden sämtliche Projekteigenschaften des Elternordners auf den Unterordner übertragen.

Keine Fehlerverfolgungsinformationen im Projektarchivbetrachter

Da die Integration mit Fehlerverfolgungssystemen vom Zugriff auf Subversion-Eigenschaften abhängt, sehen Sie die Ergebnisse nur in einer Arbeitskopie. Da das Holen der Eigenschaften von einem Server eine zeitintensive Operation ist, steht diese Funktion im Projektarchivbetrachter nicht zur Verfügung, es sei denn, er wurde aus der Arbeitskopie heraus gestartet. Wenn Sie die URL des Projektarchivs direkt eingeben, steht die Funktion nicht zur Verfügung.

Aus dem gleichen Grund werden Projekteigenschaften nicht automatisch weitergereicht, wenn ein Unterordner im Projektarchivbetrachter angelegt wird.

Die Integration mit Fehlerverfolgungssystemen ist nicht auf TortoiseSVN limitiert, sie kann von jedem Subversion-Client benutzt werden. Für weitere Informationen hierzu lesen Sie bitte die Issuetracker Integration Specification im TortoiseSVN-Projektarchiv. („Lizenz“ erklärt, wie man auf das TortoiseSVN-Projektarchiv zugreift).

Informationen vom Fehlerverfolgungssystem beziehen

Der vorherige Abschnitt befasste sich damit, Eintragsnummern zu den Logmeldungen hinzuzufügen. Aber wie bekommt man Informationen aus dem Fehlerverfolgungssystem? Der Übertragen-Dialog besitzt eine Windows-COM-Schnittstelle, mit deren Hilfe ein externes Programm eingebunden werden kann, das mit dem Fehlerverfolgungssystem kommuniziert. Ein typischer Fall wäre, das Fehlerverfolgungssystem nach einer Liste der Ihnen zugeordneten offenen Aufgaben zu fragen, die Sie beim Übertragen als erledigt markieren wollen.

So eine Schnittstelle ist natürlich sehr spezifisch für Ihr System, sodass wir diesen Teil nicht zur Verfügung stellen können. Die Beschreibung eines solchen Programms sprengt den Rahmen dieses Handbuchs. Die Schnittstellendefinition und Beispielmodule in C# und C++/ATL können Sie im contrib-Ordner des TortoiseSVN-Projektarchivs finden. („Lizenz“ erklärt, wie man auf das TortoiseSVN-Projektarchiv zugreift.) Eine Zusammenfassung der API findet sich in Kapitel 7, IBugtraqProvider-Schnittstelle. Ein weiteres funktionierendes Beispiel in C# ist Gurtle, das die COM-Schnittstelle für den Zugriff auf das Google Code-Fehlerverfolgungssystem implementiert.

Lassen Sie uns zur Veranschaulichung annehmen, dass Ihr Systemadministrator Sie mit einem Modul für Ihr Fehlerverfolgungssystem versorgt hat, das Sie installiert haben. Ferner haben Sie im TortoiseSVN-Einstellungsdialog einige Ihrer Arbeitskopien so eingerichtet, dass diese die Integration der Fehlerverfolgung nutzen. Wenn Sie nun den Übertragen-Dialog in einer der Arbeitskopien aufrufen, denen das Modul zugewiesen ist, sehen Sie oben im Dialog eine neue Schaltfläche.

Abbildung 4.68. Beispielabfrage des Fehlerverfolgungssystems

Beispielabfrage des Fehlerverfolgungssystems


In diesem Beispiel können Sie eine oder mehrere offene Aufgaben auswählen. Das Modul kann dann automatisch Text für Ihre Logmeldung generieren.

Integration mit webbasierten Projektarchivbetrachtern

Es gibt mehrere webbasierte Projektarchivbetrachter, die mit Subversion eingesetzt werden können, zum Beispiel: ViewVC und WebSVN. TortoiseSVN bietet Ihnen eine Integrationsmöglichkeit mit diesen Betrachtern an.

Sie können einen Projektarchivbetrachter Ihrer Wahl in TortoiseSVN einbinden. Dafür müssen Sie ein paar Eigenschaften angeben, die den Verweis definieren. Diese Eigenschaften müssen für Ordner gesetzt werden: („Projekt-Einstellungen“)

webviewer:revision

Setzen Sie diese Eigenschaft auf die URL Ihres Projektarchivbetrachters, mit der Sie alle Änderungen einer bestimmten Revision sehen können. Sie muss korrekt URI-codiert sein und %REVISION% enthalten. %REVISION% wird durch die gewünschte Revisionsnummer ersetzt. Dies ermöglicht TortoiseSVN, im Log-Dialog ein Kontextmenü KontextmenüBetrachte Revision im Web-Browser anzuzeigen.

webviewer:pathrevision

Setzen Sie diese Eigenschaft auf die URL, mit der Sie Änderungen an einer Datei in einer bestimmten Revision sehen können. Sie muss korrekt URI-codiert sein sowie %REVISION% und %PATH% enthalten. %PATH% wird durch den Pfad relativ zur Projektarchivbasis ersetzt. Dies ermöglicht TortoiseSVN, im Log-Dialog ein Kontextmenü KontextmenüBetrachte Revision eines Pfades im Web anzuzeigen. Wenn Sie zum Beispiel im Log-Dialog auf eine Datei /trunk/src/file klicken, wird %PATH% in der URL durch /trunk/src/file ersetzt.

Sie können auch relative URLs anstelle von absoluten verwenden. Das ist nützlich, wenn Ihr Web-Betrachter sich in derselben Domäne oder auf demselben Server befindet wie Ihr Projektarchiv. Wenn sich der Domänenname ändern sollte, müssen Sie die Eigenschaften webviewer:revision und webviewer:pathrevision nicht anpassen. Das Format ist dasselbe wie bei der Eigenschaft bugtraq:url und in „Integration mit einem System zur Fehlerverfolgung“ erklärt.

Setzen Sie die Eigenschaften auf Ordner

Die obigen Eigenschaften müssen auf Ordner gesetzt sein, damit das System richtig funktioniert. Beim Übertragen werden die Eigenschaften des aktuellen Ordners gelesen. Wenn die Eigenschaften nicht gefunden werden, sucht TortoiseSVN nach oben durch die Ordnerstruktur, bis es auf einen nicht versionierten Ordner oder die Wurzel (z. B. C:\) stößt. Wenn Sie sicher sein können, dass jeder Benutzer z. B. von trunk/ und nicht aus einem Unterordner auscheckt, definieren Sie die Eigenschaften nur für trunk/. Wenn Sie nicht sicher sein können, definieren Sie die Eigenschaft rekursiv für jeden Unterordner. Eigenschaften in einem Unterordner überschreiben die Einstellungen in einem übergeordneten Ordner (näher an trunk/).

Ausschließlich für Projekteigenschaften, z. B. tsvn:, bugtraq: und webviewer:, können Sie die Rekursiv-Option wählen, um die Eigenschaft auf alle Unterordner zu übertragen, ohne sie gleichzeitig auch für alle Dateien zu setzen.

Wenn Sie mit TortoiseSVN neue Unterordner zu einer Arbeitskopie hinzufügen, werden sämtliche Projekteigenschaften des Elternordners auf den Unterordner übertragen.

Einschränkungen des Projektarchivbetrachters

Da die Integration des Projektarchivbetrachters vom Zugriff auf Subversion-Eigenschaften abhängt, sehen Sie die Ergebnisse nur in einer Arbeitskopie. Da das Holen der Eigenschaften von einem Server eine zeitintensive Operation ist, steht diese Funktion im Projektarchivbetrachter nicht zur Verfügung, es sei denn, er wurde aus der Arbeitskopie heraus gestartet. Wenn Sie die URL des Projektarchivs direkt eingeben, steht die Funktion nicht zur Verfügung.

Aus dem gleichen Grund werden Projekteigenschaften nicht automatisch weitergereicht, wenn ein Unterordner im Projektarchivbetrachter angelegt wird.

TortoiseSVN-Einstellungen

Um zusätzliche Hilfe für bestimmte Einstellungen zu erhalten, lassen Sie den Mauszeiger eine Sekunde lang über den Eingabefeldern, Optionsfeldern ... und es wird ein kleiner Tipp erscheinen.

Allgemeine Einstellungen

Abbildung 4.69. Der Einstellungsdialog, Allgemein

Der Einstellungsdialog, Allgemein


Dieser Dialog erlaubt, Ihnen die Sprache der Anwenderoberfläche sowie einige Subversion-Parameter einzustellen.

Sprache

Stellt die Sprache für die Benutzerschnittstelle ein. Damit Ihnen andere Sprachen als Englisch angezeigt werden, müssen Sie zunächst das entsprechende Sprachpaket installieren.

Auf Aktualisierungen prüfen

TortoiseSVN wird regelmäßig seine Downloadseite überprüfen, ob eine neue Version zur Verfügung steht. Mittels Jetzt prüfen können Sie eine sofortige Prüfung veranlassen. Die neue Version wird nicht heruntergeladen. Sie erhalten lediglich Auskunft darüber, ob Ihre derzeitige Version noch aktuell ist.

TortoiseSVN-Klänge

TortoiseSVN liefert drei eigene Klänge mit, die automatisch installiert werden.

  • Fehler

  • Hinweis

  • Warnung

Sie können andere Klänge in der Windows Systemsteuerung unter Sounds und Audiogeräte festlegen (und dort auch deaktivieren). Die Schaltfläche Einrichten bietet eine Abkürzung zur Systemsteuerung.

Verwende Aero-Dialoge

Unter Windows Vista und späteren Systemen steuert dies, ob Dialoge das Aero-Design verwenden.

Bibliothek erstellen

Unter Windows 7 können Sie eine Bibliothek erstellen, in der Sie Arbeitskopien zusammenfassen können, die an verschiedenen Orten auf Ihrem System verstreut sind.

Globale Ignoriermuster

Globale Ignoriermuster sorgen dafür, dass bestimmte unversionierte Dateien nicht angezeigt werden, z. B. im Übertragen-Dialog. Außerdem werden solche Dateien beim Importieren in ein Projektarchiv ignoriert. Schließen Sie Dateien oder Ordner durch Angabe von Dateinamen oder Erweiterungen aus. Die einzelnen Muster werden durch Leerzeichen voneinander getrennt, zum Beispiel bin obj *.bak *.~?? *.jar *.[Tt]mp. Diese Muster dürfen keine Pfadtrennzeichen enthalten. Beachten Sie auch, dass es keine Möglichkeit gibt, zwischen Dateien und Ordnern zu unterscheiden. Lesen Sie weitere Informationen zur Syntax in „Platzhalter in der Ignorierliste“ nach.

Beachten Sie, dass die Ignoriermuster, die Sie hier einstellen, auch andere Subversion-Clients inklusive der Subversion-Kommandozeile auf Ihrem PC beeinflussen.

Achtung

Wenn Sie die Subversion-Konfigurationsdatei verwenden, um ein global-ignores-Muster zu definieren, wird das die TortoiseSVN-Einstellungen überlagern. Die Subversion-Konfigurationsdatei kann über die Bearbeiten-Schaltfläche geändert werden.

Dieses Ausschlussmuster beeinflusst alle Ihre Projekte. Es ist nicht versioniert, also wird es keine anderen Anwender beeinflussen. Im Gegensatz dazu können Sie auch die versionierte Eigenschaft svn:ignore oder svn:global-ignores verwenden, um Dateien oder Verzeichnisse von der Versionskontrolle auszuschließen. Lesen Sie „Ignorieren von Dateien und Ordnern“ für weitere Information.

Dateidatum auf Datum der letzten Übertragung setzen

Diese Einstellung zwingt TortoiseSVN, das Dateidatum beim Auschecken oder Aktualisieren auf das Datum der letzten Übertragung der Datei zu setzen. Ansonsten verwendet TortoiseSVN das aktuelle Datum. Wenn Sie Software entwickeln, ist es normalerweise am besten, das aktuelle Datum zu verwenden. Systeme zum automatischen Erstellen von Software greifen normalerweise auf die Zeitstempel zurück, um zu entscheiden, ob eine Datei übersetzt werden soll. Wenn Sie das Datum der letzten Übertragung verwenden und auf eine ältere Dateiversion zurückgreifen, kann es passieren, dass sich das Projekt nicht wie erwartet übersetzen lässt.

Subversion-Konfigurationsdatei

Mittels Bearbeiten können Sie die Subversion-Konfigurationsdatei in einem Standard-Texteditor öffnen. Einige Einstellungen können nicht mit TortoiseSVN vorgenommen werden, sondern nur direkt in der Konfigurationsdatei geändert werden. Für mehr Informationen über die Subversiondatei config lesen Sie bitte das Kapitel Laufzeit-Konfigurationsbereich des Subversion-Buchs. Der Abschnitt Automatisches Setzen von Eigenschaften ist hier auch von Interesse. Beachten Sie bitte, dass Subversion seine Einstellungen nacheinander an verschiedenen Stellen sucht. Die Reihenfolge und die Prioritäten werden in Konfiguration und die Windows-Registrierungsdatenbank erklärt.

Lokale Änderungen beim Aktualisieren auf svn:externals anwenden

Diese Option weist TortoiseSVN an, stets lokale Änderungen auf die Eigenschaft svn:externals anzuwenden.

Einstellungen für das Kontextmenü

Abbildung 4.70. Der Einstellungsdialog, Kontextmenü

Der Einstellungsdialog, Kontextmenü


Auf dieser Seite können Sie einstellen, welche Einträge des TortoiseSVN-Kontextmenüs im Hauptmenü und welche im TortoiseSVN-Untermenü erscheinen sollen. Standardmäßig sind die meisten Einträge abgewählt und erscheinen im Untermenü.

Es gibt einen Sonderfall für Hole Sperre. Sie können diese Funktion natürlich in die oberste Ebene verschieben, aber da die meisten Dateien keine Sperre benötigen, wird es dadurch nur unübersichtlich. Andererseits erfordert eine Datei mit der svn:needs-lock diese Aktion jedes Mal, weshalb die Funktion in diesem Falle auf der obersten Ebene nützlich wäre. Wenn Sie diese Option markieren, wird Hole Sperre in der obersten Menüebene angezeigt, sobald eine Datei mit der Eigenschaft svn:needs-lock markiert wird.

Die meiste Zeit werden Sie das TortoiseSVN-Kontextmenü, außer bei versionierten Ordnern, nicht benötigen. Bei nicht versionierten Ordnern ist das Kontextmenü eigentlich nur zum Auschecken erforderlich. Wenn Sie die Option Menüs für nicht versionierte Pfade verbergen aktivieren, wird TortoiseSVN keine Kontextmenüeinträge zu unversionierten Ordnern hinzufügen. Bei versionierten Dateien und Ordnern werden die Einträge stets hinzugefügt. Sie können die Anzeige der TortoiseSVN-Kontextmenüeinträge bei unversionierten Ordnern erzwingen, indem Sie die Umschalt-Taste gedrückt halten, während sie das Kontextmenü anzeigen.

Wenn es Pfade auf Ihrem Computer gibt, in denen das TortoiseSVN-Kontextmenü nicht angezeigt werden soll, geben Sie diese im Eingabefeld unten an.

TortoiseSVN-Dialog, Seite 1

Abbildung 4.71. Der Einstellungsdialog, Seite 1

Der Einstellungsdialog, Seite 1


In diesem Dialog können Sie das Verhalten einiger TortoiseSVN-Dialoge einstellen.

Anzahl der angezeigten Logmeldungen

Beschränkt die Anzahl der angezeigten Logmeldungen, die TortoiseSVN vom Projektarchiv holt, wenn Sie TortoiseSVNZeige Log zum ersten Mal aufrufen. Nützlich bei langsamen Verbindungen zum Projektarchiv. Sie können jederzeit mehr Logmeldungen mittels Nächste 100 oder Zeige Alle anzeigen lassen.

Zeichensatz für Logmeldungen

Legt die Schriftart und Größe fest, in der Logmeldungen im Log-Dialog angezeigt und im Übertragen-Dialog eingegeben werden.

Kurzes Datums- und Zeit-Format in Logmeldungen

Wenn die standardmäßig angezeigten langen Datums-/Zeitangaben zu viel Platz einnehmen, können Sie hier TortoiseSVN anweisen, das kurze Format zu verwenden.

Zum Vergleich mit der vorherigen Revision in der Log-Liste doppelklicken

Wenn Sie häufig im oberen Bereich des Log-Dialogs Revisionen vergleichen, können Sie diese Aktion aktivieren, damit der Vergleich per Doppelklick erfolgt. Sie ist standardmäßig deaktiviert, weil das Erstellen des Vergleichs manchmal eine langwierige Operation ist und viele die Wartezeit bei einem versehentlichen Doppelklick vermeiden wollen.

Automatisch schließen

TortoiseSVN kann den Fortschrittsdialog automatisch schließen, wenn der Befehl ohne Fehler ausgeführt wurde. Diese Einstellung erlaubt Ihnen, die Bedingungen zu setzen, um den Dialog automatisch zu schließen. Die Standard-Einstellung (empfohlen) Manuell schließen erlaubt es Ihnen, alle Meldungen nach jeder Aktion genau zu studieren. Wenn Sie möchten, können Sie den Dialog auch automatisch schließen lassen, wenn keine kritischen Ereignisse aufgetreten sind.

Schließen, falls kein Löschen, Hinzufügen oder Zusammenführen lässt den Dialog nur offen, wenn keine Dateien zusammengeführt, hinzugefügt oder gelöscht wurde. Auch Konflikte und Fehler sorgen dafür, dass der Dialog geöffnet bleibt.

Schließen, falls keine Konflikte schließt den Dialog automatisch, wenn keine Konflikte oder Fehlermeldungen aufgetreten sind.

Schließen, falls keine Fehler schließt den Dialog automatisch, auch wenn Konflikte aufgetreten sind. Der Dialog bleibt jedoch offen, wenn Fehler aufgetreten sind, die verhindert haben, dass Subversion die Aktion ausführen konnte, wenn zum Beispiel der Server nicht erreichbar oder die Arbeitskopie veraltet ist.

Dialoge nach lokalen Operationen immer schließen

Lokale Operationen wie das Hinzufügen von Dateien oder Zurücksetzen von Änderungen benötigen keinen Kontakt zum Projektarchiv und sind schnell beendet, sodass ihr Fortschritt von geringem Interesse ist. Wählen Sie diese Option, wenn sich der Fortschrittsdialog automatisch nach diesen Operationen schließen soll, außer, wenn Fehler aufgetreten sind.

Verwende Papierkorb bei Rückgängig

Wenn Sie lokale Änderungen zurücknehmen, werden diese verworfen. TortoiseSVN bietet Ihnen ein zusätzliches Sicherheitsnetz an, indem es die veränderten Dateien in den Papierkorb verschiebt, bevor der Originalzustand wiederhergestellt wird.

Nutze die URL der Arbeitskopie als Von:-URL

Im Zusammenführen-Dialog wird normalerweise die Von:-URL zwischen zwei Aufrufen gespeichert und als Vorgabe eingestellt. Manchmal möchten Anwender jedoch von vielen verschiedenen Punkten in der Projekthierarchie aus Daten zusammenführen und finden es einfacher, mit der URL der aktuellen Arbeitskopie als Vorgabe zu beginnen. Diese kann dann verändert werden, um auf einen parallelen Pfad oder einen Zweig zu verweisen.

Auschecken-Standardpfad

Sie können einen Standardpfad zum Auschecken festlegen. Wenn Sie all Ihre Arbeitskopien in einem Ordner haben, können Sie diesen Pfad als Vorbelegung hier einstellen, sodass Sie nur noch den Ordnernamen anhängen müssen.

Auschecken-Standard-URL

Sie können außerdem eine Standard-URL zum Auschecken festlegen. Wenn Sie häufiger Unterprojekte eines großen Projektarchivs bearbeiten, kann es nützlich sein, die URL mit dem Basispfad vorzubelegen, sodass Sie nur noch den Projektnamen anhängen müssen.

TortoiseSVN-Dialog, Seite 2

Abbildung 4.72. Der Einstellungsdialog, Seite 2

Der Einstellungsdialog, Seite 2


Rekursiv in nicht versionierte Ordner gehen

Wenn diese Option aktiviert ist (Vorgabe), werden jedes Mal, wenn ein nicht versionierter Ordner im Hinzufügen, Übertragen oder Prüfe auf Änderungen Dialog angezeigt wird, sämtliche Unterordner und Dateien dieses Ordners angezeigt. Sobald Sie die Option deaktivieren, wird nur der nicht versionierte Elternordner angezeigt. Das erhöht die Übersichtlichkeit in diesen Dialogen. Wenn Sie einen nicht versionierten Ordner zum Hinzufügen wählen, wird er in diesem Fall rekursiv hinzugefügt.

Im Dialog Auf Änderungen prüfen können Sie sich optional die ignorierten Objekte anzeigen lassen. Wenn diese Option aktiv ist, wird dieser mitsamt seiner Unterobjekte angezeigt, sobald ein ignorierter Ordner gefunden wird.

Dateinamen und Schlüsselwörter automatisch vervollständigen

Der Übertragen-Dialog bietet die Möglichkeit, die zu übertragenden Dateien nach Schlüsselwörtern zu durchsuchen. Wenn Sie die ersten drei Zeichen eines Wortes eingegeben haben, erscheint eine automatische Vervollständigungsliste, aus der Sie mittels Enter einen Eintrag auswählen können.

Wartezeit in Sekunden zum Stop der Datei-Analyse für das automatische Vervollständigen

Der Parser für das automatische Vervollständigen kann sehr langsam sein, wenn Sie sehr viele und große Dateien ausgewählt haben. Diese Wartezeit stoppt den Parser und übergibt die bisher gefundenen Daten an die Editor-Box. Wenn Sie wichtige Informationen für das automatische Vervollständigen vermissen, können Sie hier die Wartezeit erhöhen.

Rechtschreibkorrektur nur verwenden, wenn tsvn:projectlanguage gesetzt ist

Wenn Sie die Rechtschreibkorrektur nicht benutzen möchten, aktivieren Sie diese Option. Die Rechtschreibkorrektur wird trotz dieser Einstellung aktiviert, wenn das Projekt dies notwendig macht.

Maximale Anzahl der zu merkenden Log-Einträge

Wenn Sie eine Logmeldung im Übertragen-Dialog eingeben, speichert TortoiseSVN standardmäßig die letzten 25 Logmeldungen für jedes Projektarchiv. Sie können die Anzahl hier festlegen. Wenn Sie viele verschiedene Projektarchive nutzen, sollten Sie die Zahl vielleicht heruntersetzen, um weniger Einträge in der Registrierung zu belegen.

Beachten Sie bitte, dass diese Einstellung nur Logmeldungen betrifft, die Sie auf diesem Computer eingeben. Sie hat nichts mit dem Log-Puffer zu tun.

Zu übertragende Objekte automatisch markieren

Das normale Verhalten des Übertragen-Dialogs ist es, dass alle veränderten versionierten Objekte zur Übertragung gewählt sind. Wenn Sie möchten, dass keine Vorauswahl getroffen wird, deaktivieren Sie diese Option.

Übertragen-Dialog wieder öffnen, wenn Objekte nicht übertragen wurden

Öffnet den Übertragen-Dialog nach einer erfolgreichen Übertragung erneut, wenn Dateien oder Ordner nicht übertragen wurden. Der Dialog wird nur geöffnet, wenn es noch zu übertragende Objekte gibt.

Projektarchiv beim Start kontaktieren

Der Prüfe auf Änderungen-Dialog prüft in der Standardeinstellung die Arbeitskopie und kontaktiert das Projektarchiv nur, wenn Sie die Schaltfläche Projektarchiv prüfen betätigen. Wenn Sie das Projektarchiv immer überprüfen wollen, aktivieren Sie diese Option, damit das beim Start des Dialoges automatisch geschieht.

Sperrdialog vor dem Sperren anzeigen

Wenn Sie eine oder mehrere Dateien markieren und TortoiseSVNSperre holen... aufrufen, können Sie, wie in manchen Projekten üblich, im folgenden Dialog einen Grund für die Sperrung angeben. Sollten Sie nicht mit Sperrmeldungen arbeiten, können Sie diese Option abwählen, um den Dialog zu überspringen und die Dateien sofort zu sperren.

Wenn den Sperrbefehl für einem Ordner aufrufen, wird der Dialog stets angezeigt, damit Sie die zu sperrenden Dateien wählen können.

Wenn Ihr Projekt die Eigenschaft tsvn:lockmsgminsize verwendet, wird der Sperrdialog stets unabhängig von dieser Einstellung angezeigt, weil das Projekt Sperrmeldungen erfordert.

TortoiseSVN-Dialog, Seite 3

Abbildung 4.73. Der Einstellungsdialog, Seite 3

Der Einstellungsdialog, Seite 3


Einstellungen für den Projektarchivbetrachter:

Ordner zum schnellen Blättern im Voraus laden

Wenn diese Option aktiv ist (Vorgabe), lädt der Projektarchivbetrachter im Hintergrund Informationen über die sichtbaren Ordner. Damit sind die Ordnerinhalte sichtbar, sobald sie einen Ordner öffnen.

Einige Server sind jedoch nicht in der Lage, die Last zu handhaben, die dadurch verursacht wird, oder sie behandeln die vielen Anfragen als Angriff und blockieren sie. In diesem Fall können sie das Vorausladen deaktivieren.

Externals anzeigen

Wenn diese Option aktiv ist (Vorgabe), zeigt der Projektarchivbetrachter Dateien und Ordner, die per svn:externals eingebunden wurden, als normale Dateien und Ordner an, kennzeichnet sie aber durch ein überlagertes Symbol als aus einer externen Quelle stammend.

Wie beim Vorausladen bereits erklärt, kann auch diese Option auf manchen Servern zu viel Last erzeugen. In diesem Fall können sie die Option hier deaktivieren.

In SVN sind zwei Versionen von Ablagen implementiert. Hier können Sie auswählen, welche Version Sie verwenden möchten. Beachten Sie, dass eine Änderung dieser Einstellung möglicherweise einen Neustart des Betriebssystems erfordert, um wirksam zu werden.

V2

Diese Version ist viel schneller als V3 und die empfohlene Version.

Die Geschwindigkeit hat jedoch ihren Preis: V2 verarbeitet keine Verzeichnisänderungen und kann Kopieren und Verschieben von Dateien nicht handhaben.

V3

Dies ist die neueste Version der Ablagefunktion. Sie kann Änderungen an Verzeichnissen sowie Verschieben und Kopieren von Dateien verarbeiten.

V3 ist jedoch viel langsamer als V2 und kann für große Projektarchive oder wenn Sie eine langsame Verbindung zum Projektarchiv haben, ungewöhnlich langsam sein.

TortoiseSVN-Farben

Abbildung 4.74. Der Einstellungsdialog, Farben

Der Einstellungsdialog, Farben


In diesem Dialog können Sie die Textfarben einiger TortoiseSVN-Dialoge einstellen.

Möglicher oder echter Konflikt / versperrt

Ein Konflikt ist beim Aktualisieren aufgetreten oder kann beim Zusammenführen auftreten. Ein(e) nicht versionierte(r) Datei / Ordner versperrt die Aktualisierung eines gleichnamigen versionierten Objekts.

Diese Farbe wird auch für Fehlermeldungen im Fortschrittsdialog verwendet.

Hinzugefügte Dateien

Zum Projektarchiv hinzugefügte Objekte.

Gelöscht / fehlend / ersetzt

Objekte, die aus dem Projektarchiv gelöscht wurden oder in der Arbeitskopie fehlen oder aus der Arbeitskopie gelöscht und durch ein anderes Objekt des gleichen Namens ersetzt wurden.

Zusammengeführt

Änderungen aus dem Projektarchiv, die erfolgreich mit Ihren lokalen Änderungen zusammengeführt wurden, ohne einen Konflikt zu verursachen.

Verändert / kopiert

Mit Historie hinzugefügte bzw. im Projektarchiv kopierte Objekte. Wird auch im Log-Dialog für Einträge mit kopierten Objekten verwendet.

Gelöschter Knoten

Ein Objekt, das aus dem Projektarchiv gelöscht wurde.

Hinzugefügter Knoten

Ein Objekt, das durch Hinzufügen, Kopieren oder Verschieben zum Projektarchiv hinzugefügt wurde.

Umbenannter Knoten

Ein Objekt, das im Projektarchiv umbenannt wurde.

Ersetzter Knoten

Das originale Objekt wurde gelöscht und durch eines mit demselben Namen ersetzt.

Suchtreffer

Bei der Verwendung von Filtern im Log-Dialog werden Suchbegriffe in den Ergebnissen mit dieser Farbe hervorgehoben.

weitere Einstellungen:

Dunkle Systemfarbe

Die Benutzeroberfläche kann in Windows 10 ab der Version 1809 im Dunkelmodus dargestellt werden. Diese Option erfordert auch, dass der Dunkelmodus in den Windows-Einstellungen aktiviert ist.

Wichtig

Beachten Sie, dass nicht alle Steuerelemente in allen Dialogfeldern in dunkler Systemfarbe angezeigt werden.

Einstellungen des Revisionsgraphen

Abbildung 4.75. Der Einstellungsdialog, Revisionsgraph

Der Einstellungsdialog, Revisionsgraph


Klassifizierungsmuster

Der Revisionsgraph versucht, ein klareres Bild des Projektarchivs zu schaffen, indem er zwischen Stamm, Verzweigung und Marken unterscheidet. Da eine solche Unterscheidung nicht in Subversion eingebaut ist, wird die Information aus den Pfadnamen extrahiert. Die Standardeinstellung nimmt an, dass Sie die üblichen, in Subversion angegebenen, englischen Namen verwenden. Sie können das selbstverständlich an Ihre Gepflogenheiten anpassen.

Geben Sie die Muster zur Klassifizierung der Pfade in den drei Eingabefeldern an. Die Muster werden ohne Berücksichtigung der Groß-/Kleinschreibung verglichen, sie müssen jedoch in Kleinbuchstaben angegeben werden. Die Platzhalter * und ? funktionieren wie gewohnt und Sie können zusätzlich ; zum Trennen mehrerer Muster angeben. Verwenden Sie keine Leerzeichen, da diese Bestandteil des Mustervergleichs werden.

Erkennung von Markierungen beim Übertragen

Bitte beachten Sie, dass diese Muster zum Erkennen von Markierungen sowohl im Revisionsgraphen als auch beim Übertragen verwendet werden.

Farben ändern

Farben werden im Revisionsgraphen verwendet, um den Knotentyp (hinzugefügt, gelöscht, umbenannt) zu kennzeichnen. Damit Sie gleichzeitig Klassifizierungen und Knotentypen erkennen können, kann der Revisionsgraph die beiden Farben überlagern. Wenn Sie diese Optionen aktivieren, wird die Überlagerung der Farben verwendet. Wenn die Option nicht aktiv ist, wird nur die Farbe für den Knotentypen verwendet. Im Farbeinstellungsdialog können Sie die gewünschten Farben festlegen.

Farben des Revisionsgraphen

Abbildung 4.76. Der Einstellungsdialog, Farben des Revisionsgraphen

Der Einstellungsdialog, Farben des Revisionsgraphen


Auf dieser Seite legen sie die zu verwendenden Farben fest. Beachten Sie bitte, dass es sich hierbei um die Grundfarben handelt. Die meisten Knoten werden durch eine Überblendung der Farben für Knotentyp, Hintergrund und optional der Farbe für die Klassifizierung gekennzeichnet.

Gelöschter Knoten

Objekte, die in dieser Revision gelöscht und an keine andere Stelle verschoben wurden.

Hinzugefügter Knoten

Neu hinzugefügte oder kopierte (mit Historie hinzugefügte) Objekte.

Umbenannter Knoten

Objekte, die in dieser Revision an einer Stelle gelöscht und an einer anderen Stelle hinzugefügt wurden.

Veränderter Knoten

Einfache Veränderung, in der nichts hinzugefügt oder gelöscht wurde.

Unveränderter Knoten

Kann verwendet werden, um die Revision hervorzuheben, die als Quelle einer Kopie diente. Selbst, wenn sich an dem Objekt, für das der Revisionsgraph gestartet wurde, in dieser Revision nichts geändert hat.

HEAD-Knoten

Aktuelle HEAD-Revision im Projektarchiv.

Arbeitskopie

Wenn Sie einen Extraknoten für Ihre geänderte Arbeitskopie anzeigen lassen, wird diese Farbe für die Fläche des Knotens verwendet.

Randfarbe für AK

Wenn Sie sich anzeigen lassen, ob Ihre Arbeitskopie verändert ist, wird diese Farbe für den Rand des Knotens verwendet, falls die Arbeitskopie verändert wurde.

Marken

Knoten, die als Marken klassifiziert wurden, können mit dieser Farbe überlagert werden.

Stamm

Knoten, die als Stamm klassifiziert wurden, können mit dieser Farbe überlagert werden.

Zusammengeklappte Marken

Wenn Sie Marken zusammenklappen, um Platz zu sparen, werden sie an der Quelle der Kopie durch einen Block in der gewählten Farbe gekennzeichnet.

Selektierte Marken

Wenn Sie auf einen Knoten linksklicken, um diesen zu selektieren, wird der Selektionsmarker in dieser Farbe angezeigt.

Streifenfarben

Diese Farben werden benutzt, wenn der Graph in Unterbäume aufgeteilt und der Hintergrund in abwechselnden Streifen gezeichnet wird, um die einzelnen Bäume besser unterscheiden zu können.

Überlagerte Symbole

Abbildung 4.77. Der Einstellungsdialog, Symbolauswahl

Der Einstellungsdialog, Symbolauswahl


In diesem Dialog können Sie die Objekte auswählen, für die TortoiseSVN überlagerte Symbole anzeigen soll.

Da es eine Weile dauern kann, den Status einer Arbeitskopie zu bestimmen, verwendet TortoiseSVN einen Puffer, um den Status zwischenzuspeichern, damit der Windows Explorer beim Anzeigen der überlagerten Symbole nicht so stark gebremst wird. Sie können hier festlegen, welche Art von Puffer TortoiseSVN benutzen soll:

Standard

Speichert sämtliche Statusinformation in einem separaten Prozess (TSVNCache.exe). Dieser Prozess beobachtet alle Laufwerke auf Änderungen und ermittelt den Status erneut, sobald sich eine Datei innerhalb einer Arbeitskopie ändert. Der Prozess läuft mit der niedrigsten Priorität, damit andere Programme nicht gebremst werden. Das bedeutet allerdings auch, dass die Statusinformation nicht in Echtzeit angezeigt wird, sondern dass es ein paar Sekunden dauern kann, bis sich die überlagerten Symbole ändern.

Vorteil: Die überlagerten Symbole zeigen den Status rekursiv an, das heißt, wenn sich eine Datei tief innerhalb der Arbeitskopie ändert, alle Ordner bis zur Basis der Arbeitskopie ebenfalls das Symbol modifiziert anzeigen. Da der Prozess auch Benachrichtigungen an die Shell schicken kann, ändern sich die Symbole in der linken Baumansicht normalerweise auch entsprechend.

Nachteil: Der Prozess läuft permanent, auch wenn Sie nicht an Ihren Projekten arbeiten. Er benötigt außerdem 10-50 MB Hauptspeicher, abhängig von Anzahl und Größe Ihrer Arbeitskopien.

Shell

Die Daten werden direkt in der Shell-Erweiterungs-DLL zwischengespeichert, aber nur für den aktuellen Ordner. Jedes Mal, wenn Sie einen anderen Ordner öffnen, wird die Statusinformation erneut geladen.

Vorteil: Benötigt nur sehr wenig Hauptspeicher (zirka 1 MB) und kann den Status in Echtzeit anzeigen.

Nachteil: Da nur ein Ordner zwischengespeichert wird, kann der Status nicht rekursiv angezeigt werden. Bei großen Arbeitskopien kann es länger als mit dem Standardpuffer dauern, einen Ordner anzuzeigen. Obendrein steht die Spalte MIME-Typ nicht zur Verfügung.

Keine

Mit dieser Einstellung ermittelt TortoiseSVN keinerlei Statusinformationen im Explorer. Deshalb erhalten Dateien kein überlagertes Symbol und Ordner, wenn Sie versioniert sind, nur das Symbol 'Normal'. Es werden keine anderen Symbole überlagert und es stehen keine zusätzlichen Spalten zur Verfügung.

Vorteil: Benötigt absolut keinen zusätzlichen Speicher und verlangsamt den Explorer nicht.

Nachteil: Im Explorer steht keinerlei Statusinformation zur Verfügung. Sie müssen deshalb mit dem Dialog Auf Änderungen prüfen nachschauen, welche Dateien in Ihrer Arbeitskopie verändert wurden.

Standardmäßig werden die überlagerten Symbole in allen Öffnen/Speichern-Dialogen und im Windows Explorer angezeigt. Wenn Sie wollen, dass die Symbole nur im Explorer angezeigt werden, wählen Sie die Option Überlagerte Symbole nur im Explorer anzeigen.

Sie können erzwingen, dass für Prozesse mit erhöhten Rechten kein Statuscache angelegt wird, indem Sie die Option Statuscache für erhöhte Prozesse deaktivieren wählen. Das ist nützlich, wenn Sie verhindern wollen, dass ein weiterer TSVNCache.exe-Prozess mit erhöhten Rechten erzeugt wird.

Sie können auch festlegen, dass Ordner als modifiziert angezeigt werden sollen, wenn Sie nicht versionierte Objekte enthalten. Das können Sie als Erinnerung nutzen, dass Sie neue noch nicht versionierte Dateien angelegt haben. Diese Option ist nur verfügbar, wenn Sie die Standard-Statuscache-Einstellungen nutzen (siehe unten).

Wenn Sie Dateien in der ignore-on-commit-Änderungsliste haben, können Sie festlegen, dass diese Dateien ihren Status nicht an den Elternordner weiterreichen. Dadurch wird der Elternordner als unmodifiziert angezeigt, solange nur Dateien in dieser Änderungsliste verändert werden.

Auf dieser Seite können Sie einstellen, für welche Laufwerkstypen überlagerte Symbole angezeigt werden. Standardmäßig sind nur Festplatten ausgewählt. Sie können auch alle überlagerten Symbole deaktivieren, aber wo liegt der Spaß darin?

Der Zugriff auf Netzwerklaufwerke kann sehr langsam sein, weshalb standardmäßig keine überlagerten Symbole für Netzwerklaufwerke angezeigt werden.

USB-Flashlaufwerke stellen insofern einen Spezialfall dar, als dass der Laufwerkstyp durch das Gerät selbst festgelegt wird. Manche erscheinen als Festplatten, andere wiederum als Wechselplatten.

Die Ausschlusspfade teilen TortoiseSVN mit, für welche Pfade die überlagerten Symbole nicht gezeichnet werden sollen. Dies ist nützlich, wenn Sie einige sehr große Arbeitskopien haben und daher die Symbole nicht benötigen, die nur Bibliotheken enthalten, die Sie überhaupt nicht verändern werden, oder wenn Sie TortoiseSVN nur in bestimmten Ordnern suchen lassen wollen.

Es wird davon ausgegangen, dass jeder Pfad, den Sie hier angeben, rekursiv betrachtet wird, also wird auch kein Unterordner überlagerte Symbole anzeigen. Wenn Sie nur den benannten Ordner ausschließen möchten, fügen Sie ein ? nach dem Pfad ein.

Dasselbe gilt für die Einschlusspfade. Nur dass für diese Pfade die Symbole auch dann angezeigt werden, wenn sie zunächst für einen Laufwerkstyp oder durch einen oben angegebenen Ausschlusspfad deaktiviert sind.

Benutzer fragen manchmal, wie diese drei Einstellungen interagieren. TortoiseSVN überprüft für jeden Pfad die Einschluss- und Ausschlusslisten. Die Verzeichnisstruktur wird nach oben hin durchsucht, bis eine Übereinstimmung gefunden wird. Wenn die erste Übereinstimmung gefunden wurde, wendet TortoiseSVN die entsprechende Regel an. Wenn Widersprüche auftreten, wird eine einzelne Verzeichnisangabe einer rekursiven Angabe vorgezogen und Einschluss erhält Vorrang vor Ausschluss.

Ein Beispiel wird hier für mehr Klarheit sorgen:

Ausschluss:
       C:
       C:\Projekte\?
       C:\Projekte\tsvn\obj
       C:\Projekte\tsvn\bin

Einschluss:
       C:\Projekte

Diese Einstellungen deaktivieren die überlagerten Symbole für das Laufwerk C: mit Ausnahme von C:\Projekte. Alle Verzeichnisse darunter werden überlagerte Symbole anzeigen, außer dem Ordner C:\Projekte selber, der explizit ignoriert wird. Die sich ständig ändernden Binärordner werden ebenfalls ausgeschlossen.

TSVNCache.exe nutzt diese Pfade, um seine Aktivitäten einzuschränken. Wenn Sie wollen, dass der Puffer nur bestimmte Ordner überwacht, schalten Sie alle Laufwerkstypen aus und schließen nur die Ordner ein, die überwacht werden sollen.

SUBST-Laufwerke ausschließen

Häufig ist es praktisch, zum Zugriff auf Ihre Arbeitskopien ein SUBST-Laufwerk zu definieren, z. B. mit dem Befehl

subst T: C:\TortoiseSVN\trunk\doc

Das kann jedoch dazu führen, dass die überlagerten Symbole nicht aktualisiert werden, da der TSVNCache nur eine Benachrichtigung erhält, wenn sich eine Datei ändert und diese Benachrichtigung erfolgt normalerweise nur für den Originalpfad. Das bedeutet, dass die überlagerten Symbole auf dem SUBST-Pfad unter Umständen nie aktualisiert werden.

Eine einfache Möglichkeit, dies zu umgehen, besteht darin, den Originalpfad von der Anzeige der überlagerten Symbole auszuschließen, sodass die Symbole stattdessen auf dem subst-Pfad erscheinen.

Manchmal möchten Sie vielleicht Ordner, die Arbeitskopien enthalten, von TSVNCache ausschließen, aber weiterhin einen optischen Hinweis darauf haben, dass es sich um versionierte Ordner handelt. Dazu wählen Sie die Option Zeige ausgeschlossene Wurzelordner als 'normal' an. Damit werden versionierte ausgeschlossene Ordner (Laufwerkstyp nicht aktiviert oder gezielt ausgeschlossen) mit dem Symbol für normal und aktuell angezeigt. Dies erinnert Sie daran, dass Sie eine Arbeitskopie vor sich haben, auch wenn die überlagerten Symbole nicht unbedingt korrekt sind. Dateien in solchen Ordnern erhalten kein überlagertes Symbol. Die Kontextmenüs sind weiterhin funktionsfähig, auch wenn keine Symbole überlagert werden.

Als Ausnahme davon werden die Laufwerke A: und B: niemals bei der Option Ausgeschlossene Ordner 'normal' anzeigen berücksichtigt. Der Grund dafür ist, dass Windows gezwungen ist, auf diese Laufwerke zuzugreifen, was selbst dann für eine Verzögerung von mehreren Sekunden sorgen kann, wenn Ihr PC mit einem Diskettenlaufwerk ausgestattet ist.

Auswahl der überlagerten Symbole

Abbildung 4.78. Der Einstellungsdialog, Symbolauswahl

Der Einstellungsdialog, Symbolauswahl


Sie können in TortoiseSVN die überlagerten Symbole auswählen, die Ihnen am besten gefallen. Wenn Sie diese Einstellung ändern, wird der Symbolsatz erst nach einem Neustart des Computers übernommen.

Aktivierte überlagerte Symbole

Abbildung 4.79. Der Einstellungsdialog, verwendete Symbole

Der Einstellungsdialog, verwendete Symbole


Da die maximale Anzahl der überlagerten Symbole stark eingeschränkt ist, können Sie einige davon deaktivieren, um sicherzustellen, dass diejenigen geladen werden, die Ihnen wichtig sind. Da TortoiseSVN die gemeinsame TortoiseOverlays-Komponente verwendet, die mit anderen Tortoise-Clients (z. B. TortoiseCVS, TortoiseHG) geteilt wird, wirken Änderungen der Einstellung auch bei diesen Clients.

Netzwerk-Einstellungen

Abbildung 4.80. Der Einstellungsdialog, Netzwerkseite

Der Einstellungsdialog, Netzwerkseite


Hier können Sie Einstellungen für einen Proxyserver vornehmen, sofern Sie einen solchen benötigen, zum Beispiel bei einer Firmen-Firewall.

Wenn Sie Proxy-Einstellungen für jedes Projektarchiv vornehmen wollen, müssen Sie das in der Subversion-Datei servers einstellen. Über die Schaltfläche Bearbeiten kommen Sie direkt dort hin. Lesen Sie dazu im Kapitel Laufzeit-Konfigurationsbereich des Subversion-Buchs nach, wie die Datei aufgebaut ist.

Sie können hier auch angeben, welches Programm TortoiseSVN benutzen soll, um eine sichere Verbindung zu einem svn+ssh-Projektarchiv herzustellen. Wir empfehlen Ihnen, dass Sie dazu TortoisePlink.exe verwenden. Dabei handelt es sich um eine für TortoiseSVN angepasste Version des bekannten Plink, die mit TortoiseSVN zusammen installiert wird. Damit nicht bei jeder Anmeldung eine DOS-Box erscheint, wurde TortoisePlink als fensterloses Programm übersetzt.

Sie müssen den vollständigen Pfad zu der ausführbaren Datei angeben. Für TortoisePlink.exe ist es das TortoiseSVN-Standardverzeichnis bin. Benutzen Sie die Schaltfläche Suchen, um die Datei zu finden. Beachten Sie bitte, dass der Pfad in Anführungszeichen gesetzt werden muss, wenn er Leerzeichen enthält, z. B.

"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe"

Ein Seiteneffekt davon ist, dass TortoisePlink ohne Fenster keine Möglichkeit hat, Fehlermeldungen anzuzeigen. Wenn die Anmeldung fehlschlägt, erscheint einfach Unable to write to standard output. Aus diesem Grund empfehlen wir, dass Sie die Konfiguration erst mit dem Standard-Plink einrichten. Wenn alles funktioniert, wechseln Sie zu TortoisePlink und verwenden die gleichen Parameter.

Für TortoisePlink steht keine eigene Dokumentation zur Verfügung, weil es sich nur um eine leichte Abwandlung von Plink handelt. Die Verwendung von Plink ist auf der PuTTY-Webseite detailliert beschrieben.

Um zu vermeiden, dass Sie wiederholt nach einem Passwort gefragt werden, können Sie ein Programm zum Zwischenspeichern des Passworts wie etwa Pageant einsetzen. Diese Anwendung steht ebenfalls auf der PuTTY-Webseite zur Verfügung.

Abschließend bleibt festzuhalten, dass die Einrichtung von SSH auf Server und Client ein nicht-trivialer Prozess ist, der den Rahmen dieses Handbuchs sprengt. Sie finden eine weitere Anleitung unter Subversion/TortoiseSVN SSH How-To .

Einstellungen für externe Programme

Abbildung 4.81. Der Einstellungsdialog, externe Programme

Der Einstellungsdialog, externe Programme


Hier können Sie Ihre eigenen Vergleichs- und Konflikteditoren definieren, die TortoiseSVN benutzen soll. In der Standardeinstellung wird das mitgelieferte TortoiseMerge benutzt.

Lesen Sie in „Externe Programme“ nach, welche externen Vergleichs- und Konflikteditoren mit TortoiseSVN genutzt werden können.

Vergleichsprogramm

Ein externes Vergleichsprogramm, mit dem Sie verschiedene Revisionen einer Datei vergleichen können. Die Dateinamen müssen gemeinsam mit anderen Parametern per Kommandozeile übergeben werden. TortoiseSVN verwendet dazu Platzhalter, denen ein % vorangestellt wird. Die Reihenfolge der Parameter auf der Kommandozeile hängt von dem von Ihnen verwendeten Vergleichsprogramm ab.

%base

Die Originaldatei ohne Ihre Änderungen

%bname

Der Fenstertitel für die Originaldatei in Anführungszeichen

%nqbname

Der Fenstertitel für die Originaldatei ohne Anführungszeichen

%mine

Die Datei mit Ihren eigenen Änderungen

%yname

Der Fenstertitel für Ihre Datei in Anführungszeichen

%nqyname

Der Fenstertitel für Ihre Datei ohne Anführungszeichen

%burl

Die URL der ursprünglichen Datei, falls vorhanden, in Anführungszeichen

%nqburl

Die URL der ursprünglichen Datei, falls vorhanden, ohne Anführungszeichen

%yurl

Die URL der zweiten Datei, falls vorhanden, in Anführungszeichen

%nqyurl

Die URL der zweiten Datei, falls vorhanden, ohne Anführungszeichen

%brev

Die Revision der ursprünglichen Datei, falls vorhanden, in Anführungszeichen

%nqbrev

Die Revision der ursprünglichen Datei, falls vorhanden, ohne Anführungszeichen

%yrev

Die Revision der zweiten Datei, falls vorhanden, in Anführungszeichen

%nqyrev

Die Revision der zweiten Datei, falls vorhanden, ohne Anführungszeichen

%peg

Die fixe Revision, falls verfügbar, in Anführungszeichen

%nqpeg

Die fixe Revision, falls verfügbar, ohne Anführungszeichen

%fname

Der Name der Datei. Dies ist eine leere Zeichenfolge, wenn zwei verschiedene Dateien anstelle von zwei Zuständen der gleichen Datei verglichen werden.

%nqfname

Der Name der Datei, ohne Anführungszeichen

Bei den Fenstertiteln handelt es sich nicht um reine Dateinamen. TortoiseSVN behandelt sie als Anzeigenamen und stellt den Titel entsprechend zusammen. Wenn Sie z. B. einen Vergleich zwischen einer Datei in Revision 123 und der Arbeitskopie machen, werden die Titel Dateiname : Revision 123 und Dateiname : Arbeitskopie sein.

Zum Beispiel für ExamDiff Pro:

C:\Pfad-Zu\ExamDiff.exe %base %mine --left_display_name:%bname
    --right_display_name:%yname

oder für KDiff3:

C:\Pfad-Zu\Kdiff3.exe %base %mine --L1 %bname --L2 %yname

oder mit WinMerge:

C:\Pfad-Zu\WinMerge.exe -e -ub -dl %bname -dr %yname %base %mine

oder mit Araxis:

C:\Pfad-Zu\compare.exe /max /wait /title1:%bname /title2:%yname
    %base %mine

oder mit UltraCompare:

C:\Path-To\uc.exe %base %mine
    -title1 %bname -title2 %yname

oder mit DiffMerge:

 C:\Path-To\DiffMerge.exe -nosplash
    -t1=%bname -t2=%yname %base %mine

Wenn Sie die Eigenschaft svn:keywords gesetzt haben, um Schlüsselwörter, insbesondere die Revision einer Datei zu expandieren, kann ein Unterschied zwischen Dateien entstehen, der nur aus dem aktuellen Wert des Schlüsselwortes besteht. Ebenso wird, wenn Sie svn:eol-style = native setzen, die BASE-Datei reine LF-Zeilenenden haben, während Ihre Datei CR-LF-Zeilenenden besitzt. TortoiseSVN wird diese Unterschiede normalerweise verbergen, indem es zuerst die Schlüsselwörter und Zeilenenden BASE in der Datei erweitert, bevor die Vergleichsoperation durchgeführt wird. Dies kann bei großen Dateien viel Zeit beanspruchen. Wenn die Option Dateien beim Vergleich mit BASE konvertieren nicht gewählt ist, wird TortoiseSVN diese Vorbereitungsarbeiten nicht durchführen und damit Zeit sparen.

Sie können auch ein eigenes Programm für Subversion-Eigenschaften angeben. Da es sich dabei um einfache, kurze Texte handelt, wollen Sie vielleicht einen einfachen, kompakten Betrachter verwenden.

Wenn Sie ein alternatives Vergleichsprogramm eingerichtet haben, können Sie TortoiseMerge und das andere Programm aus den Kontextmenüs heraus aufrufen. KontextmenüVergleich ruft das primäre Vergleichsprogramm und Umschalt+KontextmenüVergleich das sekundäre Vergleichsprogramm auf.

Am unteren Ende des Dialoges können Sie einen Betrachter für Standard-Diff-Dateien (Patch-Dateien) festlegen. Es sind keine Parameter erforderlich. Der Standard ist TortoiseUDiff, der mit TortoiseSVN installiert wird und die hinzugefügten sowie die entfernten Linien farbig hervorhebt.

Da Standard-Diff nur ein Textformat ist, können Sie auch Ihren Lieblings-Texteditor verwenden.

Konflikteditor

Ein externes Programm, mit dem Sie Konflikte in Dateien auflösen können. Die Parameterübergabe an das Programm erfolgt genauso wie beim Vergleichsprogramm.

%base

Die Originaldatei ohne irgendwelche Änderungen

%bname

Der Fenstertitel für die Originaldatei in Anführungszeichen

%nqbname

Der Fenstertitel für die Originaldatei ohne Anführungszeichen

%mine

Die Datei mit Ihren eigenen Änderungen

%yname

Der Fenstertitel für Ihre Datei in Anführungszeichen

%nqyname

Der Fenstertitel für Ihre Datei ohne Anführungszeichen

%theirs

Die Datei mit den letzten Änderungen im Projektarchiv

%tname

Der Fenstertitel für die Datei im Projektarchiv

%nqtname

Der Fenstertitel für die Datei im Projektarchiv ohne Anführungszeichen

%merged

Die Konfliktdatei (das Ergebnis der Zusammenführen-Operation)

%mname

Der Fenstertitel für die Ergebnisdatei

%nqmname

Der Fenstertitel für die zusammengeführte Datei ohne Anführungszeichen

%fname

Der Name der Konfliktdatei in Anführungszeichen

%nqfname

Der Name der Konfliktdatei ohne Anführungszeichen

Zum Beispiel für Perforce Merge:

C:\Pfad-Zu\P4Merge.exe %base %theirs %mine %merged

oder für KDiff3:

C:\Pfad-Zu\Kdiff3.exe %base %mine %theirs -o %merged
        --L1 %bname --L2 %yname --L3 %tname

oder mit Araxis:

C:\Pfad-Zu\compare.exe /max /wait /3 /title1:%tname /title2:%bname
        /title3:%yname %theirs %base %mine %merged /a2

oder mit WinMerge (2.8 oder neuer):

C:\Path-Zu\WinMerge.exe %merged

oder mit DiffMerge:

C:\Path-To\DiffMerge.exe -caption=%mname 
    -result=%merged -merge -nosplash -t1=%yname -t2=%bname
    -t3=%tname %mine %base %theirs

Erweiterte Einstellungen für Vergleichs- und Konflikteditor

Abbildung 4.82. Erweiterte Einstellungen für Vergleichs- und Konflikteditor

Erweiterte Einstellungen für Vergleichs- und Konflikteditor


In den erweiterten Einstellungen können Sie für jede Dateiendung ein eigenes Vergleichsprogramm oder Konflikteditor angeben. So können Sie zum Beispiel Photoshop als Vergleichsprogramm für .jpg-Dateien festlegen :-). Sie können auch die Eigenschaft svn:mime-type mit einem Vergleichsprogramm oder Konflikteditor verknüpfen.

Um Dateiendungen mit Anwendungen zu verknüpfen, geben Sie die Erweiterung an, z. B. *.bmp für Windows-Bitmap-Dateien. Um eine Verknüpfung über die Eigenschaft svn:mime-type herzustellen, geben Sie den Mime-Typ inklusive Schrägstrich an, also text/xml.

Gespeicherte Daten

Abbildung 4.83. Der Einstellungsdialog, gespeicherte Daten

Der Einstellungsdialog, gespeicherte Daten


Zu Ihrer Bequemlichkeit speichert TortoiseSVN viele Ihrer Einstellungen und merkt sich, welche Sie zuletzt verwendet haben. Auf dieser Seite können Sie die Informationen wieder löschen.

URL-Historie

Wenn Sie eine Arbeitskopie auschecken, Änderungen zusammenführen oder ein Projektarchiv verwenden, merkt sich TortoiseSVN die zuletzt benutzten URL und bietet sie in einem Kombinationsfeld an. Über die Zeit kann sich diese Liste mit veralteten URLs füllen, sodass es sinnvoll ist, sie regelmäßig zu löschen.

Wenn Sie einen einzelnen Eintrag aus einem Kombinationsfeld löschen wollen, können Sie das direkt in der Liste tun. Klicken Sie auf den Pfeil, um das Kombinationsfeld zu öffnen, fahren Sie mit der Maus auf den zu löschenden Eintrag und drücken Sie Umschalt+Entf.

Logmeldungen (Eingabedialog)

TortoiseSVN speichert die letzten von Ihnen eingegebenen Logmeldungen. Diese werden für jedes Projektarchiv einzeln abgespeichert, sodass die Liste recht groß werden kann, wenn Sie viele Projektarchive nutzen.

Logmeldungen (Zeige Log-Dialog)

TortoiseSVN speichert bereits übertragene Logmeldungen lokal, um beim nächsten Anzeigen desselben Logs Zeit zu sparen. Wenn jemand eine Logmeldung ändert, die bereits lokal vorhanden ist, werden Sie die Änderung nicht sehen, bevor Sie den Zwischenspeicher gelöscht haben. Das Speichern von Logmeldungen wird auf der Log-Puffer-Seite in den TortoiseSVN-Einstellungen aktiviert.

Dialoggrößen und -positionen

Viele Dialoge merken sich die zuletzt verwendete Größe und Position auf dem Bildschirm.

Anmeldedaten

Wenn Sie sich an einem Subversion-Server anmelden, können Anmeldename und Passwort lokal gespeichert werden, damit Sie beides nicht ständig eingeben müssen. Vielleicht möchten Sie die Anmeldedaten aus Sicherheitsgründen löschen oder weil Sie unter einem anderen Namen auf das Projektarchiv zugreifen wollen ... Weiß John, dass Sie seinen PC benutzen?

Wenn Sie nur die Anmeldedaten für einen bestimmten Server löschen wollen, verwenden Sie die Schaltfläche Löschen... anstelle von Alle löschen.

Aktionslog

TortoiseSVN protokolliert alles mit, was in seine Fortschrittsdialoge geschrieben wird. In diesem Protokoll können Sie zum Beispiel nachschauen, was bei einer kurz zuvor durchgeführten Aktualisierung geschah.

Die Länge der Protokolldatei ist begrenzt und älterer Inhalt wird verworfen, sobald die Datei zu groß wird. Standardmäßig werden 4000 Zeilen zwischengespeichert, aber Sie können diese Vorgabe ändern.

Von hier aus können Sie die Logdatei anschauen oder auch löschen.

Log-Puffer

Abbildung 4.84. Der Einstellungsdialog, Log-Puffer

Der Einstellungsdialog, Log-Puffer


Dieser Dialog ermöglicht es Ihnen, den Log-Puffer von TortoiseSVN einzurichten. Dieser hält eine lokale Kopie von Logmeldungen und geänderten Pfaden vor, um zeitraubende Zugriffe auf den Server zu sparen. Die Verwendung des Log-Puffers kann die Anzeige des Log-Dialogs und des Revisionsgraphen drastisch beschleunigen. Ein weiterer Vorteil ist, dass auch ohne Kontakt zum Server auf die Logmeldungen zugegriffen werden kann.

Log-Puffer aktivieren

Aktiviert den Log-Puffer, sobald Logdaten angefragt werden. Wenn aktiviert, werden Daten, sofern verfügbar, aus dem Puffer gelesen und nicht im Puffer vorhandene Meldungen werden vom Server geholt und im Puffer abgelegt.

Wenn der Puffer nicht aktiviert ist, werden die Daten stets vom Server geholt und nicht lokal gespeichert.

Mehrdeutige URLs zulassen

Wenn Ihr Server dieselbe URL für alle Projektarchive verwendet, wie z.B. alte Versionen von svnbridge dies tun, dann wählen Sie diese Option. Wenn Sie keine solchen Server verwenden wählen Sie diese Option ab um die Performanz zu verbessern.

Mehrdeutige UUIDs zulassen

Einige Hosting-Services vergeben dieselbe UUID für alle Projektarchive. Sie haben dies vielleicht selber gemacht durch einfaches Kopieren eines Projektarchiv-Ordners. Aus vielerlei Hinsicht ist dies eine schlechte Idee - eine UUID sollte per Definition eindeutig sein. Trotzdem, der Log-Cache wird auch in solchen Situationen korrekt funktionieren wenn Sie diese Option wählen. Wenn Sie sicher sind dass alle Projektarchive eine eindeutige UUID aufweisen können Sie diese Option abwählen um die Performanz zu verbessern.

Wenn das Projektarchiv nicht erreichbar ist

Wenn Sie keine Verbindung zum Netz haben oder der Server nicht verfügbar ist, kann mit Hilfe des Log-Puffers weiterhin auf die Logmeldungen zugegriffen werden. Natürlich ist es möglich, dass diese Daten nicht mehr aktuell sind. Aus diesem Grund können Sie mit Optionen festlegen, ob diese Funktion genutzt werden soll.

Wenn Logdaten ohne Zugriff auf den Server aus dem Puffer genommen werden, zeigt der Dialog, der diese Daten verwendet, den Offline-Status in der Titelzeile an.

Wartezeit vor Aktualisierung der HEAD-Revision

Wenn Sie den Log-Dialog aufrufen, soll normalerweise der Server kontaktiert werden, um neue Logmeldungen abzurufen. Wenn die eingestellte Wartezeit nicht null ist, wird der Server nur kontaktiert, falls die Wartezeit seit dem letzten Aufruf abgelaufen ist. Dies kann die Reaktionszeit beim Aufruf des Log-Dialogs beschleunigen, wenn Sie diesen häufig aufrufen und der Server langsam ist. Andererseits ist es möglich, dass die Logdaten dadurch nicht aktuell sind. Wenn Sie diese Funktion nutzen wollen, schlagen wir einen Wert von 300 (5 Minuten) als Kompromiss vor.

Inaktive Tage, bis kleine Puffer gelöscht werden

Wenn Sie viele Projektarchive benutzen, werden mit der Zeit viele Log-Puffer angesammelt. Wenn Sie diese nicht oft benutzen, wird TortoiseSVN diese nach einer bestimmten Zeit löschen. Hiermit konfigurieren Sie die Löschfunktion.

Maximale Größe eines gelöschten inaktiven Puffers

Größere Puffer benötigen länger beim erneuten Erstellen. Deshalb löscht TortoiseSVN nur die kleineren Puffer. Sie können den Schwellenwert mit diesem Wert einstellen.

Maximale Anzahl von Fehlschlägen, bis ein Puffer gelöscht wird

Manchmal kann etwas mit dem Puffern schiefgehen und verursacht einen Absturz. Wenn dies passiert, wird der Puffer normalerweise automatisch gelöscht, um zu verhindern, dass das gleiche Problem erneut auftritt. Wenn Sie den weniger stabilen nightly-build benutzen, können Sie versuchen, den Puffer trotzdem zu behalten.

Gepufferte Projektarchive

Auf der nächsten Seite sehen Sie eine Liste der Projektarchive, die lokal gepuffert werden, sowie den vom Puffer belegten Speicherplatz. Wenn Sie eines der Projektarchive wählen, können Sie die weiteren Funktionen aufrufen.

Klicken Sie auf Aktualisieren, um den Puffer aufzufrischen und alle Löcher zu füllen. Für ein großes Projektarchiv kann das sehr viel Zeit in Anspruch nehmen. Wenn Sie nicht am Netz sind, steht Ihnen dafür der bestmögliche Puffer zur Verfügung.

Klicken Sie auf Export, um den gesamten Puffer in eine CSV-Datei zu exportieren. Dies könnte Ihnen nützlich sein, wenn Sie die Logdaten in einem externen Programm weiter verarbeiten wollen, ist aber in erster Linie für die TortoiseSVN-Entwickler gedacht.

Klicken Sie auf Löschen, um sämtliche gepufferten Daten für die gewählten Projektarchive zu löschen. Dadurch wird der Puffer für die Projektarchive nicht deaktiviert, sodass beim nächsten Zugriff auf das Log der Puffer neu aufgebaut wird.

Log-Puffer-Statistiken

Abbildung 4.85. Der Einstellungsdialog, Log-Puffer-Statistiken

Der Einstellungsdialog, Log-Puffer-Statistiken


Klicken Sie auf Details, um detaillierte Statistiken für einen bestimmten Puffer anzusehen. Viele der dort angezeigten Werte sind vor allem für die Entwickler von TortoiseSVN interessant, sodass sie nicht alle im Detail angezeigt werden.

RAM

Der für diesen Puffer benötigte Hauptspeicher.

Platte

Der für den Puffer benötigte Festplattenspeicher. Die Daten sind komprimiert, sodass sich der Verbrauch normalerweise in Grenzen hält.

Verbindung

Zeigt an, ob das Projektarchiv beim letzten Zugriff auf den Puffer verfügbar war.

Letzte Aktualisierung

Der Zeitpunkt, an dem der Pufferinhalt zuletzt geändert wurde.

Letzte HEAD-Aktualisierung

Das letzte Mal, als eine HEAD-Revision vom Server abgerufen wurde.

Autoren

Die Anzahl verschiedener Autoren mit Logmeldungen, die im Puffer gespeichert ist.

Pfade

Die Anzahl der aufgelisteten Pfade, wie man sie mit svn log -v sehen würde.

Lücken

Die Anzahl von Revisionsbereichen, die noch nicht gepuffert sind, weil sie bisher nicht abgefragt wurden. Dies ist ein Maß für die Anzahl der Lücken im Puffer.

Maximale Revision

Die höchste im Puffer gespeicherte Revisionsnummer.

Anzahl Revisionen

Die Anzahl der im Puffer gespeicherten Revisionen. Dies ist ein weiteres Maß für die Vollständigkeit des Puffers.

Clientseitige Aktionsskripte

Abbildung 4.86. Der Einstellungsdialog, Aktionsskripte

Der Einstellungsdialog, Aktionsskripte


Dieser Dialog erlaubt Ihnen, Aktionsskripte festzulegen, die automatisch bei bestimmten Subversionaktionen ausgeführt werden. Im Gegensatz zu den in „Serverseitige Aktionsskripte“ beschriebenen serverseitigen Aktionsskripten werden diese Skripte lokal ausgeführt.

Eine mögliche Anwendung für solche Aktionsskripte könnte zum Beispiel sein, eine Anwendung wie SubWCRev.exe aufzurufen, um Versionsnummern nach einer Übertragung zu aktualisieren oder ein Projekt neu zu erzeugen.

Beachten Sie bitte, dass Sie solche Aktionsskripte auch mittels spezieller Eigenschaften Ihrer Arbeitskopie einrichten können. Die Informationen dazu finden Sie in „TortoiseSVN-Projekteigenschaften“.

Abbildung 4.87. Der Einstellungsdialog, Aktionsskripte einrichten

Der Einstellungsdialog, Aktionsskripte einrichten


Um ein neues Aktionsskript anzulegen, klicken Sie einfach auf die Schaltfläche Hinzufügen und füllen die Details aus.

Derzeit stehen folgende Arten von Aktionsskripten zur Verfügung

Start Übertragung

Wird aufgerufen, bevor der Übertragen-Dialog angezeigt wird. Dieses Skript können Sie zum Beispiel benutzen, wenn sich durch die Aktion die Liste der zu übertragenden Dateien oder die Logmeldung ändert. Sie sollten jedoch beachten, dass aufgrund des frühen Aufrufs des Aktionsskripts nicht die vollständige Liste der zur Übertragung ausgewählten Objekte verfügbar ist.

Manuell vor der Übertragung

Mit dieser Option zeigt der Übertragen-Dialog die SchaltflächeAktionsskript ausführen an, mit der das angegebene Aktionsskript gestartet wird. An das Aktionsskript wird eine Liste aller markierten Dateien sowie die Logmeldung übergeben, falls eine eingetragen wurde.

Übertragung prüfen

Wird aufgerufen, nachdem der Anwender die Schaltfläche OK im Übertragen-Dialog geklickt hat und bevor der Übertragen-Dialog geschlossen wird. Wenn das Aktionsskript einen Fehler zurückgibt, bleibt der Übertragen-Dialog geöffnet.

Wenn der zurückgegebene Fehler Pfade in durch Zeilenumbrüche getrennte Zeilen enthält, werden diese im Übertragen-Dialog markiert, nachdem der Fehler angezeigt wurde.

Vor Übertragung

Wird aufgerufen, nachdem der Anwender die Schaltfläche OK im Übertragen-Dialog geklickt hat und bevor die Übertragung selbst beginnt. Diesem Aktionsskript steht die vollständige Liste der zu übertragenden Objekte zur Verfügung.

Nach Übertragung

Wird nach einer erfolgreichen Übertragung aufgerufen

Start Aktualisierung

Wird aufgerufen, bevor der Dialog Aktualisiere zu Revision angezeigt wird.

Vor Aktualisierung

Wird aufgerufen, bevor die Aktion Aktualisierung oder Wechseln Zu beginnt.

Nach Aktualisierung

Wird nach dem Ende von Aktualisieren, Auschecken oder Wechseln Zu aufgerufen, unabhängig davon, ob die Aktion erfolgreich war oder nicht.

Vor Verbindung

Wird aufgerufen, bevor versucht wird, das Projektarchiv zu kontaktieren. Beschränkt auf höchstens einen Aufruf in fünf Minuten.

Vor Sperre

Wird aufgerufen, bevor versucht wird, eine Datei zu sperren.

Nach Sperre

Wird aufgerufen, nachdem eine Datei gesperrt wurde.

Ein Aktionsskript wird für einen bestimmten Pfad einer Arbeitskopie definiert. Sie müssen nur den obersten Pfad angeben. Wenn Sie eine Aktion in einem Unterordner durchführen, wird TortoiseSVN automatisch weiter oben nach einem passenden Pfad suchen.

Als nächstes müssen Sie den auszuführenden Befehl angeben, beginnend mit den Pfad zum Aktionsskript bzw. zur ausführbaren Datei. Dies könnte eine Batch-Datei, eine ausführbare Datei oder eine andere Datei sein, die eine gültige Windows-Dateizuordnung hat, z. B. ein Perl-Skript. Beachten Sie, dass das Skript nicht durch einen UNC-Pfad angesprochen werden darf, da die Windows-Shell solche Skripte wegen Sicherheitseinschränkungen nicht ausführt.

Die Befehlszeile kann mehrere Parameter enthalten, die durch TortoiseSVN ausgefüllt werden. Welche Parameter zur Verfügung stehen, hängt vom aufgerufenen Aktionsskript ab. Jedes Aktionsskript hat seine eigenen Parameter, die in der folgenden Reihenfolge übergeben werden:

Start Übertragung

PATHMESSAGEFILECWD

Manuell vor der Übertragung

PATHMESSAGEFILECWD

Übertragung prüfen

PATHMESSAGEFILECWD

Vor Übertragung

PATHDEPTHMESSAGEFILECWD

Nach Übertragung

PATHDEPTHMESSAGEFILEREVISIONERRORCWD

Start Aktualisierung

PATHCWD

Vor Aktualisierung

PATHDEPTHREVISIONCWD

Nach Aktualisierung

PATHDEPTHREVISIONERRORCWDRESULTPATH

Vor Verbindung

no parameters are passed to this script. You can pass a custom parameter by appending it to the script path.

Vor Sperre

PATHLOCKFORCEMESSAGEFILECWD

Nach Sperre

PATHLOCKFORCEMESSAGEFILEERRORCWD

Die Bedeutung der Variablen wird in der folgenden Liste erklärt:

PATH

Ein Pfad zu einer temporären Datei, die alle Pfade enthält, für die die Operation in UTF-8-Codierung gestartet wurde. Jeder Pfad steht in einer separaten Zeile in der temporären Datei.

Beachten Sie, dass für Operationen in der Ferne, z. B. im Projektarchivbetrachter, diese Pfade nicht lokale Pfade, sondern die URLs der betroffenen Elemente sind.

DEPTH

Die Tiefe, mit der die Übertragung/Aktualisierung durchgeführt wird.

Mögliche Werte sind:

-2

svn_depth_unknown

-1

svn_depth_exclude

0

svn_depth_empty

1

svn_depth_files

2

svn_depth_immediates

3

svn_depth_infinity

MESSAGEFILE

Pfad zu einer Datei, welche die Logmeldung für die Übertragung in UTF-8-Codierung enthält. Nach erfolgreicher Ausführung der Aktion start-commit wird die Logmeldung zurück gelesen, sodass die Aktion die Meldung zwischendurch modifizieren kann.

REVISION

Die Revisionsnummer des Projektarchivs nach einer abgeschlossenen Übertragung bzw. zu der das Projektarchiv aktualisiert werden soll.

LOCK

Entweder true beim Sperren, oder false beim Entsperren.

FORCE

Entweder true oder false, je nachdem, ob die Aktion erzwungen wurde oder nicht.

ERROR

Pfad zu einer Datei, die die Fehlermeldung enthält. Wenn kein Fehler auftrat, ist die Datei leer.

CWD

Das aktuelle Arbeitsverzeichnis, in dem das Skript ausgeführt wird. Es wird auf das gemeinsame Basisverzeichnis aller betroffenen Pfade gesetzt.

RESULTPATH

Ein Pfad zu einer temporären Datei, die alle Pfade enthält, für die die Operation in UTF-8-Codierung gestartet wurde. Jeder Pfad steht in einer separaten Zeile in der temporären Datei.

Beachten Sie bitte Folgendes: Obwohl wir zu Ihrer Bequemlichkeit die Parameter angeben, müssen Sie in den Einstellungen des Aktionsskripts nicht darauf verweisen. Alle für ein bestimmtes Aktionsskript zur Verfügung stehenden Parameter werden immer an das Skript übergeben, ob Sie das wollen oder nicht ;-)

Falls Sie die Subversionoperation zurückhalten wollen, bis das Aktionsskript fertig ist, wählen Sie die Option Warte auf Beendigung des Skripts.

Normalerweise werden Sie hässliche DOS-Boxen ausblenden wollen, wenn das Skript ausgeführt wird, daher ist Skript während der Ausführung ausblenden standardmäßig aktiviert. Sie müssen dies auch überprüfen, wenn Ihr Aktionsskript möglicherweise einen Fehler zurückgibt, der den Vorgang stoppen soll.

The erzwingen flag can be set if the user must not proceed with the operation without running the script, i.e. the script must always run. If the erzwingen flag is not checked, then the user is shown a button Wiederholung ohne Aktionsskripte to retry the operation without running the hook script.

Beispielaktionsskripte finden sich im Ordner contrib des TortoiseSVN-Projektarchivs finden. „Lizenz“ erklärt, wie man auf das TortoiseSVN-Projektarchiv zugreift.

Beim Debuggen von Aktionsskripten sollten Sie per echo Fortschrittsanzeigen an die DOS-Konsole schicken oder einen pause-Befehl einfügen, um zu verhindern, dass das Konsolenfenster verschwindet, wenn das Skript abgeschlossen ist. Da die Ausgabe umgeleitet wird, funktioniert dies normalerweise nicht. Sie können jedoch die Ein- und Ausgabe explizit an CON umleiten, um das Problem zu umgehen, z. B.

echo Prüfe Status >con
pause <con >con

Ein kleines Programm namens ConnectVPN.exe ist im TortoiseSVN-Installationsordner enthalten. Sie können dieses Programm als pre-connect-Aktion einrichten, um sich automatisch mit Ihrem VPN zu verbinden, bevor TortoiseSVN das Projektarchiv kontaktiert. Übergeben Sie einfach als ersten Parameter den Namen der VPN-Verbindung an das Programm.

Integration mit Fehlerverfolgungssystemen

TortoiseSVN kann über eine COM-Schnittstelle aus dem Übertragen-Dialog Einträge von einem Fehlerverfolgungssystem abfragen. Die Verwendung solcher Module wird in „Informationen vom Fehlerverfolgungssystem beziehen“ beschrieben. Falls Ihr Systemadministrator Ihnen ein solches Modul zur Verfügung gestellt hat, das Sie installiert und registriert haben, stellen Sie auf dieser Seite ein, wie es in Ihre Arbeitskopien integriert wird.

Abbildung 4.88. Der Einstellungsdialog, Integration eines Fehlerverfolgungssystems

Der Einstellungsdialog, Integration eines Fehlerverfolgungssystems


Klicken Sie auf Hinzufügen..., um das Modul einer bestimmten Arbeitskopie zuzuordnen. Sie geben den Pfad zur Arbeitskopie an, wählen das gewünschte Modul aus einer Liste der zur Verfügung stehenden Module und geben die notwendigen Übergabeparameter an. Die Parameter sind spezifisch für das Modul, können aber Ihren Benutzernamen im Fehlerverfolgungssystem beinhalten, sodass das Modul alle Ihnen zugeordneten Einträge ermitteln kann.

Wenn Sie möchten, dass alle Anwender das gleiche COM-Modul für Ihr Fehlerverfolgungssystem verwenden, können Sie das Modul auch über die Eigenschaften bugtraq:provideruuid, bugtraq:provideruuid64 und bugtraq:providerparams einrichten.

bugtraq:provideruuid

Diese Eigenschaft enthält die COM-UUID des IBugtraqProvider, zum Beispiel {91974081-2DC7-4FB1-B3BE-0DE1C8D6CE4E}. Das Beispiel ist die UUID des Gurtle bugtraq provider, einer Anbindung für das Google Code-Fehlerverfolgungssystem.

bugtraq:provideruuid64

Dies ist dasselbe wie bugtraq:provideruuid, aber für die 64-Bit-Version von IBugtraqProvider.

bugtraq:providerparams

Diese Eigenschaft enthält die Parameter, die an den IBugtraqProvider übergeben werden.

Bitte lesen Sie in der Dokumentation zu Ihrem IBugtraqProvider-Modul nach, was in diesen beiden Eigenschaften einzutragen ist.

TortoiseBlame-Einstellungen

Abbildung 4.89. Der Einstellungsdialog, TortoiseBlame

Der Einstellungsdialog, TortoiseBlame


Die Einstellungen von TortoiseBlame werden im TortoiseSVN-Einstellungsdialog vorgenommen, nicht in TortoiseBlame selbst.

Farben

TortoiseBlame kann mit Hilfe der Hintergrundfarbe das Alter der Zeilen in einer Datei anzeigen. Sie können die Anfangs- und Endfarbe für die neueste bzw. älteste Revision festlegen. TortoiseBlame wird, entsprechend der Revisionsnummer, der Zeile eine Farbe zwischen diesen Werten zuordnen.

Sie können verschiedene Farben für die Navigationsleiste angeben. Als Vorgabe wird ein starker Kontrast verwendet, während das Hauptfenster hell gehalten wird, sodass sie den Text noch lesen können.

Schriftart

Sie können die Schriftart und Größe zur Anzeige des Textes festlegen. Diese Einstellung wird sowohl für den Inhalt als auch für die Autor- und Revisionsinformationen auf der linken Seite verwendet.

Tabulator

Legt fest, wie viele Leerzeichen für einen Tabulator eingesetzt werden sollen.

TortoiseUDiff-Einstellungen

Abbildung 4.90. Der Einstellungsdialog, TortoiseUDiff

Der Einstellungsdialog, TortoiseUDiff


Die Einstellungen von TortoiseUDiff werden im TortoiseSVN-Einstellungsdialog vorgenommen, nicht in TortoiseUDiff selbst.

Farben

Die Standardfarben von TortoiseUDiff sind normalerweise in Ordnung, Sie können sie aber auch selbst anpassen.

Schriftart

Sie können die zu verwendende Schriftart und -größe festlegen.

Tabulator

Legt fest, wie viele Leerzeichen für einen Tabulator eingesetzt werden sollen.

Exportieren von TSVN-Einstellungen

Abbildung 4.91. Der Einstellungsdialog, Synchronisation

Der Einstellungsdialog, Synchronisation


Sie können alle TortoiseSVN-Einstellungen mit einer verschlüsselten Datei synchronisieren. Die Datei ist mit dem von Ihnen eingegebenen Passwort verschlüsselt, sodass Sie sich keine Sorgen machen müssen, wenn Sie diese Datei in einem Cloud-Ordner wie OneDrive, GDrive, DropBox ... speichern.

Wenn ein Pfad und ein Passwort angegeben sind, wird TortoiseSVN alle Einstellungen automatisch speichern und synchron halten.

Sie können auch verschlüsselte Dateien mit allen Einstellungen manuell importieren/exportieren. Wenn Sie das tun, werden Sie nach dem Pfad der Datei und dem Passwort zum Ver- bzw. Entschlüsseln gefragt.

Wenn Sie die Einstellungen manuell exportieren, können Sie optional die lokalen Einstellungen mit einschließen, die normalerweise bei Export oder Synchronisation nicht mit dabei sind. Lokale Einstellungen sind Einstellungen, die lokale Pfade enthalten, die sich normalerweise zwischen Computern unterscheiden. Diese lokalen Einstellungen enthalten die konfigurierten Vergleichsprogramme sowie die Aktionsskripte.

Erweiterte Einstellungen

Einige selten genutzte Einstellungen können nur über die Seite Erweitert des Einstellungsdialoges angepasst werden. Sie verändern direkt Einträge in der Registrierung und Sie müssen wissen, wozu jede dieser Einstellungen verwendet wird und was sie bewirkt. Verändern Sie die Einstellungen nicht, außer Sie sind sich sicher, dass das erforderlich ist.

AllowAuthSave

Manchmal verwenden mehrere Benutzer das gleiche Konto auf demselben Computer. In solchen Situationen ist es nicht wünschenswert, die Anmeldedaten zu speichern. Setzen Sie diesen Wert auf false, um die Schaltfläche Anmeldedaten speichern im Anmeldedialog zu deaktivieren.

AllowUnversionedObstruction

Wenn durch eine Aktualisierung eine lokal existierende, nicht versionierte Datei durch eine neue Datei aus dem Projektarchiv überschrieben wird, behält TortoiseSVN standardmäßig die lokale Datei und zeigt sie als (mögliche) Änderung der neuen Datei an. Wenn Sie stattdessen möchten, dass TortoiseSVN einen Konflikt anzeigt, setzen Sie diesen Wert auf false.

AlwaysExtendedMenu

Wie der Explorer zeigt TortoiseSVN weitere Befehle an, wenn die Umschalt-Taste beim Öffnen des Kontextmenüs gedrückt wird. Um TortoiseSVN dazu zu zwingen, die erweiterten Befehle immer anzuzeigen, setzen Sie diesen Wert auf true.

AutoCompleteMinChars

Der Minimalwert an Zeichen, ab denen der Editor eine automatische Vervollständigungsliste erzeugt. Der Standardwert ist 3.

AutocompleteRemovesExtensions

Die automatische Vervollständigungsliste im Übertragen-Dialog enthält die Namen der zu übertragenden Dateien. Um die Dateinamen zusätzlich ohne Erweiterung in die Liste aufzunehmen, setzen Sie diesen Wert auf true.

BlockPeggedExternals

Externe Dateien, die an eine bestimmte Revision gekoppelt sind, werden standardmäßig vom Übertragen ausgeschlossen. Das geschieht, weil eine nachfolgende Aktualisierung diese Änderungen solange wieder rückgängig machen würde, bis die fixe Revision der externen Datei angepasst wird.

Setzen Sie diesen Wert auf false, wenn Sie Änderungen an solchen externen Dateien trotzdem übertragen wollen.

BlockStatus

Wenn Sie verhindern möchten, dass der Explorer die überlagerten Symbole aktualisiert, während ein TortoiseSVN-Befehl läuft, setzen Sie diesen Wert auf true.

CacheTrayIcon

Um ein Puffer-Symbol zur Statusleiste hinzuzufügen, setzen Sie diesen Wert auf true. Diese Einstellung ist eigentlich nur für Entwickler gedacht, die den TortoiseSVN-Puffer sanft beenden wollen.

ColumnsEveryWhere

Die Extraspalten, die TortoiseSVN zur Detailansicht des Explorers hinzufügt, stehen normalerweise nur in Arbeitskopien zur Verfügung. Wenn Sie überall auf diese Spalten zugreifen möchten, setzen Sie diesen Wert auf true. Beachten Sie bitte, dass die Extraspalten nur in Windows XP zur Verfügung stehen. Vista und neuer unterstützen diese Funktion nicht mehr. Manche Explorer von Drittanbietern unterstützen diese Spalten jedoch auch in neueren Windows-Versionen als XP.

ConfigDir

Mit dieser Einstellung können Sie einen anderen Ort für die Subversion-Konfigurationsdateien angeben. Dies beeinflusst alle TortoiseSVN-Aktionen.

CtrlEnter

In den meisten Dialogen in TortoiseSVN können Sie Strg+Enter verwenden, um den Dialog mit OK zu bestätigen. Wenn Sie das nicht möchten, setzen Sie diesen Eintrag auffalse.

Debug

Setzen Sie diese Eigenschaft auf true, wenn Sie möchten, dass für jeden Aufruf von TortoiseProc.exe ein Dialog mit der verwendeten Kommandozeile angezeigt wird.

DebugOutputString

Setzen Sie diese Eigenschaft auf true, wenn Sie möchten, dass TortoiseSVN Debug-Meldungen während der Ausführung ausgibt. Die Nachrichten können nur mit speziellen Debugging-Tools erfasst werden.

DialogTitles

Das Standardformat (Wert 0) der Dialogtitel ist URL/Pfad - Name des Dialoges - TortoiseSVN. Wenn Sie diesen Wert auf 1 setzen, ändert sich das Format in Namen des Dialoges - URL/Pfad - TortoiseSVN.

DiffBlamesWithTortoiseMerge

TortoiseSVN ermöglicht es Ihnen, externe Vergleichsprogramme zu verwenden. Die meisten dieser Programme sind allerdings nicht in der Lage, Änderungen zu annotieren („Unterschiede annotieren“), sodass Sie dafür wieder TortoiseMerge verwenden möchten. Zu diesem Zweck setzen Sie den Wert auf true.

DlgStickySize

Dieser Wert legt die Anzahl an Pixeln fest, unter die der Abstand eines Dialoges zum Rand sinken muss, damit sich der Dialog am Rand anheftet. Der Vorgabewert ist drei. Zum Deaktivieren setzen Sie den Wert auf null.

FixCaseRenames

Manche Anwendungen ändern die Groß-/Kleinschreibung von Dateinamen, ohne darauf hinzuweisen. Diese Änderungen sind bei Versionskontrollsystemen weder notwendig noch erwünscht. Eine Umbenennung von file.txt in FILE.TXT wird von normalen Windows-Programmen ignoriert, von Subversion jedoch als Änderung erkannt. TortoiseSVN repariert solche Umbenennungen automatisch.

Wenn Sie nicht möchten, dass TortoiseSVN solche Umbenennungen automatisch repariert, setzen Sie diesen Wert auf false.

FullRowSelect

Die in verschiedenen Dialogen verwendete Statusliste (Übertragen, auf Änderungen prüfen, rückgängig ...) hinterlegt die ganze Zeile farbig und nicht nur die erste Spalte, wenn Sie eine Auswahl treffen. Dadurch wird unter Umständen das Hintergrundbild unten rechts verdeckt, was hässlich aussehen kann. Wenn Sie möchten, dass nur die erste Spalte hinterlegt wird, setzen Sie diesen Wert auf false.

GroupTaskbarIconsPerRepo

Diese Option bestimmt, wie die Symbole der verschiedenen TortoiseSVN-Dialoge und Fenster auf der Taskleiste von Windows 7 zusammengefasst werden. Diese Option hat unter Windows Vista keinen Effekt.

  1. Der Vorgabewert ist 0. Mit dieser Einstellung werden die Symbole nach der Anwendung gruppiert. Alle Dialoge von TortoiseSVN werden zusammengefasst, alle Fenster von TortoiseMerge ...

    Abbildung 4.92. Anwendungsleiste mit Standardgruppierung

    Anwendungsleiste mit Standardgruppierung


  2. Wenn der Wert auf 1 gesetzt ist, werden alle Dialoge nach ihrem Projektarchiv gruppiert. Wenn Sie zum Beispiel einen Log- und einen Übertragen-Dialog für Projektarchiv A sowie einen Änderungen prüfen- und einen Log-Dialog für Projektarchiv B geöffnet haben, wird für jedes Projektarchiv eine Gruppe von Anwendungssymbolen in der Anwendungsleiste von Windows 7 angezeigt. TortoiseMerge-Symbole werden nicht mit Symbolen von TortoiseSVN gruppiert.

    Abbildung 4.93. Anwendungsleiste mit Gruppierung nach Projektarchiv

    Anwendungsleiste mit Gruppierung nach Projektarchiv


  3. Wenn der Wert auf 2 gesetzt ist, verhält sich die Gruppierung wie bei Option 1, mit dem Unterschied, dass die TortoiseSVN-, TortoiseMerge-, TortoiseBlame- und TortoiseUDiff-Fenster zusammengefasst werden. Wenn Sie zum Beispiel einen Übertragen-Dialog geöffnet haben und einen Doppelklick auf eine geänderte Datei machen, wird das TortoiseMerge-Fenster in dieselbe Symbolgruppe gesetzt, wie das Symbol des Übertragen-Dialogs.

    Abbildung 4.94. Anwendungsleiste mit Gruppierung nach Projektarchiv

    Anwendungsleiste mit Gruppierung nach Projektarchiv


  4. Wenn der Wert auf 3 gesetzt ist, verhält sich die Gruppierung ähnlich wie bei 1, allerdings werden die Dialoge nach ihrer Arbeitskopie und nicht nach dem Projektarchiv zusammengefasst. Diese Einstellung ist nützlich, wenn alle Ihre Projekte aus demselben Projektarchiv stammen, sie aber unterschiedliche Arbeitskopien für jedes Projekt verwenden.

  5. Wenn der Wert auf 4 gesetzt ist, verhält sich die Gruppierung ähnlich wie bei 2, allerdings werden die Dialoge nach ihrer Arbeitskopie und nicht nach dem Projektarchiv zusammengefasst.

GroupTaskbarIconsPerRepoOverlay

Dies hat keine Auswirkungen, wenn die Option GroupTaskbarIconsPerRepo auf null (siehe oben) gesetzt ist.

Wenn diese Option auf true gesetzt wird, erhält jedes Symbol in der Anwendungsleiste von Windows 7 ein kleines farbiges Rechteck, welches das zu den Fenstern bzw. Dialogen gehörende Projektarchiv anzeigt.

Abbildung 4.95. Gruppierte Anwendungsleiste mit überlagerten Farben für die Projektarchive

Gruppierte Anwendungsleiste mit überlagerten Farben für die Projektarchive


HideExternalInfo

Wenn der Wert auf false gesetzt ist, wird jeder svn:externals-Verweis während einer Aktualisierung gesondert angezeigt.

Wenn der Wert auf true (Vorgabe) gesetzt ist, wird die Aktualisierungsinformation für svn:externals nur angezeigt, wenn diese durch die Aktualsierung verändert werden. Andernfalls wird wie bei normalen Dateien und Ordnern nichts angezeigt.

HookCancelError

Wenn diese Einstellung auf true gesetzt wird, dann führt ein Abbrechen des Bestätigungsdialogs für die Ausführung eines Hook-Skripts zu einer Fehlermeldung welche sagt dass der Benutzer abgebrochen hat.

IncludeExternals

Standardmäßig aktualisiert TortoiseSVN seine Arbeitskopien inklusive der externen Verweise. Das vermeidet Probleme mit inkonsistenten Arbeitskopien. Wenn Sie viele externe Verweise definiert haben, kann die Aktualisierung eine gewisse Zeit in Anspruch nehmen. Setzen Sie diesen Wert auf false, damit TortoiseSVN die externen Verweise standardmäßig nicht aktualisiert. Um diese zu aktualisieren, rufen Sie entweder die Funktion Aktualisiere zu Revision... auf oder setzen Sie den Wert wieder auf true.

LogFindCopyFrom

Wenn der Log-Dialog aus dem Zusammenführen-Assistenten heraus gestartet wird, werden bereits zusammengeführte Revisionen in grau angezeigt. Revisionen, die vor dem Punkt liegen, an dem der Zweig angelegt wurde, sind ebenfalls sichtbar. Diese Revisionen werden schwarz angezeigt, da sie nicht zusammengeführt werden können.

Wenn diese Option auf true gesetzt wird, versucht TortoiseSVN die Revision zu finden, in welcher der Zweig angelegt wurde und alle Revisionen davor zu verbergen. Da dies eine Weile in Anspruch nehmen kann, ist die Option standardmäßig abgeschaltet. Außerdem funktioniert sie nicht bei jedem SVN-Server (z. B. Google Code Hosting, siehe Issue #5471).

LogMultiRevFormat

Eine Formatvorlage für die Logmeldungen, wenn mehrere Revisionen im Log-Dialog markiert sind.

Sie können die folgenden Platzhalter in Ihrem Text verwenden:

%1!ld!
wird durch die Revisionsnummer ersetzt.
%2!s!
wird durch die kurze Logmeldung der Revision ersetzt.
LogStatusCheck

Der Log-Dialog zeigt die Revision der Arbeitskopie in fett an. Das erfordert jedoch, dass der Log-Dialog den Status dieses Pfades ermittelt. Da dies bei großen Arbeitskopien eine gewisse Zeit in Anspruch nehmen kann, können Sie diesen Wert auf false setzen, um die Funktion zu deaktivieren.

MaxHistoryComboItems

Kombinationsfelder für URLs und Pfade zeigen eine Historie der zuvor verwendeten URLs und Pfade an, wenn möglich. Diese Einstellung steuert, wie viele vorherige Elemente gespeichert und angezeigt werden. Standard ist 25 Elemente.

MergeLogSeparator

Wenn Sie Revisionen von einem anderen Zweig zusammenführen und die Funktionen zum Protokollieren der Datenintegration zur Verfügung stehen, werden die Logmeldungen der zusammengeführten Revisionen zu einer neuen Logmeldung zusammengefasst. Eine vordefinierte Zeichenkette wird zum Trennen der einzelnen Logmeldungen verwendet. Wenn Sie möchten, können Sie hier einen individuellen Trenner angeben.

NumDiffWarning

Wenn Sie für mehr als die hier eingestellte Anzahl von Objekten auf einmal den Vergleicher starten, wird eine Warnung angezeigt. Die Vorgabe ist 10.

OldVersionCheck

TortoiseSVN prüft einmal wöchentlich, ob eine neue Version zur Verfügung steht. Ist das der Fall, zeigt der Übertragen-Dialog einen entsprechenden Verweis an. Wenn Sie das alte Verhalten bevorzugen, dass ein Hinweisdialog erscheint, setzen Sie diesen Wert auf true.

RepoBrowserTrySVNParentPath

Der Projektarchivbetrachter versucht, eine Liste der Projektarchive von der Webseite zu laden, die ein SVN-Server mit der SVNParentPath-Direktive generiert. Um dieses Verhalten zu deaktivieren, setzen Sie den Wert auffalse.

ScintillaBidirectional

Diese Option aktiviert den bidirektionalen Modus für das Bearbeitungsfeld für Übertragungsmeldungen. Wenn aktiviert, wird die Textbearbeitung von rechts nach links korrekt durchgeführt. Da diese Funktion aufwendig ist, ist sie standardmäßig deaktiviert. Sie können sie aktivieren, indem Sie diesen Wert auf true setzen.

ScintillaDirect2D

Diese Option ermöglicht die Verwendung von Direct2D beschleunigter Darstellung in dem Scintilla-Steuerelement, das als Eingabefeld z. B. im Übertragen-Dialog und auch für den Standard-Diff-Betrachter verwendet wird. Mit einigen Grafikkarten funktioniert dies jedoch manchmal nicht richtig, sodass der Eingabecursor nicht immer sichtbar ist. Wenn das passiert, können Sie die Feature deaktivieren, indem Sie den Wert auf falsefestlegen.

OutOfDateRetry

Dieser Parameter gibt an, wie sich TortoiseSVN verhält, wenn eine Übertragung aufgrund eines veralteten Fehlers fehlschlägt:

0

Der Benutzer wird gefragt, ob die Arbeitskopie aktualisiert werden soll. Der Festschreibungsdialog wird nach der Aktualisierung nicht erneut geöffnet.

1

Dies ist die Standardeinstellung. Der Benutzer wird gefragt, ob die Arbeitskopie aktualisiert werden soll. Der Übertragungsdialog wird nach der Aktualisierung erneut geöffnet, damit der Benutzer sofort mit der Übertragung fortfahren kann.

2

Ähnlich wie 1 erfolgt die Aktualisierung im Stammverzeichnis der Arbeitskopie, statt nur die für eine Übertragung ausgewählten Pfade zu aktualisieren. Dadurch werden inkonsistente Arbeitskopien vermieden.

3

Der Benutzer wird nicht aufgefordert, die Arbeitskopie zu aktualisieren. Die Übertragung schlägt einfach mit der veralteten Fehlermeldung fehl.

PlaySound

Wenn auf true gesetzt, gibt TortoiseSVN einen Systemsound aus, wenn ein Fehler, eine Warnung oder eine andere wichtige Situation auftritt, die Ihre Aufmerksamkeit erfordert. Setzen Sie dies auf false, wenn Sie TortoiseSVN ruhig halten wollen. Beachten Sie, dass der Projektmonitor eine eigene Einstellung für die Soundwiedergabe hat, die Sie in seinem Einstellungsdialog konfigurieren können.

ShellMenuAccelerators

TortoiseSVN verwendet Abkürzungstasten für seine Explorer-Kontextmenüs. Da dies zu Duplikaten führen kann (z. B. haben sowohl Zeige Log als auch Löschen die Kurztaste Alt+L), können Sie diese Funktion abschalten, indem Sie diesen Wert auf false setzen.

ShowContextMenuIcons

Dies kann nützlich sein, wenn Sie einen anderen Dateimanager als den Windows Explorer benutzen oder wenn Sie Probleme mit der Darstellung der Kontextmenüs haben. Setzen Sie diesen Wert auf false, wenn Sie möchten, dass TortoiseSVN keine Icons im Kontextmenü anzeigen soll. Setzen Sie ihn auf true, wenn die Symbole wieder angezeigt werden sollen.

ShowAppContextMenuIcons

Wenn Sie nicht möchten, dass TortoiseSVN Symbole in seinen eigenen Kontextmenüs anzeigt, setzen Sie diesen Wert auf true.

ShowNotifications

Setzen Sie diesen Wert auf false, wenn Sie nicht möchten, dass der Projektmonitor Benachrichtigungen anzeigt, wenn neue Übertragungen entdeckt werden.

StyleCommitMessages

Die Übertragen- und Log-Dialoge verwenden verschiedene Schriftstile (z. B. fett, kursiv) in Logmeldungen (siehe „Logmeldungen“ für Details). Wenn Sie das nicht möchten, setzen Sie diesen Wert auf false.

UpdateCheckURL

Dieser Wert enthält die URL, von welcher TortioseSVN versucht, eine Text-Datei mit Informationen darüber zu laden, ob eine neue Version erhältlich ist. Dies ist nützlich in Fällen, in denen der Administrator nicht möchte, dass Benutzer TortoiseSVN selber aktualisieren, bevor der Administrator die Version freigegeben hat.

UseCustomWordBreak

Die Standard-Bearbeitungssteuerelemente enden nicht bei Schrägstrichen, wie sie in Pfaden und URLs zu finden sind. TortoiseSVN verwendet ein benutzerdefiniertes Wortumbruchverfahren für die Bearbeitungssteuerelemente. Wenn Sie das nicht wünschen und stattdessen den Standard verwenden, setzen Sie diesen Wert auf 0. Wenn Sie nur den Standard für Bearbeitungssteuerelemente in Kombinationsfeldern wünschen, setzen Sie diesen Wert auf 1.

VersionCheck

TortoiseSVN prüft einmal wöchentlich, ob eine neue Version zur Verfügung steht. Wenn Sie das nicht möchten, setzen Sie diesen Wert auf false.

Letzter Schritt

Kapitel 5. Projektmonitor

Der Projektmonitor ist ein nützliches Werkzeug, das Projektarchive beobachtet und Sie benachrichtigt, wenn es neue Übertragungen gibt.

Die Projektarchive können entweder über den Pfad ihrer Arbeitskopie oder direkt über ihre URL beobachtet werden.

Der Projektmonitor prüft jedes Projekt in einem einstellbaren Intervall auf Änderungen und zeigt, sobald solche erkannt werden, eine Benachrichtigung an. Außerdem wird ein Hinweissymbol im Windows-Benachrichtigungsbereich angezeigt.

Snarl

Wenn Snarl installiert und aktiv ist, verwendet der Projektmonitor automatisch Snarl, um die Benachrichtigungen über neue Änderungen anzuzeigen.

Projekte zum Monitor hinzufügen

Wenn Sie den Projektmonitor das erste Mal starten, ist die Baumansicht auf der linken Seite leer. Ein neues Projekt fügen Sie mit der Schaltfläche Projekt hinzufügen zum Monitor hinzu.

Abbildung 5.1. Der Dialog zum Bearbeiten der Projekte

Der Dialog zum Bearbeiten der Projekte


Füllen Sie die nötigen Informationen aus, um ein Projekt zur Überwachung hinzuzufügen. Der Name des Projektes ist erforderlich, alle anderen Informationen sind optional.

Wenn Sie das Feld für Pfad oder URL leer lassen, wird ein Ordner hinzugefügt. Das ist nützlich, um überwachte Projekte zusammenzufassen.

Wenn Sie alle Projektarchive, die via SVNParentPath-Direktive ausgeliefert werden, überwachen möchten, geben Sie die entsprechende URL ein und setzen einen Haken im Kontrollkästchen URL zeigt auf SVNParentPath-Liste.

Die Felder Benutzername und Passwort sollten nur ausgefüllt werden, wenn das Projektarchiv keinen anonymen Lesezugriff erlaubt und nur, wenn die Anmeldedaten nicht bereits von Subversion selbst gespeichert wurden. Wenn Sie auf das Projektarchiv mit TortoiseSVN oder anderen SVN-Clients zugreifen und die Anmeldedaten bereits gespeichert haben, sollten Sie diese Felder leer lassen. Sie müssen die Projekte dann nicht manuell anpassen, wenn sich das Passwort ändert.

Das Überwachungsintervall in Minuten legt die Zeit zwischen zwei Überprüfungen fest. Das kleinste Intervall ist eine Minute.

Überwachungsintervall begrenzen

Wenn viele Anwender ein Projektarchiv überwachen und die Bandbreite des Servers begrenzt ist, kann der Administrator eine Mindestgröße für die Überwachungsintervalle mittels einer Datei svnrobots.txt vorgeben. Eine detaillierte Erklärung, wie dies funktioniert, finden Sie auf der Webseite des Projektmonitors:

https://tools.stefankueng.com/svnrobots.html

Monitordialog

Abbildung 5.2. Der Hauptdialog des Projektmonitors

Der Hauptdialog des Projektmonitors


Der Projektmonitor stellt alle überwachten Projekte in einer Baumansicht am linken Rand dar. Die Projekte können im Baum verschoben werden, so kann zum Beispiel ein Projekt zu einem Unterprojekt eines anderen gemacht werden.

Ein Klick auf ein Projekt zeigt auf der rechten Seite alle Logmeldungen dieses Projektes.

Projekte mit Aktualisierungen werden fett angezeigt, mit der Anzahl der neuen Übertragungen in Klammern. Ein Klick auf ein Projekt markiert es automatisch als gelesen.

Hauptaktionen

Mit der Werkzeugleiste am oberen Rand des Dialogs ermöglicht die Konfiguration und Bedienung des Projektmonitors.

Jetzt prüfen

Während jedes überwachte Projekt entsprechend dem eingestellten Intervall beobachtet wird, erzwingt ein Klick auf diese Schaltfläche eine sofortige Überprüfung aller Projekte. Wenn es Benachrichtigungen gibt, werden diese erst angezeigt, nachdem alle Projekte geprüft wurden.

Projekt hinzufügen

Öffnet einen Dialog, mit dem Sie ein neues Projekt zur Beobachtungsliste hinzufügen können.

Bearbeiten

Öffnet den Einstellungsdialog für das gewählte Projekt.

Entfernen

Entfernt das gewählte Projekt, nachdem eine Bestätigung angezeigt wurde.

Markiert alle als gelesen

Markiert alle Revisionen in allen Projekten als gelesen. Wenn Sie von einem Projekt mit ungelesenen Revisionen zu einem anderen Projekt wechseln, werden diese Revisionen automatisch als gelesen markiert.

Wenn Sie die Umschalt-Taste beim Klicken gedrückt halten, werden alle vorhandenen Fehlerstatus gelöscht.

Alle aktualisieren

Führt den Befehl Aktualisieren für alle beobachteten Projekte aus. Projekte, die per URL beobachtet werden, werden nicht aktualisiert, nur solche, die mit einer Arbeitskopie als Pfad eingerichtet wurden.

Einstellungen

Öffnet einen Dialog, mit dem das Verhalten des Projektmonitors eingestellt werden kann.

Kapitel 6. Das SubWCRev-Programm

SubWCRev ist ein Windows-Kommandozeilenprogramm, das dazu verwendet werden kann, den Status einer Subversion-Arbeitskopie zu ermitteln und optional Schlüsselwörter in einer Vorlagendatei zu ersetzen. Dies wird häufig als Teil eines automatisierten Erstellungsprozesses verwendet, um Informationen über die Arbeitskopie in das erstellte Objekt einfließen zu lassen. Beispielsweise kann man damit die Revisionsnummer in einen Über...-Dialog einbetten.

Die SubWCRev-Kommandozeile

SubWCRev liest den Subversion-Status aller Dateien einer Arbeitskopie. Externals werden standardmäßig ausgeschlossen. Es ermittelt die höchste Revisionsnummer sowie deren Zeitstempel. Außerdem wird festgehalten, ob es lokale Änderungen in der Arbeitskopie sowie gemischte Revisionsnummern aus verschiedenen Aktualisierungen gibt. Die Revisionsnummer, der Revisionsbereich und der Änderungsstatus werden auf die Standardausgabe ausgegeben.

SubWCRev.exe wird per Kommandozeile oder Skript aufgerufen und über die Kommandozeilenparameter

SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]
      

gesteuert.

ArbeitsKopiePfad ist der Pfad der zu prüfenden Arbeitskopie. Sie können SubWCRev nur auf Arbeitskopien und nicht direkt auf Projektarchive anwenden. Der Pfad kann absolut oder relativ zum aktuellen Arbeitsverzeichnis sein.

Wenn Sie möchten, dass SubWCRev Schlüsselwortersetzungen durchführt, sodass Felder wie Revisionsnummer und URL in einer Textdatei gespeichert werden, müssen Sie eine Schablone QuellVersionDatei und eine Ausgabedatei ZielVersionDatei angeben, die die ersetzte Version der Schablone enthält.

Sie können Ausschlussmuster für SubWCRev festlegen, um bestimmte Dateien und Pfade zu ignorieren. Die Muster werden aus einer Datei namens .subwcrevignore gelesen. Die Datei wird im angegebenen Pfad und in der Wurzel der Arbeitskopie gesucht. Wird sie nicht gefunden, so werden auch keine Dateien oder Pfade ignoriert. Die Datei .subwcrevignore kann mehrere durch Zeilenumbrüche getrennte Muster enthalten. Die Muster werden relativ zur Wurzel der Arbeitskopie und relativ zur Datei .subwcrevignore angewendet. Um zum Beispiel sämtliche Dateien im doc-Ordner der TortoiseSVN-Arbeitskopie zu auszuschließen, würde die Datei .subwcrevignore die folgenden Zeilen enthalten:

/trunk/doc
/trunk/doc/*

Oder unter der Annahme, dass sich die Datei .subwcrevignore in der Wurzel der von trunk ausgecheckten Arbeitskopie befindet, würden die Muster

doc
doc/*

das Gleiche erreichen.

Um sämtliche Bilder auszuschließen, könnten die Muster folgendermaßen aussehen:

*.png
*.jpg
*.ico
*.bmp

Wichtig

Die Ausschlussmuster unterscheiden Groß-/Kleinschreibung, genau wie bei Subversion.

Tipp

Um eine Datei mit einem führenden Punkt im Windows Explorer anzulegen, geben Sie .subwcrevignore. ein. Beachten Sie den angehängten Punkt.

Es gibt mehrere Kommandozeilenoptionen, die die Arbeitsweise von SubWCRev beeinflussen. Wenn Sie mehrere Optionen verwenden, müssen diese in einer einzelnen Gruppe angegeben werden, z. B. -nm, nicht -n -m.

Tabelle 6.1. Liste der Kommandozeilenoptionen

WechselnBeschreibung
-nMit dieser Option gibt SubWCRev ERRORLEVEL 7 zurück, wenn die Arbeitskopie lokale Modifikationen enthält. Damit kann das Erzeugen mit nicht übertragenen Änderungen vermieden werden.
-NMit dieser Option gibt SubWCRev ERRORLEVEL 11 zurück, wenn die Arbeitskopie unversionierte Objekte enthält, die nicht ignoriert werden.
-mMit dieser Option gibt SubWCRev ERRORLEVEL 8 zurück, wenn die Arbeitskopie gemischte Revisionen enthält. Damit kann das Erzeugen mit einer nur teilweise aktuellen Arbeitskopie vermieden werden.
-dMit dieser Option gibt SubWCRev ERRORLEVEL 9 zurück, wenn die Zieldatei bereits existiert.
-fMit dieser Option wird SubWCRev die zuletzt geänderte Revision von Ordnern beachten. Die Vorgabe ist, dass nur Dateien zum Ermitteln der Revisionsnummern herangezogen werden.
-eMit dieser Option wird SubWCRev Verzeichnisse überprüfen, die mittels svn:externals eingebunden wurden, wenn diese auf das gleiche Projektarchiv verweisen. Die Vorgabe ist, externe Verweise zu ignorieren.
-EWenn dieser Schalter wie in -e angegeben ist, werden jedoch die Externals mit expliziten Revisionen ignoriert, wenn der Revisionsbereich in ihnen nur die angegebene explizite Revision in den Eigenschaften ist. So werden gemischte Revisionen unterbunden.
-xWenn dieser Schalter angegeben wurde, gibt SubWCRev die Revisionsnummern in HEX aus.
-XMit dieser Option gibt SubWCRev die Revisionsnummern in HEX mit vorangestelltem '0X' aus.
-FMit dieser Option ignoriert SubWCRev sämtliche .subwcrevignore Dateien und schließt alle Dateien ein.
-qMit dieser Option wird SubWCRev die Schlüsselwörter ersetzen, ohne den Status der Arbeitskopie auf die Standardausgabe auszugeben.


Wenn kein Fehler vorliegt, gibt SubWCRev null zurück. Falls ein Fehler auftritt, wird die Fehlermeldung nach stderr geschrieben und in der Konsole angezeigt. Die zurückgegebenen Fehlercodes sind:

Tabelle 6.2. Liste der SubWCRev-Fehlercodes

FehlercodeBeschreibung
1Syntaxfehler. Mindestens ein Kommandozeilen-Parameter ist ungültig.
2Die/Der in der Befehlszeile angegebene Datei/Ordner wurde nicht gefunden.
3Die Eingabedatei konnte nicht geöffnet werden oder die Zieldatei konnte nicht erstellt werden.
4Konnte keinen Speicher reservieren. Dies könnte passieren, wenn z. B. die Quelldatei zu groß ist.
5Die Quelldatei kann nicht ordnungsgemäß gescannt werden.
6SVN-Fehler: Subversion gab einen Fehler zurück, als SubWCRev versuchte, die Informationen aus der Arbeitskopie zu ermitteln.
7Die Arbeitskopie enthält lokale Änderungen. Dies erfordert den Schalter -n.
8Die Arbeitskopie enthält gemischte Revisionen. Dies erfordert den Schalter -m.
9Die Ausgabedatei ist bereits vorhanden. Dies erfordert den Schalter -d.
10Der angegebene Pfad ist keine Arbeitskopie oder ein Teil davon.
11Die Arbeitskopie enthält nicht versionierte Dateien oder Ordner. Dies erfordert den Schalter -N.


Schlüsselwortersetzung

Wenn eine Quell- und eine Zieldatei angegeben werden, kopiert SubWCRev die Quelldatei zur Zieldatei und ersetzt dabei die folgenden Schlüsselwörter:

Tabelle 6.3. Liste verfügbarer Schlüsselwörter

SchlüsselwortBeschreibung
$WCREV$Wird durch die höchste Revisionsnummer in der Arbeitskopie ersetzt.
$WCREV&$Wird durch die höchste Revisionsnummer in der Arbeitskopie ersetzt und mit dem Wert nach dem Zeichen & logisch UND verknüpft. Zum Beispiel: $WCREV&0xFFFF$
$WCREV-$, $WCREV+$Wird durch die höchste Revisionsnummer in der Arbeitskopie ersetzt. Der Wert hinter dem + oder - Zeichen wird addiert bzw. subtrahiert. Zum Beispiel: $WCREV-1000$
$WCDATE$, $WCDATEUTC$Wird durch Datum/Zeit der höchsten übertragenen Revision ersetzt. Als Vorgabe wird das internationale Format genutzt: jjjj-mm-tt hh:mm:ss. Alternativ können Sie ein eigenes Format angeben, das mittels strftime() formatiert wird, z. B. $WCDATE=%a %b %d %I:%M:%S %p$. Eine Liste der verfügbaren Formatierungszeichen finden Sie unter folgender Onlinereferenz.
$WCNOW$, $WCNOWUTC$Wird durch Datum/Zeit der Systemuhr ersetzt. Kann zum Beispiel dazu dienen, den Zeitpunkt der Erstellung festzuhalten. Die Formatierung erfolgt wie bei $WCDATE$ beschrieben.
$WCRANGE$Wird durch den Revisionsnummernbereich der Arbeitskopie ersetzt. Wenn sich die Arbeitskopie in einem konsistenten Zustand befindet, eine einzelne Revisionsnummer. Wenn die Arbeitskopie gemischte Revisionen enthält, weil sie entweder nicht aktuell ist oder weil gezielt auf eine bestimmte Revision aktualisiert wurde, wird ein Bereich in der Form 100:200 ausgegeben.
$WCMIXED$$WCMIXED?TText:FText$ wird durch TText ersetzt, wenn die Arbeitskopie gemischte Revisionen enthält oder FText, wenn nicht.
$WCMODS$$WCMODS?TText:FText$ wird durch TText ersetzt, wenn die Arbeitskopie lokale Änderungen enthält oder FText, wenn nicht.
$WCUNVER$$WCUNVER?TText:FText$ wird durch TText ersetzt, wenn die Arbeitskopie nicht versionierte Objekte enthält oder FText, wenn nicht.
$WCEXTALLFIXED$$WCEXTALLFIXED?TText:FText$ wird ersetzt durch TText wenn alle Externals auf eine expliziten Revision festgesetzt sind, ansonsten durch FText.
$WCISTAGGED$$WCISTAGGED?TText:FText$ wird durch TText ersetzt, wenn die URL des Projektarchivs die Klassifizierungsmuster für tags enthält, ansonsten durch FText.
$WCURL$Wird durch die URL des Projektarchivs ersetzt, auf das die an SubWCRev übergebene Arbeitskopie zeigt.
$WCINSVN$$WCINSVN?TText:FText$ wird durch TText ersetzt, wenn der Eintrag versioniert ist oder FText, wenn nicht.
$WCNEEDSLOCK$$WCNEEDSLOCK?TText:FText$ wird durch TText ersetzt, wenn der Eintrag die svn:needs-lock Eigenschaft hat oder FText, wenn nicht.
$WCISLOCKED$$WCISLOCKED?TText:FText$ wird durch TText ersetzt, wenn der Eintrag gesperrt ist oder FText, wenn nicht.
$WCLOCKDATE$, $WCLOCKDATEUTC$Wird durch das Sperrdatum ersetzt. Die Formatierung erfolgt wie bei $WCDATE$ beschrieben.
$WCLOCKOWNER$Wird durch den Namen des Sperreigners ersetzt.
$WCLOCKCOMMENT$Wird durch den Sperrkommentar ersetzt.
$WCUNVER$$WCUNVER?TText:FText$ wird durch TText ersetzt, wenn die Arbeitskopie nicht versionierte Objekte enthält oder FText, wenn nicht.


SubWCRev unterstützt keine verschachtelten Ausdrücke dieser Art:

#define SVN_REVISION    "$WCMIXED?$WCRANGE$:$WCREV$"
      

Sie können das gewünschte Ergebnis jedoch auf folgende Weise erreichen:

#define SVN_RANGE       $WCRANGE$
#define SVN_REV         $WCREV$
#define SVN_REVISION    "$WCMIXED?SVN_RANGE:SVN_REV$"
      

Tipp

Einige dieser Schlüsselwörter beziehen sich auf einzelne Dateien statt auf ganze Arbeitskopien. Das ist nur sinnvoll, wenn SubWCRev für eine einzelne Datei aufgerufen wird. Dies ist der Fall für $WCINSVN$, $WCNEEDSLOCK$, $WCISLOCKED$, $WCLOCKDATE$, $WCLOCKOWNER$ und $WCLOCKCOMMENT$.

Beispiele für Schlüsselwörter

Das Beispiel zeigt, wie Schlüsselwörter aus einer Vorlagendatei in der Ausgabedatei ersetzt werden.

// Test file for SubWCRev

char *Revision      = "$WCREV$";
char *Revision16    = "$WCREV&0xFF$";
char *Revisionp100  = "$WCREV+100$";
char *Revisionm100  = "$WCREV-100$";
char *Modified      = "$WCMODS?Modified:Not modified$";
char *Unversioned   = "$WCUNVER?Unversioned items found:no unversioned items$";
char *Date          = "$WCDATE$";
char *CustDate      = "$WCDATE=%a, %d %B %Y$";
char *DateUTC       = "$WCDATEUTC$";
char *CustDateUTC   = "$WCDATEUTC=%a, %d %B %Y$";
char *TimeNow       = "$WCNOW$";
char *TimeNowUTC    = "$WCNOWUTC$";
char *RevRange      = "$WCRANGE$";
char *Mixed         = "$WCMIXED?Mixed revision WC:Not mixed$";
char *ExtAllFixed   = "$WCEXTALLFIXED?All externals fixed:Not all externals fixed$";
char *IsTagged      = "$WCISTAGGED?Tagged:Not tagged$";
char *URL           = "$WCURL$";
char *isInSVN       = "$WCINSVN?versioned:not versioned$";
char *needslck      = "$WCNEEDSLOCK?TRUE:FALSE$";
char *islocked      = "$WCISLOCKED?locked:not locked$";
char *lockdateutc   = "$WCLOCKDATEUTC$";
char *lockdate      = "$WCLOCKDATE$";
char *lockcustutc   = "$WCLOCKDATEUTC=%a, %d %B %Y$";
char *lockcust      = "$WCLOCKDATE=%a, %d %B %Y$";
char *lockown       = "$WCLOCKOWNER$";
char *lockcmt       = "$WCLOCKCOMMENT$";

#if $WCMODS?1:0$
#error Source is modified
#endif

// End of file

Nachdem Sie SubWCRev.exe path\to\workingcopy testfile.tmpl testfile.txt aufgerufen haben, sieht die Ausgabedatei testfile.txt folgendermaßen aus:

// Testdatei für SubWCRev

char *Revision      = "22837";
char *Revision16    = "53";
char *Revisionp100  = "22937";
char *Revisionm100  = "22737";
char *Modified      = "Modified";
char *Unversioned   = "no unversioned items";
char *Date          = "2012/04/26 18:47:57";
char *CustDate      = "Thu, 26 April 2012";
char *DateUTC       = "2012/04/26 16:47:57";
char *CustDateUTC   = "Thu, 26 April 2012";
char *TimeNow       = "2012/04/26 20:51:17";
char *TimeNowUTC    = "2012/04/26 18:51:17";
char *RevRange      = "22836:22837";
char *Mixed         = "Mixed revision WC";
char *ExtAllFixed   = "All externals fixed";
char *IsTagged      = "Not tagged";
char *URL           = "https://svn.code.sf.net/p/tortoisesvn/code/trunk";
char *isInSVN       = "versioned";
char *needslck      = "FALSE";
char *islocked      = "not locked";
char *lockdateutc   = "1970/01/01 00:00:00";
char *lockdate      = "1970/01/01 01:00:00";
char *lockcustutc   = "Thu, 01 January 1970";
char *lockcust      = "Thu, 01 January 1970";
char *lockown       = "";
char *lockcmt       = "";

#if 1
#error Source is modified
#endif

// End of file

Tipp

Eine solche Datei ist meist in den Erstellungsprozess integriert und man würde erwarten, dass die Datei dann auch versioniert ist. Stellen Sie sicher, dass Sie nur die Vorlage und nicht die generierte Datei versionieren. Andernfalls müssen Sie nach jedem Generieren die Änderungen an der Versionsdatei übertragen, was wiederum bedeutet, dass Sie die Versionsdatei neu generieren müssen.

COM-Schnittstelle

Wenn sie Zugriff auf Subversion-Revisionsinformationen aus anderen Programmen benötigen, können Sie die COM-Schnittstelle von SubWCRev benutzen. Das zu erzeugende Objekt heißt SubWCRev.object und unterstützt die folgenden Methoden:

Tabelle 6.4. Unterstützte COM-Automatisierungen

MethodeBeschreibung
.GetWCInfoDiese Methode durchläuft die Arbeitskopie und ermittelt die Revisionsinformationen. Sie muss vor den Methoden aufgerufen werden, die auf diese Informationen zugreifen sollen. Der erste Parameter ist der Pfad. Der zweite Parameter sollte true sein, wenn Sie Ordnerrevisionen einschließen wollen. Entspricht dem Schalter -f. Der dritte Parameter sollte true sein, wenn Sie svn:externals einschließen wollen. Entspricht dem Schalter -e.
.GetWCInfo2Dasselbe wie GetWCInfo(), aber mit einem vierten Parameter, der das Äquivalent zum Kommandozeilenschalter -E setzt.
.RevisionDie höchste übertragene Revision in der Arbeitskopie. Entspricht $WCREV$.
.DateDatum und Uhrzeit der höchsten übertragenen Revision. Entspricht $WCDATE$.
.AuthorDer Autor der höchsten übertragenen Revision, das heißt, die letzte Person, die die Änderungen in die Arbeitskopie übertragen hat.
.MinRevDie minimale aktualisierte Revision, wie in $WCRANGE$ angezeigt.
.MaxRevDie maximale aktualisierte Revision, wie in $WCRANGE$ angezeigt.
.HasModificationsTrue, wenn es lokale Änderungen gibt.
.HasUnversionedTrue, wenn nicht versionierte Objekte vorhanden sind
.UrlWird durch die URL des Projektarchivs ersetzt, auf das die an GetWCInfo übergebene Arbeitskopie zeigt. Entspricht $WCURL$.
.IsSvnItemTrue, wenn das Objekt versioniert ist.
.NeedsLockingTrue, wenn die svn:needs-lock-Eigenschaft des Objekts gesetzt ist.
.IsLockedTrue, wenn das Objekt gesperrt ist.
.LockCreationDateZeichenkette, die das Datum enthält, an dem die Sperre erzeugt wurde. Leer, wenn das Objekt nicht gesperrt ist.
.LockOwnerZeichenkette, die den Eigentümer der Sperre enthält. Leer, wenn das Objekt nicht gesperrt ist.
.LockCommentDie Meldung, die eingegeben wurde, als die Sperre erzeugt wurde.


Das folgende Beispiel zeigt, wie die Schnittstelle genutzt werden kann.

// testCOM.js - javascript file
// Testskript für das SubWCRev COM/Automatisierungsobjekt

filesystem = new ActiveXObject("Scripting.FileSystemObject");

revObject1 = new ActiveXObject("SubWCRev.object");
revObject2 = new ActiveXObject("SubWCRev.object");
revObject3 = new ActiveXObject("SubWCRev.object");
revObject4 = new ActiveXObject("SubWCRev.object");

revObject1.GetWCInfo(
    filesystem.GetAbsolutePathName("."), 1, 1);
revObject2.GetWCInfo(
    filesystem.GetAbsolutePathName(".."), 1, 1);
revObject3.GetWCInfo(
    filesystem.GetAbsolutePathName("SubWCRev.cpp"), 1, 1);
revObject4.GetWCInfo2(
    filesystem.GetAbsolutePathName("..\\.."), 1, 1, 1);

wcInfoString1 = "Revision = " + revObject1.Revision +
                "\nMin Revision = " + revObject1.MinRev +
                "\nMax Revision = " + revObject1.MaxRev +
                "\nDate = " + revObject1.Date +
                "\nURL = " + revObject1.Url + "\nAuthor = " +
                revObject1.Author + "\nHasMods = " +
                revObject1.HasModifications + "\nIsSvnItem = " +
                revObject1.IsSvnItem + "\nNeedsLocking = " +
                revObject1.NeedsLocking + "\nIsLocked = " +
                revObject1.IsLocked + "\nLockCreationDate = " +
                revObject1.LockCreationDate + "\nLockOwner = " +
                revObject1.LockOwner + "\nLockComment = " +
                revObject1.LockComment;
wcInfoString2 = "Revision = " + revObject2.Revision +
                "\nMin Revision = " + revObject2.MinRev +
                "\nMax Revision = " + revObject2.MaxRev +
                "\nDate = " + revObject2.Date +
                "\nURL = " + revObject2.Url + "\nAuthor = " +
                revObject2.Author + "\nHasMods = " +
                revObject2.HasModifications + "\nIsSvnItem = " +
                revObject2.IsSvnItem + "\nNeedsLocking = " +
                revObject2.NeedsLocking + "\nIsLocked = " +
                revObject2.IsLocked + "\nLockCreationDate = " +
                revObject2.LockCreationDate + "\nLockOwner = " +
                revObject2.LockOwner + "\nLockComment = " +
                revObject2.LockComment;
wcInfoString3 = "Revision = " + revObject3.Revision +
                "\nMin Revision = " + revObject3.MinRev +
                "\nMax Revision = " + revObject3.MaxRev +
                "\nDate = " + revObject3.Date +
                "\nURL = " + revObject3.Url + "\nAuthor = " +
                revObject3.Author + "\nHasMods = " +
                revObject3.HasModifications + "\nIsSvnItem = " +
                revObject3.IsSvnItem + "\nNeedsLocking = " +
                revObject3.NeedsLocking + "\nIsLocked = " +
                revObject3.IsLocked + "\nLockCreationDate = " +
                revObject3.LockCreationDate + "\nLockOwner = " +
                revObject3.LockOwner + "\nLockComment = " +
                revObject3.LockComment;
wcInfoString4 = "Revision = " + revObject4.Revision +
                "\nMin Revision = " + revObject4.MinRev +
                "\nMax Revision = " + revObject4.MaxRev +
                "\nDate = " + revObject4.Date +
                "\nURL = " + revObject4.Url + "\nAuthor = " +
                revObject4.Author + "\nHasMods = " +
                revObject4.HasModifications + "\nIsSvnItem = " +
                revObject4.IsSvnItem + "\nNeedsLocking = " +
                revObject4.NeedsLocking + "\nIsLocked = " +
                revObject4.IsLocked + "\nLockCreationDate = " +
                revObject4.LockCreationDate + "\nLockOwner = " +
                revObject4.LockOwner + "\nLockComment = " +
                revObject4.LockComment;

WScript.Echo(wcInfoString1);
WScript.Echo(wcInfoString2);
WScript.Echo(wcInfoString3);
WScript.Echo(wcInfoString4);

Das folgende Beispiel zeigt, wie die SubWCRev-COM-Schnittstelle aus C# heraus genutzt werden kann.

using LibSubWCRev;
SubWCRev sub = new SubWCRev();
sub.GetWCInfo("C:\\PfadZuMeinerDatei\\MeineDatei.cc", true, true);
if (sub.IsSvnItem == true)
{
    MessageBox.Show("versioniert");
}
else
{
    MessageBox.Show("nicht versioniert");
}

Kapitel 7. IBugtraqProvider-Schnittstelle

Um Fehlerverfolgungssysteme besser als durch die bugtraq:-Eigenschaften ansteuern zu können, verfügt TortoiseSVN über eine COM-Schnittstelle. Mit COM-Modulen ist es möglich, Informationen direkt aus dem Fehlerverfolgungssystem abzurufen, mit dem Anwender zu kommunizieren und Informationen über offene Punkte an TortoiseSVN zu liefern. Weiterhin können Logmeldungen überprüft und sogar Aktionen nach einer erfolgreichen Übertragung durchgeführt werden, zum Beispiel das Schließen eines offenen Punktes.

Wir können Ihnen keine Anleitung liefern, wie Sie ein COM-Objekt in Ihrer bevorzugten Programmiersprache erstellen, aber wir haben einige Beispielmodule in C++/ATL und C# im Ordner contrib/issue-tracker-plugins unseres Projektarchivs. In diesem Ordner finden sich auch die nötigen Includedateien, die Sie zum Erstellen Ihres Moduls benötigen. „Lizenz“ erklärt, wie Sie auf das Projektarchiv zugreifen.

Wichtig

Sie sollten sowohl eine 32-Bit- als auch eine 64-Bit-Version Ihres Moduls zur Verfügung stellen, weil die x64-Version von TortoiseSVN keine 32-Bit-Module verwenden kann und umgekehrt.

Namenskonventionen

Wir möchten Sie bitten, Ihr Modul für ein Fehlerverfolgungssystem nicht Tortoise<Modul> zu nennen, denn wir würden den Präfix Tortoise gerne den Versionskontrollsystemen vorbehalten, die in die Windows-Explorer-Shell integriert sind. Beispiele dafür sind: TortoiseCVS, TortoiseSVN, TortoiseHg, TortoiseGit und TortoiseBzr.

Bitte nennen Sie Ihr Modul für einen Tortoise-Client Turtle<Modul>, wobei <Modul> sich auf das Fehlerverfolgungssystem bezieht, mit dem sich Ihr Modul verbindet. Wenn Ihnen das nicht gefällt, wählen Sie als Alternative einen Namen, der wie Turtle klingt, aber einen anderen Anfangsbuchstaben hat. Schöne Beispiele sind:

  • Gurtle - Ein Modul für das Google-Code-Fehlerverfolgungssystem

  • TurtleMine - Ein Modul für Redmine

  • VurtleOne - Ein Modul für VersionOne

Die IBugtraqProvider-Schnittstelle

TortoiseSVN 1.5 und neuer unterstützen Module, die die IBugtraqProvider-Schnittstelle implementieren. Diese Schnittstelle stellt einige Methoden für die Kommunikation mit dem Fehlerverfolgungssystem zur Verfügung.

HRESULT ValidateParameters (
  // Elternfenster für die Bedienoberfläche des Moduls,
  // die während der Überprüfung angezeigt wird.
  [in] HWND hParentWnd,

  // Die zu überprüfenden Parameter als Zeichenkette.
  [in] BSTR parameters,

  // Sind die Parameter gültig?
  [out, retval] VARIANT_BOOL *valid
);

Diese Methode wird vom Einstellungsdialog aufgerufen, in dem der Anwender ein Modul hinzufügen und konfigurieren kann. Die Zeichenkette parameters kann von dem Modul verwendet werden, um zusätzliche Informationen, z. B. die URL des Fehlerverfolgungssystems, Anmeldeinformationen usw. zu erhalten. Das Modul sollte die Zeichenkette parameters-Zeichenkette überprüfen und einen Fehlerdialog anzeigen, wenn die Zeichenkette ungültig ist. Der Parameter hParentWnd sollte für jeden Dialog verwendet werden, der vom Modul als Elternfenster angezeigt wird. Das Modul muss TRUE zurückgeben, falls parameters gültig ist. Wenn das Modul FALSE zurückgibt, lässt der Einstellungsdialog den Anwender das Modul nicht zum Pfad der Arbeitskopie hinzufügen.

HRESULT GetLinkText (
  // Elternfenster für die Bedienoberfläche des Moduls.
  [in] HWND hParentWnd,

  // Die Parameter als Zeichenkette, für den Fall, dass Sie mit
  // Ihrem Web-Dienst Rücksprache halten müssen.
  [in] BSTR parameters,

  // Welchen Text wollen Sie anzeigen?
  // Verwenden Sie die Locale des aktuellen Threads.
  [out, retval] BSTR *linkText
);

Das Modul kann hier eine Zeichenkette zur Verfügung stellen, die im TortoiseSVN-Übertragen-Dialog für die Schaltfläche verwendet wird, die das Modul aufruft, z. B. "Eintrag wählen" oder "Ticket auswählen". Stellen Sie sicher, dass die Zeichenkette nicht zu lang ist, da sie sonst unter Umständen nicht auf die Schaltfläche passt. Wenn die Methode einen Fehler (z. B. E_NOTIMPL) zurückgibt, wird ein Standardtext auf der Schaltfläche angezeigt.

HRESULT GetCommitMessage (
  // Elternfenster für die Bedienoberfläche des Moduls.
  [in] HWND hParentWnd,

  // Parameter für Ihr Modul
  [in] BSTR parameters,
  [in] BSTR commonRoot,
  [in] SAFEARRAY(BSTR) pathList,

  // Der Text, der bereits in der Logmeldung steht.
  // Ihr Modul sollte diesen Text, wo angebracht,
  // in die neue Meldung einfügen.
  [in] BSTR originalMessage,

  // Der neue Text für die Logmeldung.
  // Ersetzt den Originaltext.
  [out, retval] BSTR *newMessage
);

Dies ist die Hauptmethode des Moduls. Die Methode wird aus dem TortoioseSVN-Übertragen-Dialog aufgerufen, wenn der Anwender auf die Modul-Schaltfläche klickt.

Die Zeichenfolge parameters muss vom Anwender im Einstellungsdialog bei der Konfiguration des Moduls angegeben werden. Meistens wird damit die URL des Fehlerverfolgungssystems, die Anmeldeinformationen oder ähnliches an das Modul übergeben.

Die Zeichenkette commonRoot enthält den Elternpfad aller beim Start des Übertragen-Dialogs gewählten Objekte. Beachten Sie, dass das nicht der Basispfad aller im Übertragen-Dialog gewählten Objekte ist. Für den Verzweigen/Markieren-Dialog ist es der zu kopierende Pfad.

Der Parameter pathList enthält ein Feld von Pfaden (als Zeichenfolgen), die der Anwender für die Übertragung gewählt hat.

Der Parameter originalMessage enthält den im Übertragen-Dialog als Logmeldung eingegebenen Text. Wenn der Anwender noch nichts eingegeben hat, ist diese Zeichenkette leer.

Der Rückgabewert newMessage wird in das Eingabefeld für die Logmeldung im Übertragen-Dialog kopiert und ersetzt den bisherigen Inhalt. Wenn das Modul den originalMessage-Wert nicht verändert, muss es ihn an dieser Stelle zurückgeben, weil sonst die Benutzereingaben verloren gehen.

Die IBugtraqProvider2-Schnittstelle

In TortoiseSVN 1.6 wurde eine neue Schnittstelle eingeführt, die mehr Funktionalität für die COM-Module zur Verfügung stellt. Die IBugtraqProvider2-Schnittstelle erbt von IBugtraqProvider.

HRESULT GetCommitMessage2 (
  // Elternfenster für die Bedienoberfläche des Moduls.
  [in] HWND hParentWnd,

  // Parameter für Ihr Modul
  [in] BSTR parameters,
  // Die gemeinsame URL für die Übertragung
  [in] BSTR commonURL,
  [in] BSTR commonRoot,
  [in] SAFEARRAY(BSTR) pathList,

  // Der Text, der bereits in der Logmeldung steht.
  // Ihr Modul sollte diesen Text, wo angebracht,
  // in die neue Meldung einfügen.
  [in] BSTR originalMessage,

  // Sie können einer Übertragung eigene Revisionseigenschaften
  // zuweisen, indem Sie die nächsten beiden Parameter setzen.
  // ACHTUNG: Beide safearrays müssen dieselbe Länge haben.
  //          Für jeden Eigenschaftsnamen muss es einen Wert geben!

  // Der Inhalt des bugID-Feldes (falls angezeigt)
  [in] BSTR bugID,

  // Der geänderte Inhalt des bugID-Feldes
  [out] BSTR * bugIDOut,

  // Die Liste der Eigenschaftsnamen.
  [out] SAFEARRAY(BSTR) * revPropNames,

  // Die Liste der Eigenschaftswerte.
  [out] SAFEARRAY(BSTR) * revPropValues,

  // Der neue Text für die Logmeldung.
  // Ersetzt den Originaltext.
  [out, retval] BSTR * newMessage
);

Diese Methode wird aus dem TortoiseSVN-Übertragen-Dialog aufgerufen, wenn der Anwender auf die Modulschaltfläche klickt. Sie wird anstelle von GetCommitMessage() aufgerufen. In der Dokumentation zu GetCommitMessage werden die verwendeten Parameter beschrieben.

Der Parameter commonURL ist die Eltern-URL aller beim Start des Übertragen-Dialogs gewählten Objekte. Er entspricht im Wesentlichen der URL des commonRoot-Pfades.

Der Parameter bugID enthält den Wert des Bug-ID-Feldes, falls es über die Eigenschaft bugtraq:message so konfiguriert wurde.

Der Rückgabewert bugIDOut wird verwendet, um das Bug-ID-Feld beim Beenden der Methode zu füllen.

Die Rückgabewerte revPropNames und revPropValues können Namen/Wertepaare für Revisionseigenschaften enthalten, die beim Übertragen gesetzt werden sollen. Ein Modul muss sicherstellen, dass beide Felder beim Rücksprung dieselbe Größe haben! Jeder Eigenschaftswert in revPropNames muss einen entsprechenden Wert in revPropValues besitzen. Wenn keine Revisionseigenschaften gesetzt werden sollen, muss das Modul leere Felder zurückgeben.

HRESULT CheckCommit (
  [in] HWND hParentWnd,
  [in] BSTR parameters,
  [in] BSTR commonURL,
  [in] BSTR commonRoot,
  [in] SAFEARRAY(BSTR) pathList,
  [in] BSTR commitMessage,
  [out, retval] BSTR * errorMessage
);

Diese Methode wird aufgerufen, kurz bevor der Übertragen-Dialog geschlossen wird, und die eigentliche Übertragung beginnt. Ein Modul kann mit Hilfe dieser Methode die Logmeldung und/oder die zu übertragenden Dateien/Ordner überprüfen und die Übertragung entweder zulassen oder blockieren. Die Parameter sind dieselben wie für GetCommitMessage2() mit dem Unterschied, dass commonURL die gemeinsame URL aller ausgewählten Dateien/Ordner und commonRoot der gemeinsame Pfad aller ausgewählten Dateien/Ordner ist.

Beim Verzweigen/Markieren-Dialog ist commonURL die Quell-URL und commonRoot die Ziel-URL der Kopie.

Der Rückgabewert errorMessage muss entweder eine Fehlermeldung enthalten, die TortoiseSVN dem Benutzer anzeigt oder leer sein, um die Übertragung zuzulassen. Wenn eine Fehlermeldung zurückgegeben wird, zeigt TortoiseSVN diese dem Benutzer in einem Fehlerdialog an und hält den Übertragen-Dialog offen, sodass der Benutzer den Fehler korrigieren kann. Ein Modul sollte deshalb in der Fehlermeldung mitteilen, was genau falsch ist und wie der Benutzer dies korrigieren kann.

HRESULT  OnCommitFinished (
  // Elternfenster für die Bedienoberfläche des Moduls.
  [in] HWND hParentWnd,

  // Die gemeinsame Basis aller übertragenen Pfade.
  [in] BSTR commonRoot,

  // Alle übertragenen Pfade.
  [in] SAFEARRAY(BSTR) pathList,


  // Der Text, der bereits in der Logmeldung steht.
  [in] BSTR logMessage,

  // Die Revision der Übertragung.
  [in] ULONG revision,


  // Ein Fehler, der dem Anwender angezeigt wird, wenn
  // die Funktion etwas anderes als S_OK zurückgibt.
  [out, retval] BSTR * error
);

Diese Methode wird nach einer erfolgreichen Übertragung aufgerufen. Ein Modul kann diese Methode verwenden, um zum Beispiel einen offenen Eintrag zu schließen oder weitere Informationen an den Eintrag anzuhängen. Die Parameter sind die gleichen wie bei GetCommitMessage2.

HRESULT HasOptions(
  // Wenn das Modul einen eigenen Einstellungsdialog hat.
  [out, retval] VARIANT_BOOL *ret
);

Diese Methode wird aus dem Einstellungsdialog für Module heraus aufgerufen. Wenn ein Modul einen eigenen Einstellungsdialog über ShowOptionsDialog bereitstellt, muss es TRUE zurückliefern, sonst FALSE.

HRESULT ShowOptionsDialog(
  // Elternfenster für den Einstellungsdialog des Moduls.
  [in] HWND hParentWnd,

  // Parameter für Ihr Modul.
  [in] BSTR parameters,

  // Die neuen Parameter als Zeichenkette
  [out, retval] BSTR * newparameters
);

Diese Methode wird aus dem Einstellungsdialog aufgerufen, wenn der Anwender auf die Schaltfläche Optionen klickt, die angezeigt wird, wenn HasOptions TRUE zurückgibt. Ein Modul kann einen Einstellungsdialog anzeigen, um die Einrichtung für den Anwender zu vereinfachen.

Die Zeichenfolge parameters enthält die bereits gesetzten/eingegebenen Modulparameter.

Der Rückgabewert newparameters muss die neuen Parameter enthalten, die das Modul aus dem Einstellungsdialog ermittelt hat. Die Zeichenkette parameters wird an alle anderen IBugtraqProvider- und IBugtraqProvider2-Methoden übergeben.

Anhang A. Häufig gestellte Fragen (FAQ)

Da TortoiseSVN ständig weiterentwickelt wird, kann die Dokumentation manchmal veraltet sein. Wir führen eine Online-FAQ, die eine Auswahl von häufig gestellten Fragen enthält, die auf unseren Mailinglisten https://groups.google.com/forum/#!forum/tortoisesvn und https://groups.google.com/forum/#!forum/tortoisesvn-dev gestellt wurden.

Wenn Sie eine Frage haben, auf die Sie nirgends eine Antwort gefunden haben, sollten Sie die Frage in einer unserer Mailingliste stellen:

Anhang B. Wie kann ich...

Dieser Anhang enthält Lösungen zu einigen Problemen und Fragen, die bei der Arbeit mit TortoiseSVN auftreten können.

Viele Dateien auf einmal verschieben / kopieren

Einzelne Dateien können auch mit Hilfe des Befehls TortoiseSVNUmbenennen... verschoben werden, aber wenn Sie viele Dateien verschieben wollen, ist das zu langsam und zu viel Arbeit.

Der empfohlene Weg ist, die Dateien mittels Rechts-Ziehen an den gewünschten Ort zu befördern. Machen Sie einen Rechtsklick auf die Dateien, die Sie verschieben oder kopieren wollen, ohne die rechte Maustaste loszulassen. Dann ziehen Sie die Dateien an den neuen Ort und lassen die rechte Maustaste los. Ein Kontextmenü erscheint, aus dem Sie entweder KontextmenüSVN-Dateien hierher kopieren oder KontextmenüSVN-Dateien hierher verschieben wählen können.

Abbildung B.1. Das TortoiseSVN Rechts-Drag Kontextmenu um Dateien zu verschieben

Das TortoiseSVN Rechts-Drag Kontextmenu um Dateien zu verschieben


Anwender zwingen, eine Logmeldung einzugeben

Es gibt zwei Wege, die Anwender dazu zu bringen, eine Logmeldung einzugeben. Eine Methode geht nur mit TortoiseSVN, die andere funktioniert mit allen Subversion-Clients, erfordert jedoch direkten Zugriff auf den Server.

Aktionsskript auf dem Server

Wenn Sie direkten Zugriff auf den Subversion-Server haben, können Sie ein pre-commit-Aktionsskript installieren, das alle Übertragungen mit leeren oder zu kurzen Logmeldungen ablehnt.

Im Projektarchivordner auf dem Server gibt es einen Unterordner namens hooks, der die Aktionsskripte enthält. Die Datei pre-commit.tmpl enthält ein Beispielskript, das leere Logmeldungen verwirft. Diese Datei enthält auch Hinweise zur Installation des Skriptes. Folgen Sie den Anweisungen in dieser Datei.

Diese Methode wird empfohlen, wenn Ihre Anwender auch andere Subversion-Clients als TortoiseSVN benutzen. Der Nachteil ist, dass die Übertragung vom Server abgelehnt wird und dass die Anwender eine Fehlermeldung erhalten. Das Clientprogramm kann vor der Übertragung nicht wissen, dass diese abgelehnt werden wird. Wenn Sie möchten, dass TortoiseSVN die OK-Schaltfläche deaktiviert, wenn die Logmeldung nicht lang genug ist, benutzen Sie die unten stehende Methode.

Projekteigenschaft setzen

TortoiseSVN verwendet Eigenschaften, um einige seiner Funktionen zu steuern. Eine davon ist die Eigenschaft tsvn:logminsize.

Wenn Sie diese Ordnereigenschaft auf einen Zahlenwert setzen, deaktiviert TortoiseSVN solange die OK-Schaltfläche in allen Übertragen-Dialogen, bis der Anwender eine Logmeldung eingegeben hat, die mindestens solang wie der angegebene Zahlenwert ist.

Für detaillierte Informationen über Projekteigenschaften schlagen Sie bitte in „Projekt-Einstellungen“ nach.

Gezielt Dateien aus dem Projektarchiv aktualisieren

Normalerweise bringen Sie Ihre Arbeitskopie mit TortoiseSVNAktualisieren auf den neuesten Stand. Wenn Sie aber nur ein paar Dateien aktualisieren wollen, ohne Änderungen in anderen Dateien zu übernehmen, müssen Sie anders vorgehen.

Wählen Sie TortoiseSVNPrüfe auf Änderungen und klicken Sie auf Projektarchiv prüfen, um zu sehen, was sich dort geändert hat. Markieren Sie die Dateien, die Sie lokal aktualisieren möchten, und verwenden Sie dann das Kontextmenü, um genau diese Dateien zu aktualisieren.

Revisionen im Projektarchiv rückgängig machen

Mit Hilfe des Log-Dialogs

Der einfachste Weg, Änderungen einer oder mehrerer Revisionen zurückzunehmen, ist die Verwendung des Log-Dialogs.

  1. Wählen Sie den Ordner, in dem Sie die Änderungen rückgängig machen wollen. Wenn Sie alle Änderungen rückgängig machen wollen, ist das der oberste Ordner.

  2. Wählen Sie TortoiseSVNZeige Log, um eine Liste der Revisionen anzuzeigen. Eventuell müssen Sie mit Zeige Alle oder Nächste 100 weitere Revisionen nachladen, um die gewünschte Revision angezeigt zu bekommen.

  3. Wählen Sie die Revision, die Sie rückgängig machen wollen. Wenn Sie einen ganzen Bereich verwerfen wollen, halten Sie die Umschalt-Taste gedrückt, während Sie die letzte Revision markieren. Wenn Sie individuelle Revisionen und Bereiche auswählen wollen, verwenden Sie die Strg-Taste. Machen Sie einen Rechtsklick auf die gewählten Revision(en) und wählen Sie KontextmenüÄnderungen dieser Revision rückgängig machen.

  4. Wenn Sie eine ältere Revision zur neuen HEAD-Revision machen wollen, führen Sie einen Rechtsklick auf die gewählte Revision aus, wählen KontextmenüRückgängig zu dieser Revision. Dies verwirft alle Änderungen nach der gewählten Revision.

Sie haben nun die Änderungen in Ihrer Arbeitskopie rückgängig gemacht. Prüfen Sie die Ergebnisse und übertragen Sie die Änderungen.

Mit Hilfe des Zusammenführen-Dialogs

Einen größeren Revisionsbereich können Sie mit Hilfe des Zusammenführen-Dialogs angeben. Die vorherige Methode nutzt das Zusammenführen verdeckt; diese Methode nutzt es explizit.

  1. Wählen Sie TortoiseSVNZusammenführen in Ihrer Arbeitskopie.

  2. Als Aktion wählen Sie Einen Revisionsbereich zusammenführen.

  3. Im Feld Zusammenführen aus URL geben Sie die vollständige URL des Projektarchivs Ihrer Arbeitskopie ein. Dieser Wert sollte bereits als Vorgabe erscheinen.

  4. Im Feld Revisionsbereich geben Sie die Liste der zurückzunehmenden Revisionen ein (oder Sie verwenden den Log-Dialog, um sie, wie oben beschrieben, auszuwählen).

  5. Stellen Sie sicher, dass die Option Rückwärts zusammenführen gewählt ist.

  6. In den Einstellungen verwenden Sie die Vorgabewerte.

  7. Klicken Sie auf Zusammenführen, um die Aktion abzuschließen.

Sie haben nun die Änderungen in Ihrer Arbeitskopie rückgängig gemacht. Prüfen Sie, ob die Ergebnisse wie erwartet sind und übertragen Sie die Änderungen.

Mit Hilfe von svndumpfilter

Da Subversion niemals Daten verliert und alle Änderungen protokolliert, sind Ihre rückgängig gemachten Revisionen noch als Zwischenstände im Projektarchiv enthalten. Das kann bei versehentlich in ein öffentlich zugängliches Projektarchiv übertragenen vertraulichen Daten ein großes Problem darstellen. Wenn Sie möchten, dass Ihre Revisionen vollständig aus dem Projektarchiv verschwinden, müssen Sie recht extreme Maßnahmen ergreifen. Solange es keinen wirklich guten Grund dafür gibt, raten wir dringend davon ab.

Der einzige Weg, Daten komplett aus dem Projektarchiv zu entfernen, führt über das Subversion-Kommandozeilenprogramm svnadmin. Eine Anwendungsbeschreibung finden Sie im Kapitel Projektarchiv-Wartung.

Zwei Revisionen einer Datei oder eines Ordners vergleichen

Wenn Sie zwei Revisionen desselben Objekts, zum Beispiel Revisionen 100 und 200 vergleichen wollen, rufen Sie TortoiseSVNZeige Log auf, um sich die Historie des Objekts anzeigen zu lassen. Wählen Sie die zwei Revisionen, die Sie vergleichen wollen und wählen Sie KontextmenüRevisionen vergleichen.

Wenn Sie Revisionen desselben Objekts in zwei verschiedenen Entwicklungszweigen vergleichen wollen, können Sie im Projektarchivbetrachter beide Zweige öffnen, das Objekt in beiden Zweigen markieren und dann KontextmenüRevisionen vergleichen aufrufen.

Wenn Sie zwei vollständige Zweige miteinander vergleichen wollen, verwenden Sie TortoiseSVNRevisionsgraph. Markieren Sie dort die beiden zu vergleichenden Knoten und wählen Sie KontextmenüHEAD-Revisionen vergleichen. Dies erzeugt eine Liste der unterschiedlichen Dateien. Sie können sich die Detailunterschiede aus der Liste heraus anschauen. Sie können auch eine Baumstruktur mit allen geänderten Dateien oder einfach eine Liste aller geänderten Dateien exportieren. Mehr dazu finden Sie in „Ordner vergleichen“. Alternativ können Sie KontextmenüStandard-Diff der HEAD-Revisionen wählen, um eine Zusammenfassung der Unterschiede mit minimalem Kontext zu erhalten.

Ein gemeinsames Unterprojekt einbinden

Manchmal möchten Sie ein anderes Projekt, vielleicht eine Bibliothek, in ihre Arbeitskopie einbinden. Es gibt mindestens vier Methoden, damit umzugehen.

Die Eigenschaft svn:externals

Setzen Sie die Eigenschaft svn:externals auf Ordner in Ihrem Projekt. Diese Eigenschaft besteht aus einer oder mehreren Zeilen. Jede Zeile besteht aus dem Namen eines Unterordners, den Sie als Ziel verwenden wollen, sowie der URL im Projektarchiv, die dorthin ausgecheckt werden soll. Weitere Informationen finden sich in „Externe Objekte“.

Übertragen Sie diese Änderungen. Nun, wenn Sie Ihre Arbeitskopie aktualisieren, wird Subversion eine Kopie des externen Projektes in Ihre Arbeitskopie einfügen. Jedes Mal, wenn Sie eine Aktualisierung vornehmen, wird automatisch auch das externe Projekt aktualisiert. Änderungen, die Sie am gemeinsamen Code vornehmen, werden ebenfalls in das externe Projektarchiv mit übertragen.

Wenn das externe Projekt im selben Projektarchiv befindet, werden alle Änderungen in diesem externen Projekt im Übertragen-Dialog aufgelistet und gemeinsam mit dem Hauptprojekt übertragen.

Wenn sich ein externes Projekt in einem anderen Projektarchiv befindet, werden Sie zwar über Änderungen im externen Projekt informiert, Sie müssen diese jedoch separat übertragen.

Von den drei beschriebenen Methoden ist dies die einzige, die keine clientseitige Konfiguration erfordert. Sobald Externals in den Ordnereigenschaften festgelegt wurden, werden sämtliche Clients die Ordner beim Aktualisieren erhalten.

Verschachtelte Arbeitskopien

Erstellen Sie einen neuen Ordner in Ihrem Projekt, der den gemeinsamen Code enthalten soll, aber fügen Sie diesen nicht zu Ihrer Arbeitskopie hinzu.

Wählen Sie TortoiseSVNAuschecken auf dem neuen Ordner und checken Sie eine Kopie des gemeinsamen Codes in diesen Ordner aus. Sie haben nun eine separate Arbeitskopie innerhalb Ihrer eigenen Arbeitskopie.

Diese beiden Arbeitskopien sind komplett unabhängig voneinander. Wenn Sie Änderungen übertragen möchten, so werden Änderungen in der zweiten Arbeitskopie nicht mit erfasst. Ebenfalls wird die zweite Arbeitskopie bei einer Aktualisierung nicht mit aktualisiert. Sie müssen die zweite Arbeitskopie jeweils getrennt aktualisieren oder Änderungen darin übertragen.

Relative Pfade

Wenn Sie denselben Code in mehreren Projekten benutzen und Sie nicht für jedes Projekt, das diesen gemeinsamen Code benutzt, eine Kopie davon haben möchten, dann können Sie diesen Code auch an eine ganz bestimmte Stelle auschecken, auf welche von allen Projekten, die den Code benutzen, zugegriffen werden kann. Zum Beispiel:

C:\Projekte\Proj1
C:\Projekte\Proj2
C:\Projekte\Proj3
C:\Projekte\Gemeinsamer_Code

dann können Sie in Ihren Projekten mittels relativer Pfade auf diesen Code zugreifen, zum Beispiel ..\..\Gemeinsamer_Code\DSPCore.

Wenn Ihre Projekte jedoch überall verstreut an verschiedenen Orten sind, dann können Sie eine Variante hiervon benutzen: den gemeinsamen Code an einem Ort speichern und diesen Ort dann mittels Laufwerks-Substitution an einen fixen Ort binden. Dann können Sie diesen fixen Pfad in Ihren Projekten direkt einbinden. Zum Beispiel können Sie den gemeinsamen Code an D:\Dokumente\Framework oder C:\Dokumente und Einstellungen\{login}\Eigene Dateien\Framework auschecken und dann mittels

SUBST X: "D:\Dokumente\Framework"

mit dem Laufwerksbuchstaben X verbinden. In Ihrem Sourcecode können Sie dann auf diese absolute Position zugreifen, zum Beispiel

#include "X:\superio.h\superio.h"

Diese Methode funktioniert nur in einer PC-Umgebung, und Sie müssen die erforderlichen Laufwerkszuordnungen dokumentieren, damit die Team-Mitglieder die Projekte auch kompilieren können und die gemeinsamen Dateien auch finden. Diese Methode ist wirklich nur in geschlossenen Umgebungen anwendbar und nicht für die normale Verwendung empfohlen.

Das Projekt zum Projektarchiv hinzufügen

Die wahrscheinlich einfachste Version ist, das Projekt in einem Unterordner zu Ihrer eigenen Arbeitskopie hinzuzufügen. Das hat jedoch den Nachteil, dass Sie das externe Projekt manuell aktualisieren müssen.

Um Sie dabei zu unterstützen, bietet TortoiseSVN einen Befehl im Rechtsziehen-Kontextmenü des Explorers an. Ziehen Sie den Ordner, in dem Sie die neue Version abgelegt haben, einfach mit der rechten Maustaste auf den Ordner in Ihrer Arbeitskopie und wählen Sie KontextmenüSVN Herstellerzweig hier. Damit werden die neuen Dateien in den Zielordner kopiert und Dateien, die sich nicht mehr in der neuen Version befinden, entfernt.

Eine Verknüpfung zu einem Projektarchiv erstellen

Wenn Sie den Projektarchivbetrachter immer wieder benötigen, um ein bestimmtes Projektarchiv anzuzeigen, dann können Sie auch eine Verknüpfung auf dem Desktop erstellen und die benötigten Parameter direkt an TortoiseProc.exe übergeben. Erstellen Sie einfach eine Verknüpfung und setzen Sie das Ziel auf:

TortoiseProc.exe /command:repobrowser /path:"url/zum/projektarchiv"

Sie müssen natürlich eine existierende URL eingeben.

Dateien ignorieren, die bereits unter Versionskontrolle sind

Wie können Sie Dateien wieder aus der Versionskontrolle entfernen, die Sie fälschlicherweise hinzugefügt haben, ohne die Dateien selbst zu löschen? Vielleicht haben Sie Ihre eigene IDE-Konfigurationsdatei hinzugefügt, die zwar nicht Teil des Projekts ist, aber Sie dennoch einige Zeit gekostet hat, es so zu konfigurieren, wie Sie es gerne möchten.

Wenn Sie die hinzugefügte Datei noch nicht übertragen haben, dann müssen Sie nur den Befehl TortoiseSVNHinzufügen zurücknehmen... ausführen. Sie sollten dann die Datei(en) zur Ignorierliste hinzufügen, damit diese nicht nochmals fälschlicherweise hinzugefügt werden können.

Wenn sich die Dateien bereits im Projektarchiv befinden, müssen sie daraus gelöscht und zur Ignorierliste hinzugefügt werden. Glücklicherweise stellt TortoiseSVN eine Funktion dafür zur Verfügung. TortoiseSVNAus SVN entfernen und ignorieren wird zunächst die Datei/den Ordner zum Löschen aus dem Projektarchiv markieren und die lokale Kopie beibehalten. Sie fügt das Objekt zur Liste der ignorierten Dateien hinzu, sodass es nicht versehentlich wieder zu Subversion hinzugefügt wird. Nachdem dies geschehen ist, müssen Sie lediglich den Elternordner wieder übertragen.

Eine Arbeitskopie aus der Versionskontrolle nehmen

Wenn Sie eine Arbeitskopie in einen normalen Ordner ohne das .svn-Steuerverzeichnis verwandeln wollen, können Sie dies durch einen Export auf sich selbst erreichen. Lesen Sie in „Eine Arbeitskopie aus der Versionskontrolle entfernen“ nach, wie das geht.

Eine Arbeitskopie löschen

Wenn Sie eine Arbeitskopie haben. die sie nicht mehr benötigen, können Sie diese einfach im Windows Explorer löschen. Arbeitskopien sind in sich geschlossene lokale Einheiten, die außerhalb keine Daten ablegen. Das Löschen einer Arbeitskopie im Windows Explorer beeinflusst die Daten im Projektarchiv in keinster Weise.

Anhang C. Tipps für Administratoren

Dieser Anhang enthält Lösungen zu einigen Problemen / Fragen, die auftreten können, wenn Sie zentral verteilte Installationen von TortoiseSVN vornehmen wollen.

TortoiseSVN über Gruppenrichtlinien verteilen

Das TortoiseSVN-Installationsprogramm ist eine MSI-Datei, die Sie normalerweise problemlos in die Gruppenrichtlinien Ihres Domänencontrollers mit aufnehmen können.

Eine gute Anleitung findet sich in Artikel 314934 von Microsofts Wissensbasis: http://support.microsoft.com/?kbid=314934.

TortoiseSVN muss unter Computerkonfiguration und nicht unter Benutzerkonfiguration installiert werden. Das liegt daran, dass TortoiseSVN die CRT- und MFC-DLLs benötigen, die nur per Computer und nicht per Benutzer eingesetzt werden. Wenn Sie TortoiseSVN wirklich pro Benutzer installieren wollen, müssen Sie zunächst die MFC- und CRT-Pakete in der Version 12 von Microsoft auf jedem davon betroffenen Rechner installieren.

Sie können die MSI-Datei anpassen, wenn sie möchten, dass alle Anwender dieselben Einstellungen erhalten. Die TortoiseSVN-Einstellungen werden in der Registrierung unter dem Schlüssel HKEY_CURRENT_USER\Software\TortoiseSVN gespeichert. Allgemeine Subversion-Einstellungen, die alle Clients beeinflussen, finden sich in Konfigurationsdateien unter%APPDATA%\Subversion. Wenn Sie Hilfe bei der Anpassung von MSI-Dateien benötigen, schauen Sie in eines der MSI transform-Foren oder suchen Sie im Internet nach MSI transform.

Die Versionsprüfung umleiten

TortoiseSVN überprüft alle paar Tage, ob eine neue Version zur Verfügung steht. Wenn das der Fall ist, erscheint ein Hinweis darauf im Übertragen-Dialog.

Abbildung C.1. Der Übertragen-Dialog mit der Aktualisierungsbenachrichtigung.

Der Übertragen-Dialog mit der Aktualisierungsbenachrichtigung.

Wenn Sie für viele Anwender in Ihrer Domäne zuständig sind, möchten Sie vielleicht, dass die Anwender nur von Ihnen freigegebene Versionen und nicht die jeweils neueste Version installieren. Deshalb sollte die Aktualisierungsbenachrichtigung nicht angezeigt werden, damit die Anwender die Software nicht selbst aktualisieren.

Versionen 1.4.0 und neuer von TortoiseSVN ermöglichen es Ihnen, die Aktualisierungsprüfung auf einen eigenen Server umzuleiten. Sie können den Registrierungsschlüssel HKCU\Software\TortoiseSVN\UpdateCheckURL (Zeichenkette) auf eine URL setzen, die auf eine Textdatei in Ihrem Intranet zeigt. Diese Textdatei muss das folgende Format haben:

1.9.1.6000
Eine neue Version von TortoiseSVN steht zur Verfügung!
http://192.168.2.1/downloads/TortoiseSVN-1.9.1.6000-svn-1.9.1.msi

Die erste Zeile in der Datei ist der Versionsstring. Sie müssen sicherstellen, dass er exakt mit der Version des TortoiseSVN-Installationspakets übereinstimmt. Die zweite Zeile enthält einen freien Text, der im Übertragen-Dialog angezeigt wird. Sie können hineinschreiben, was sie wollen, sollten jedoch bedenken, dass der Platz im Dialog beschränkt ist. Zu lange Zeilen werden abgeschnitten. Die dritte Zeile enthält die URL des neuen Installationspakets. Diese URL wird geöffnet, wenn der Anwender auf die Meldung im Übertragen-Dialog klickt. Sie können den Anwender auch zu einer Webseite statt direkt zum MSI-Installer leiten. Die URL wird mit dem Standard-Webbrowser geöffnet. Wenn Sie eine Webseite angeben, wird diese einfach angezeigt. Wenn Sie ein MSI-Paket angeben, wird der Browser den Anwender bitten, die Datei lokal zu speichern.

Die Umgebungsvariable SVN_ASP_DOT_NET_HACK setzen

Seit Version 1.4.0 bietet der TortoiseSVN-Installer dem Anwender nicht mehr die Möglichkeit, die Umgebungsvariable SVN_ASP_DOT_NET_HACK zu setzen. Es hat viele Probleme verursacht und Benutzer verwirrt, die grundsätzlich alles installieren, auch wenn sie nicht wissen, wozu das gut ist.

Aber die Funktion steht in TortoiseSVN und anderen SVN-Clients weiterhin zur Verfügung. Um sie zu aktivieren, setzen Sie die Windows-Umgebungsvariable ASPDOTNETHACK auf den Wert 1. Der Wert der Variablen spielt keine Rolle. Sobald die Variable definiert ist, ist die Funktion aktiv.

Wichtig

Bitte beachten Sie, dass dieser Hack nur erforderlich ist, wenn Sie noch VS.NET2002 verwenden. Alle neuere Versionen von Visual Studio benötigen diesen Hack nicht! Also, NICHT VERWENDEN, außer, wenn Sie das alte Visual Studio einsetzen!

Kontextmenüeinträge deaktivieren

Seit Version 1.5.0 können Sie in TortoiseSVN Kontextmenüeinträge deaktivieren (eigentlich nur verstecken). Da diese Funktion nicht leichtfertig, sondern nur mit gutem Grund genutzt werden sollte, steht dafür keine Benutzeroberfläche zur Verfügung und die Einstellungen müssen direkt in der Registrierung vorgenommen werden. Auf diese Weise können bestimmte Befehle vor Anwendern verborgen werden. Bitte beachten Sie, dass nur die Kontextmenüeinträge im Explorer verschwinden. Die Befehle stehen weiterhin per Kommandozeile oder auch in anderen Dialogen von TortoiseSVN selbst zur Verfügung!

Die Registrierungsschlüssel, welche die Information über die anzuzeigenden Kontextmenüs enthalten, heißen HKEY_CURRENT_USER\Software\TortoiseSVN\ContextMenuEntriesMaskLow und HKEY_CURRENT_USER\Software\TortoiseSVN\ContextMenuEntriesMaskHigh.

Jeder dieser Registrierungsschlüssel ist ein DWORD Wert, bei dem jedes Bit einem bestimmten Menüeintrag entspricht. Ein gesetztes Bit bedeutet, dass der Menüeintrag deaktiviert ist.

Tabelle C.1. Menüeinträge und ihre Werte

WertMenüeintrag
0x0000000000000001Auschecken
0x0000000000000002Aktualisieren
0x0000000000000004Übertragen
0x0000000000000008Hinzufügen
0x0000000000000010Änderungen rückgängig
0x0000000000000020Bereinigen
0x0000000000000040Konflikt lösen
0x0000000000000080Wechseln
0x0000000000000100Import
0x0000000000000200Export
0x0000000000000400Projektarchiv hier erstellen
0x0000000000000800Verzweigen/Markieren
0x0000000000001000Zusammenführen
0x0000000000002000Löschen
0x0000000000004000Umbenennen
0x0000000000008000Aktualisiere zu Revision
0x0000000000010000Vergleich
0x0000000000020000Zeige Log
0x0000000000040000Konflikt bearbeiten
0x0000000000080000Umplatzieren
0x0000000000100000Auf Änderungen überprüfen
0x0000000000200000Ignorieren
0x0000000000400000Projektarchiv betrachten
0x0000000000800000Annotieren
0x0000000001000000Erzeuge Patch
0x0000000002000000Patch anwenden
0x0000000004000000Revisionsgraph
0x0000000008000000Sperre
0x0000000010000000Sperre freigeben
0x0000000020000000Eigenschaften
0x0000000040000000Vergleiche mit URL
0x0000000080000000Nicht versionierte Objekte löschen
0x0000000100000000Alle zusammenführen
0x0000000200000000Vergleiche mit vorheriger Revision
0x0000000400000000Einfügen
0x0000000800000000Arbeitskopie hochstufen
0x0000001000000000Später vergleichen
0x0000002000000000Vergleiche mit "Dateiname"
0x0000004000000000Standard-Diff
0x2000000000000000Einstellungen
0x4000000000000000Hilfe
0x8000000000000000Über


Beispiel: Um die Umplatzieren, Nicht versionierte Objekte Löschen und die Einstellungen Menüeinträge zu deaktivieren, addieren Sie die zu den Einträgen gehörenden Werte zusammen:

  0x0000000000080000
+ 0x0000000080000000
+ 0x2000000000000000
= 0x2000000080080000

Der niedrige DWORD-Wert (0x80080000) muss dann in HKEY_CURRENT_USER\Software\TortoiseSVN\ContextMenuEntriesMaskLow, der hohe DWORD-Wert (0x20000000) in HKEY_CURRENT_USER\Software\TortoiseSVN\ContextMenuEntriesMaskHigh eingetragen werden.

Um die Kontextmenüeinträge wieder zu aktivieren, löschen Sie einfach die beiden Registrierungsschlüssel.

Anhang D. TortoiseSVN automatisieren

Da alle Befehle von TortoiseSVN über Kommandozeilenparameter beeinflusst werden können, haben Sie die Möglichkeit, automatische Prozesse mit Batch-Skripten zu erstellen oder Dialoge aus anderen Programmen (z. B. Ihrem Lieblingseditor) heraus aufzurufen.

Wichtig

Beachten Sie, dass TortoiseSVN eine graphische Anwendung ist und dass diese Automatisierungsanleitung Ihnen erklärt, wie man die Dialoge von TortoiseSVN zur Abfrage von Benutzereingaben verwendet. Wenn Sie ein Skript schreiben wollen, das keine Eingaben erfordert, sollten Sie dafür das offizielle Subversion-Kommandozeilenprogramm verwenden.

TortoiseSVN-Befehle

Das TortoiseSVN-GUI-Programm heißt TortoiseProc.exe. Alle Befehle werden in der Form /command:abcd angegeben, wobei abcd der - erforderliche - Befehlsname ist. Die meisten Befehle benötigen zumindest einen Parameter, der in der Form /path:"some\path" übergeben wird. In der folgenden Tabelle bezieht sich der Befehl auf den Parameter /command:abcd und der Pfad auf den Parameter /path:"some\path".

Es gibt einen besonderen Befehl, der den Parameter /command:abcd nicht benötigt, sondern stattdessen den Projektmonitor startet, wenn nichts auf der Befehlszeile übergeben wird. Mit der Option /tray startet der Projektmonitor verborgen als Symbol im Windows-Benachrichtigungsbereich.

Da einige Befehle eine Liste von Zielpfaden akzeptieren (z. B. Übertragen mehrerer Dateien), kann der Parameter /path mehrere, durch * getrennte Pfade enthalten.

Sie können auch eine Datei angeben, die eine durch Zeilenumbrüche getrennte Liste von Pfaden enthält. Die Datei muss im UTF-16-Format ohne eine BOM sein. Um eine solche Datei anzugeben, verwenden Sie /pathfile anstelle von /path. Damit TortoiseSVN die Datei nach Beendigung des Befehls löscht, übergeben Sie den Parameter /deletepathfile. Wenn Sie /deletepathfile nicht angeben, müssen Sie die Datei anschließend selbst löschen.

Der Fortschrittsdialog, der für Übertragungen, Aktualisierungen und viele weitere Aktionen verwendet wird, bleibt normalerweise geöffnet, nachdem die Aktion beendet ist, bis der Anwender die Schaltfläche OK betätigt. Dieses Verhalten kann durch Auswahl der entsprechenden Option in den Einstellungen verändert werden. Die Verwendung dieser Einstellung wird den Dialog, unabhängig davon, ob der Befehl aus dem TortoiseSVN-Kontextmenü oder aus einer Batchdatei heraus aufgerufen wurde, schließen.

Um einen anderen Ort für die Konfigurationsdatei anzugeben, verwenden Sie den Parameter /configdir:"path\to\config\dir". Dies überschreibt alle Vorgaben, auch die aus der Registrierung.

Um den Fortschrittsdialog am Ende einer Aktion automatisch zu schließen, ohne die Standardeinstellung zu berücksichtigen, können Sie den Parameter /closeonend übergeben.

  • /closeonend:0 Den Dialog nicht automatisch schließen.

  • /closeonend:1 Schließen, wenn keine Fehler aufgetreten sind.

  • /closeonend:2 Schließen, wenn keine Fehler und Konflikte aufgetreten sind.

  • /closeonend:3 Schließen, wenn keine Fehler, Konflikte und Zusammenführungen aufgetreten sind.

. Um den Fortschrittsdialog für lokale Operationen zu schließen, wenn keine Fehler, Konflikte und Zusammenführungen aufgetreten sind, übergeben Sie den Parameter /closeforlocal.

Die untenstehende Tabelle listet alle Befehle, die mittels TortoiseProc.exe ausgeführt werden können. Wie oben beschrieben, müssen sie in der Form /command:abcd aufgerufen werden. In der Tabelle wird der Präfix /command weggelassen, um Platz zu sparen.

Tabelle D.1. Liste der Befehle und Parameter

BefehlBeschreibung
:aboutÖffnet den Über TortoiseSVN-Dialog. Dies ist das Standardverhalten, wenn kein Befehl angegeben wird.
:log

Öffnet den Log-Dialog. Die Option /path legt die Datei oder den Ordner fest, für den der Log-Dialog angezeigt werden soll. Weitere Optionen können mit <placeholder-1> definiert werden.</placeholder-1>

An svn date revision can be in one of the following formats:

  • {2006-02-17}

  • {15:30}

  • {15:30:00.200000}

  • {"2006-02-17 15:30"}

  • {"2006-02-17 15:30 +0230"}

  • {2006-02-17T15:30}

  • {2006-02-17T15:30Z}

  • {2006-02-17T15:30-04:00}

  • {20060217T1530}

  • {20060217T1530Z}

  • {20060217T1530-0500}

:checkout

Öffnet den Auschecken-Dialog. /path legt das Zielverzeichnis fest. /url definiert die URL, von der ausgecheckt werden soll. Wenn Sie den Schlüssel /blockpathadjustments angeben, wird die automatische Anpassung des Auscheckpfades blockiert. /revision:XXX gibt die auszucheckende Revision an.

Wenn Sie /outfile:"path/to/file" angeben wird die angegebene Datei nach dem Checkout erstellt mit drei Zeilen. Die erste Zeile enthält das Zielverzeichnis, die zweite Zeile die URL und die dritte Zeile die Revision des Checkouts.

:importÖffnet den Import-Dialog. Der /path gibt das Verzeichnis mit den zu importierenden Daten an. Sie können mit dem /logmsg eine Logmeldung übergeben oder, wenn Sie das nicht per Kommandozeile tun wollen, /logmsgfile:path verwenden, wobei path auf eine Datei zeigt, die die Logmeldung enthält.
:updateAktualisiert die Arbeitskopie in /path auf HEAD. Mit der Option /rev wird ein Dialog angezeigt, in dem vom Anwender die Zielrevision abgefragt wird. Um den Dialog zu vermeiden, geben Sie in /rev:1234 die Revisionsnummer an. Weitere Optionen sind /nonrecursive, /ignoreexternals und /includeexternals. Der /stickydepth sorgt dafür, dass die angegebene Tiefe bestehen bleibt und eine dünn besetzte Arbeitskopie angelegt wird. Mit /skipprechecks werden alle Prüfungen vor einer Aktualisierung übersprungen. Dadurch werden auch die Schaltfläche Zeige Log und das Kontextmenü für Vergleiche nach der Aktualisierung deaktiviert.
:commitÖffnet den Übertragen-Dialog. Der /path gibt das Zielverzeichnis oder die Liste der zu übertragenden Dateien an. Sie können mit Hilfe des Parameters /logmsg eine Logmeldung übergeben oder, wenn Sie das nicht per Kommandozeile tun wollen, /logmsgfile:path verwenden, wobei path auf eine Datei zeigt, die die Logmeldung enthält. Wenn Sie ein Fehlerverfolgungssystem nutzen, können Sie das Eingabefeld für die Fehler-ID mittels /bugid:"Hier liegt der Fehler" vorbelegen.
:addFügt die Datei(en) in /path der Versionskontrolle hinzu.
:revertMacht lokale Änderungen in der Arbeitskopie rückgängig. Der /path gibt die Objekte an.
:cleanupBereinigt die Arbeitskopie in /path nach unterbrochenen oder abgebrochenen Operationen und entsperrt sie. Außerdem muss /cleanup übergeben werden, um das Bereinigen tatsächlich durchzuführen. Mittels /noui sorgen Sie dafür, dass der Ergebnisdialog, der entweder eine Fehlermeldung oder den Erfolg des Bereinigens anzeigt, nicht angezeigt wird. /noprogressui deaktiviert darüber hinaus den Fortschrittsdialog. /nodlg den Dialog, in dem der Anwender wählen kann, was genau bereinigt werden soll. Die verfügbaren Optionen können mittels /cleanup zum Bereinigen, /breaklocks zum Aufbrechen aller Sperren, /revert zum Zurücknehmen nicht übertragener Änderungen, /delunversioned, /delignored, /refreshshell, /externals, /fixtimestamps und /vacuum übergeben werden.
:resolveMarkiert den Konflikt der in /path angegebenen Datei als gelöst. Bei Angabe von /noquestion wird der Konflikt ohne Rückfrage aufgelöst.
:repocreateErstellt ein Projektarchiv in /path
:switchÖffnet den Wechseln zu-Dialog. /path legt das Zielverzeichnis fest und /url definiert die URL, zu der gewechselt werden soll.
:exportExportiert die Arbeitskopie in /path in ein anderes Verzeichnis. Wenn /path auf ein nicht versioniertes Verzeichnis zeigt, wird ein Dialog angezeigt, der eine URL erfragt, die in das in /path angegebene Verzeichnis exportiert wird. Wenn Sie den Schlüssel /blockpathadjustments angeben, wird die automatische Anpassung des Exportpfades blockiert.
:dropexportExportiert die Arbeitskopie in /path in das in /droptarget angegebene Verzeichnis. Dieser Export verwendet nicht den Dialog, sondern wird direkt ausgeführt. Mit der Option /overwrite legen Sie fest, dass vorhandene Dateien ohne Rückfrage überschrieben werden. Die Option /autorename bedeutet, dass exportierte Dateien im Konfliktfall umbenannt werden, damit vorhandene Dateien nicht überschrieben werden. Option /extended hat die Parameter localchanges, mit dem nur lokal veränderte Objekte exportiert werden, und unversioned, mit dem zusätzlich alle nicht versionierten Objekte exportiert werden.
:dropvendorKopiert den Ordner in /path rekursiv in das in /droptarget angegebene Verzeichnis. Neue Dateien werden automatisch hinzugefügt. Fehlende Dateien werden in der Zielarbeitskopie entfernt, um sicherzustellen, dass Quelle und Ziel identisch sind. Geben Sie /noui an, um den Bestätigungsdialog zu überspringen, und /noprogressui, um auch die Anzeige des Fortschrittsdialogs zu deaktivieren.
:mergeÖffnet den Zusammenführen-Dialog. Der /path definiert den Zielordner. Zum Zusammenführen eines Revisionsbereichs stehen die folgenden Optionen zur Verfügung: /fromurl:URL, /revrange:string. Zum Zusammenführen zweier Bäume stehen folgende Optionen zur Verfügung: /fromurl:URL, /tourl:URL, /fromrev:xxx und /torev:xxx.
:mergeallÖffnet den Alle Zusammenführen-Dialog. Der /path bezeichnet das Zielverzeichnis.
:copyÖffnet den Verzweigen/Markieren-Dialog. Der /path gibt die Arbeitskopie an. Der /url ist die Ziel-URL. Wenn die URL mit einem ^ beginnt, wird sie relativ zur Wurzel des Projektes betrachtet. Sie können die Option Wechselt die Arbeitskopie zum neuen Zweig / zur neuen Marke gleich aktivieren, indem Sie den Parameter /switchaftercopy mit übergeben. Um die Option Zwischenordner erstellen zu aktivieren, können Sie den Parameter /makeparents mit übergeben. Sie können mit dem Parameter /logmsg eine Logmeldung übergeben oder, wenn Sie das nicht per Kommandozeile tun wollen, /logmsgfile:path verwenden, wobei path auf eine Datei zeigt, die die Logmeldung enthält.
:settingsÖffnet den Einstellungsdialog.
:removeEntfernt die Datei(en) in /path aus der Versionskontrolle.
:renameBenennt die Datei in /path um. Der neue Dateiname wird über einen Dialog abgefragt. Um die Frage nach dem Umbenennen ähnlicher Dateien in einem Schritt zu umgehen, übergeben Sie /noquestion.
:diffStartet das externe, in den TortoiseSVN-Einstellungen angegebene Vergleichsprogramm. Der /path spezifiziert die erste Datei. Bei Angabe von /path2 werden diese beiden Dateien verglichen. Ohne Angabe von /path2 wird die Datei in /path mit ihrer BASE-Revision verglichen. Wenn die Datei obendrein Eigenschaftsänderungen hat, wird das Vergleichsprogramm auch für jede geänderte Eigenschaft gestartet. Um das zu vermeiden, übergeben Sie den Parameter /ignoreprops. Um die Revisionsnummern vorzugeben, verwenden Sie /startrev:xxx und /endrev:xxx sowie für die optionale fixe Revision /pegrevision:xxx. Wenn /blame, aber nicht /path2 angegeben ist, wird der Vergleich durchgeführt, indem zunächst die Dateien in den gegebenen Revisionen annotiert werden. Der Parameter /line:xxx gibt die Zeile an, in die beim Anzeigen des Vergleichs gesprungen werden soll.
:shelveStellt die gewählten Pfade in einer neuen Ablage zurück. Parameter/shelfname:name legt den Namen der Ablage fest. Eine optionale Logmeldung kann mit /logmsg:message angegeben werden. Mit der Option /checkpoint werden die lokalen Änderungen beibehalten.
:unshelveWendet die Ablage mit dem Namen /shelfname:name auf den Pfad der Arbeitskopie an. Standardmäßig wird die neueste Version der Ablage verwendet, aber Sie können mit /version:X eine Version auswählen.
:showcompare

Abhängig von den URLs und den zu vergleichenden Revisionen wird entweder ein Standard-Diff (wenn die Option unified gesetzt ist), ein Dialog mit einer Liste der geänderten Dateien oder, wenn die URLs auf Dateien zeigen, das Vergleichsprogramm mit diesen Dateien angezeigt.

Die Optionen url1, url2, revision1 und revision2 müssen angegeben werden. Die Optionen pegrevision, ignoreancestry, blame und unified sind optional.

Falls die angegebene URL obendrein Eigenschaftsänderungen hat, wird das Vergleichsprogramm auch für jede geänderte Eigenschaft gestartet. Um das zu vermeiden, übergeben Sie den Parameter /ignoreprops.

Wenn ein Standard-Diff angefordert wird, kann eine optionale Quelltextformatierungs-Option angegeben werden, die die Zusammenführen-Info-Eigenschaften in einem benutzerfreundlicheren Format anzeigt.

:conflicteditorStartet den in der TortoiseSVN-Einstellungen angegebenen Konflikteditor mit der konfliktbehafteten Datei in /path.
:relocateZeigt den Umplatzieren-Dialog. Der /path bezeichnet die umzuplatzierende Arbeitskopie.
:helpÖffnet die Hilfedatei.
:repostatusÖffnet den Auf Änderungen prüfen-Dialog. /path legt die Arbeitskopie fest. Wenn /remote angegeben wird, kontaktiert der Dialog beim Start das Projektarchiv, als ob der Anwender auf Projektarchiv prüfen geklickt hätte.
:repobrowser

Startet den Projektarchivbetrachter in der URL der Arbeitskopie, die in /path angegeben ist, oder /path zeigt direkt auf eine URL.

Eine zusätzliche Option /rev:xxx kann verwendet werden, um die Revision anzugeben, die der Projektarchivbetrachter anzeigen soll. Wenn die/rev:xxx fehlt, wird als Standardwert HEAD verwendet.

Wenn /path auf eine URL zeigt, enthält /projectpropertiespath:path/to/wc den Pfadnamen, aus dem die Projekteigenschaften gelesen werden sollen.

Wenn /outfile:path\to\file angegeben ist, wird die gewählte URL und Revision in die angegebene Datei geschrieben, sobald der Projektarchivbetrachter geschlossen wird. Die erste Zeile darin enthält die URL, die zweite die Revision.

:ignoreFügt alle Objekte in /path zur Ignorierliste hinzu, das heißt, für alle Objekte wird die svn:ignore-Eigenschaft gesetzt.
:blame

Öffnet den Annotieren-Dialog mit der in /path angegebenen Datei.

Wenn die Optionen /startrev und /endrev angegeben sind, wird der Dialog zur Abfrage des Revisionsbereiches nicht angezeigt, sondern die angegebenen Revisionen verwendet.

Wenn die Option /line:nnn angegeben ist, wird TortoiseBlame die Datei in dieser Zeile positionieren.

Die Optionen /ignoreeol, /ignorespaces und /ignoreallspaces werden ebenfalls unterstützt.

:catSpeichert eine Datei von einer /path angegebenen Arbeitskopie oder URL an der in /savepath:path spezifizierten Stelle. Eine Revision kann in /revision:xxx angegeben werden, um eine Datei in einer bestimmten Revision zu holen.
:createpatchErstellt eine Patchdatei für den in /path angegebenen Pfad. Um den Dialog "Speichern unter" zu überspringen, können Sie den Pfad /savepath:path angeben, in dem die Patchdatei direkt gespeichert werden soll. Übergeben Sie /noview, um zu verhindern, dass der Standard-Diff-Betrachter die Patchdatei anzeigt. Wenn ein Standard-Diff angefordert wird, kann eine Option Quelltextformatierung angegeben werden, die die Zusammenführen-Info-Eigenschaften in einem benutzerfreundlicheren Format anzeigt.
:revisiongraph

Zeigt den Revisionsgraphen für den in /path angegebenen Pfad.

Um ein Bild des Revisionsgraphen für einen bestimmten Pfad zu erstellen, ohne den Graphen im Fenster anzuzeigen, übergeben Sie mittels /output:path den Pfad zur Ausgabedatei. Die Ausgabedatei muss eine Erweiterung mit einem Bildtypen haben, den der Revisionsgraph auch erstellen kann. Diese sind: .svg, .wmf, .png, .jpg, .bmp und .gif.

Da der Revisionsgraph viele Optionen hat, die sein Aussehen beeinflussen, können Sie diese auch verwenden, wenn Sie das Ausgabebild erzeugen. Übergeben Sie die Optionen mittels /options:XXXX, wobei XXXX ein Dezimalwert ist. Die beste Methode, um die nötigen Optionen zu ermitteln, besteht darin, den Revisionsgraphen auf die übliche Art zu starten, alle Ansichtsoptionen einzustellen und den Graphen zu schließen. Die Kommandozeilenparameter finden Sie dann in der Registrierung unter HKCU\Software\TortoiseSVN\RevisionGraphOptions.

:lockSperrt eine oder alle Dateien im in /path angegebenen Verzeichnis. Der Sperren-Dialog wird angezeigt, damit der Anwender einen Kommentar für die Sperre eingeben kann.
:unlockEntsperrt eine oder alle Dateien in einem in /pathangegebenen Verzeichnis.
:rebuildiconcacheRekonstruiert den Windows-Symbolspeicher. Verwenden Sie diese Funktion nur, wenn die Windows-Symbole beschädigt sind. Ein (nicht vermeidbarer) Seiteneffekt dieser Aktion ist, dass die Desktopsymbole neu arrangiert werden. /noquestion.
:properties

Zeigt den Eigenschaftsdialog für den in /path angegebenen Pfad.

Für versionierte Eigenschaften ist für diesen Befehl eine Arbeitskopie erforderlich.

Revisionseigenschaften können angezeigt/geändert werden, wenn /path eine URL und rev:xxx angegeben ist.

Um den Dialog direkt für eine bestimmte Eigenschaft zu öffnen, übergeben Sie den Namen der Eigenschaft in der Form /property:name.

:sync

Exportiert oder importiert die Einstellungen wie angegeben oder abhängig davon, ob die aktuellen oder die exportierten Einstellungen neuer sind.

Wenn mittels /path ein Pfad übergeben wird, wird dieser verwendet, um dort die Einstellungen zu lesen oder zu speichern.

Der Parameter /askforpath zeigt den Dialog 'Datei öffnen/speichern' an, in dem der Anwender den Export-/Import-Pfad auswählen kann.

Wenn weder die Option /load noch /save angegeben wird, bestimmt TortoiseSVN anhand des Dateidatums, ob die Einstellungen exportiert oder importiert werden sollen. Wenn die exportierte Datei neuer ist als die aktuellen Einstellungen, wird importiert, ansonsten exportiert.

Mit der Option /load werden die Einstellungen importiert.

Mit der Option /save werden die Einstellungen exportiert.

Der Parameter /local erzwingt, dass lokale Einstellungen, z. B. lokale Pfadnamen, im Export enthalten sind.


Beispiele (die auf einer Zeile eingegeben werden sollten):

TortoiseProc.exe /command:commit
                 /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                 /logmsg:"test log message" /closeonend:0

TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0

TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt"
                 /startrev:50 /endrev:60 /closeonend:0

Tsvncmd-URL-Behandlung

Unter Verwendung spezieller URLs ist es möglich, TortoiseProc von einer Webseite aus aufzurufen.

TortoiseSVN registriert ein neues Protokoll tsvncmd:, das zum Erstellen von Hyperlinks verwendet werden kann, die TortoiseSVN-Befehle aufrufen. Die Befehle und Parameter sind dieselben wie bei der Automatisierung von TortoiseSVN über die Kommandozeile.

Das Format der URL tsvncmd: sieht folgendermaßen aus:

tsvncmd:command:cmd?parameter:paramvalue?parameter:paramvalue

wobei cmd einer der zugelassenen Befehle ist und parameter ein Parameter wie path oder revision und paramvalue der Wert für diesen Parameter ist. Die Liste der Parameter ist abhängig vom verwendeten Befehl.

Die folgenden Befehle sind mit tsvncmd: URLs zulässig:

  • :update
  • :commit
  • :diff
  • :repobrowser
  • :checkout
  • :export
  • :blame
  • :repostatus
  • :revisiongraph
  • :showcompare
  • :log
  • :properties

Eine tsvncmd-URL könnte zum Beispiel folgendermaßen aussehen:

<a href="tsvncmd:command:update?path:c:\svn_wc?rev:1234">Update</a>

, oder für komplexere Fälle:

<a href="tsvncmd:command:showcompare?
url1:https://svn.code.sf.net/p/stefanstools/code/trunk/StExBar/src/setup/Setup.wxs?
url2:https://svn.code.sf.net/p/stefanstools/code/trunk/StExBar/src/setup/Setup.wxs?
revision1:188?revision2:189">compare</a>

TortoiseIDiff-Befehle

Das Programm zum Vergleichen von Bildern stellt ein paar Kommandozeilenbefehle zur Verfügung, mit denen Sie kontrollieren können, in welchem Modus das Programm startet. Die Anwendung selbst heißt TortoiseIDiff.exe.

Die untenstehende Tabelle listet alle Optionen, die per Kommandozeile an TortoiseIDiff übergeben werden können.

Tabelle D.2. Liste der Parameter

OptionBeschreibung
:leftDie im linken Fenster angezeigte Datei.
:lefttitleEin Titel. Dieser Text wird in der Bildansicht anstelle des vollständigen Dateipfades angezeigt.
:rightDie im rechten Fenster angezeigte Datei.
:righttitleEin Titel. Dieser Text wird in der Bildansicht anstelle des vollständigen Dateipfades angezeigt.
:overlayMit dieser Option werden die Bilder transparent überlagert.
:fitMit dieser Option werden die Bilder auf die gleiche Größe skaliert.
:showinfoZeigt die Bildinformationen.


Beispiele (die auf einer Zeile eingegeben werden sollten):

TortoiseIDiff.exe /left:"c:\images\img1.jpg" /lefttitle:"image 1"
                  /right:"c:\images\img2.jpg" /righttitle:"image 2"
                  /fit /overlay

TortoiseUDiff-Befehle

Der Standard-Diff-Betrachter hat nur zwei Kommandozeilenoptionen:

Tabelle D.3. Liste der Parameter

OptionBeschreibung
:patchfilePfad zur Standard-Diff-Datei.
:pAktiviert den Pipe-Modus. Das Standard-Diff wird von der Standardeingabe gelesen.


Beispiele (die in einer Zeile eingegeben werden sollten):

TortoiseUDiff.exe /patchfile:"c:\diff.patch"

Wenn Sie die Diff-Datei mit einem anderen Befehl erzeugen, können Sie die Datei mit TortoiseUDiff direkt anzeigen:

svn diff | TortoiseUDiff.exe /u

Das funktioniert auch, wenn Sie die Option /p weglassen:

svn diff | TortoiseUDiff.exe

Anhang E. Befehle der Kommandozeile

Manchmal finden sich in diesem Handbuch Verweise auf die allgemeine Subversion-Dokumentation, die die Bedienung mit dem Kommandozeilen-Client (CLI) beschreibt. Um Ihnen zu verdeutlichen, welche Funktionen TortoiseSVN im Verborgenen aufruft, haben wir eine Liste der Kommandozeilenbefehle zusammengestellt, die den Funktionen der grafischen Oberfläche von TortoiseSVN entsprechen.

Anmerkung

Obwohl es äquivalente Kommandozeilenbefehle gibt, beachten Sie bitte, dass TortoiseSVN nicht das Subversion-Kommandozeilenprogramm aufruft, sondern direkt auf die Subversion-Bibliotheken zugreift.

Wenn Sie einen Fehler von TortoiseSVN berichten, kann es vorkommen, dass wir Sie auffordern, dieses Fehlverhalten mit dem Kommandozeilen-Client zu reproduzieren, damit wir TortoiseSVN-Probleme von Subversion-Problemen unterscheiden können. Diese Kurzreferenz zeigt Ihnen, welche Befehle Sie verwenden können.

Grundregeln und Konventionen

In der folgenden Beschreibung wird die URL eines Projektarchivs einfach als URL geschrieben. Ein Beispiel wäre https://svn.code.sf.net/p/tortoisesvn/code/trunk/. Der Pfad der Arbeitskopie wird stets als PFAD geschrieben. Ein Beispiel wäre C:\TortoiseSVN\trunk.

Wichtig

Da es sich bei TortoiseSVN um eine Windows-Shell-Erweiterung handelt, kennt es das Konzept eines Arbeitsverzeichnisses nicht. Beim entsprechenden Aufruf der Kommandozeile müssen deshalb alle Pfade zu Arbeitskopien als absolute und nicht als relative Pfade angegeben werden.

Einige Kommandozeilenbefehle besitzen Optionen. Diese werden in TortoiseSVN durch Optionsfelder gesteuert. In der Kommandozeilennotation werden diese optionalen Parameter durch [eckige Klammern] dargestellt.

TortoiseSVN-Befehle

Auschecken

svn checkout [-depth ARG] [--ignore-externals] [-r rev] URL PATH
      

Die Elemente des Kombinationsfeldes Aktualisierungstiefe beziehen sich auf den Parameter -depth.

Wenn Externals auslassen gewählt ist, verwenden Sie die Option --ignore-externals.

Wenn Sie eine bestimmte Revision auschecken, geben Sie diese nach der URL mittels -r an.

Aktualisieren

svn info URL_of_WC
svn update [-r rev] PATH
      

Das Aktualisieren mehrerer Dateien ist keine atomare Operation. TortoiseSVN bestimmt zunächst die neueste Revision (HEAD) im Projektarchiv und aktualisiert anschließend alle Objekte zu dieser Revisionsnummer, damit Sie keine aus zwei Revisionen zusammengesetzte Arbeitskopie erhalten.

Wenn nur ein Objekt zur Aktualisierung ausgewählt ist oder die gewählten Objekte aus verschiedenen Projektarchiven stammen, aktualisiert TortoiseSVN zur neuesten Revision (HEAD).

An dieser Stelle werden keine Kommandozeilenoptionen verwendet. Aktualisiere zu Revision implementiert ebenfalls den Aktualisieren-Befehl, bietet jedoch weitere Optionen.

Aktualisieren zu Revision

svn info URL_of_WC
svn update [-r rev] [-depth ARG] [--ignore-externals] PATH
      

Die Elemente des Kombinationsfeldes Aktualisierungstiefe beziehen sich auf den Parameter -depth.

Wenn Externals auslassen gewählt ist, verwenden Sie die Option --ignore-externals.

Übertragen

In TortoiseSVN nutzt der Übertragen-Dialog mehrere Subversion-Befehle. Der erste Schritt ist eine Statusprüfung, die die Objekte in Ihrer Arbeitskopie ermittelt, die übertragen werden können. Sie können diese Liste überprüfen, Dateien mit dem Original (BASE) vergleichen und die Objekte, die Sie übertragen wollen, auswählen.

svn status -v PATH
      

Wenn Zeige nicht versionierte Dateien gewählt ist, wird TortoiseSVN alle nicht versionierten Dateien und Ordner in der Hierarchie der Arbeitskopie unter Berücksichtigung der Ignorierregeln anzeigen. Diese spezielle Funktion besitzt in Subversion kein Äquivalent, da der Befehl svn status nicht in unversionierte Ordner hinabsteigt.

Wenn Sie nicht versionierte Dateien oder Ordner auswählen, werden diese vor dem Übertragen zur Arbeitskopie hinzugefügt.

svn add PATH...
      

Sobald Sie auf OK klicken, wird die Übertragung zum Projektarchiv durchgeführt. Wenn Sie alle Dateiauswahlboxen in der Voreinstellung belassen haben, wird TortoiseSVN die Daten in einem Schritt rekursiv übertragen. Sobald Sie einzelne Objekte abwählen, muss eine nicht-rekursive Übertragung (-N) durchgeführt werden. Dabei muss jeder Pfad einzeln auf der Kommandozeile übergeben werden.

svn commit -m "LogMessage" [-depth ARG] [--no-unlock] PATH...
      

LogMessage entspricht dem Inhalt des Eingabefeldes für Logmeldungen und kann leer gelassen werden.

Wenn Sperren behalten gewählt ist, verwenden Sie die Option --no-unlock.

Vergleich

svn diff PATH
      

Wenn Sie Vergleich aus dem Kontextmenü heraus aufrufen, bilden Sie die Unterschiede zwischen einer geänderten Datei und deren BASE-Revision. Die Subversion-Kommandozeile tut dies auch, liefert jedoch die Ausgabe in einem Standard-Diff-Format (unified). TortoiseSVN hingegen verwendet TortoiseMerge (oder ein Vergleichsprogramm Ihrer Wahl), um die Unterschiede zwischen Textdateien graphisch anzuzeigen. Aus diesem Grunde gibt es keinen äquivalenten Befehl auf der Kommandozeile.

Sie können auch die Differenzen von zwei beliebigen anderen Dateien anzeigen lassen, ob diese unter Versionskontrolle stehen oder nicht. TortoiseSVN reicht die markierten Dateien einfach an das gewählte Diff-Programm weiter und lässt dieses die Änderungen ermitteln.

Zeige Log

svn log -v -r 0:N --limit 100 [--stop-on-copy] PATH
or
svn log -v -r M:N [--stop-on-copy] PATH
      

Standardmäßig versucht TortoiseSVN, 100 Logmeldungen mittels der Option --limit zu holen. Wenn die Einstellungen den Einsatz der alten API für die Logmeldungen erfordern, wird die zweite Variante genutzt, um die Logmeldungen für 100 Revisionen im Projektarchiv zu holen.

Wenn Bei Kopien/Umbenennen anhalten gewählt ist, verwenden Sie die Option --stop-on-copy.

Prüfe auf Änderungen

svn status -v PATH
or
svn status -u -v PATH
      

Die erste Statusprüfung betrachtet nur Ihre lokale Arbeitskopie. Wenn Sie auf die Schaltfläche Projektarchiv prüfen klicken, wird im Projektarchiv nachgeschaut, welche Dateien durch eine Aktualisierung betroffen wären. Dies erfordert die Verwendung der Option -u.

Wenn Zeige nicht versionierte Dateien gewählt ist, wird TortoiseSVN alle nicht versionierten Dateien und Ordner in der Hierarchie der Arbeitskopie unter Berücksichtigung der Ignorierregeln anzeigen. Diese spezielle Funktion besitzt in Subversion kein Äquivalent, da der Befehl svn status nicht in unversionierte Ordner hinabsteigt.

Revisionsgraph

Der Revisionsgraph ist eine Funktionalität, die nur in TortoiseSVN zur Verfügung steht und für die es kein Äquivalent in der Kommandozeile gibt.

TortoiseSVN führt die Schritte

svn info URL_der_AK
svn log -v URL

aus, wobei URL die Basis des Projektarchivs ist, und analysiert anschließend die zurückgegebenen Daten.

Projektarchivbetrachter

svn info URL_of_WC
svn list [-r rev] -v URL
      

Sie können svn info verwenden, um die Basis des Projektarchivs zu bestimmen. Dies ist die oberste, im Projektarchivbetrachter angezeigte Ebene. Sie können von dort aus nicht weiter nach Oben navigieren. Weiterhin gibt dieser Befehl alle Sperrinformationen des Projektarchivbetrachters aus.

Der Befehl svn list listet bei Angabe einer URL und einer Revision den Inhalt eines Verzeichnisses auf.

Konflikt bearbeiten

Hierfür gibt es keinen entsprechenden Kommandozeilenbefehl. Es wird TortoiseMerge oder ein externer Konflikteditor aufgerufen, um die in den Konflikt verwickelten Dateien zu betrachten und den Konflikt aufzulösen.

Konflikt aufgelöst

svn resolved PATH
      

Umbenennen

svn rename CURR_PATH NEW_PATH
      

Löschen

svn delete PATH
      

Änderungen rückgängig

svn status -v PATH
      

Der erste Schritt ist eine Statusprüfung, die die Objekte in Ihrer Arbeitskopie ermittelt, die rückgängig gemacht werden können. Sie können diese Liste überprüfen, Dateien mit dem Original (BASE) vergleichen und die Objekte, die Sie rückgängig machen wollen, auswählen.

Sobald Sie auf OK klicken, werden Ihre Änderungen rückgängig gemacht. Wenn Sie alle Dateiauswahlboxen in der Voreinstellung belassen haben, führt TortoiseSVN die Aktion in einem Schritt rekursiv (-R) durch. Sobald Sie einzelne Objekte abwählen, muss jeder Pfad einzeln auf der Kommandozeile übergeben werden.

svn revert [-R] PATH...
      

Bereinigen

svn cleanup PATH
      

Sperre holen

svn status -v PATH
      

Der erste Schritt ist eine Statusprüfung, die die Dateien in Ihrer Arbeitskopie ermittelt, die gesperrt werden können. Sie können die Dateien, die Sie sperren wollen, auswählen.

svn lock -m "LockMessage" [--force] PATH...
      

Die Sperrmeldung entspricht dem Inhalt des Eingabefeldes für Logmeldungen und kann leer gelassen werden.

Wenn Sperren stehlen gewählt ist, verwenden Sie die Option --force.

Sperre freigeben

svn unlock PATH
      

Verzweigen/Markieren

svn copy -m "LogMessage" URL URL
or
svn copy -m "LogMessage" URL@rev URL@rev
or
svn copy -m "LogMessage" PATH URL
      

Der Dialog Verzweigen/Markieren erzeugt eine Kopie im Projektarchiv. Es gibt drei Optionen:

  • HEAD-Revision im Projektarchiv
  • Revisionsnummer im Projektarchiv
  • Arbeitskopie

, die den drei Kommandozeilenparametern entsprechen.

LogMessage entspricht dem Inhalt des Eingabefeldes für Logmeldungen und kann leer gelassen werden.

Wechseln

svn info URL_of_WC
svn switch [-r rev] URL PATH
      

Zusammenführen

svn merge [--dry-run] --force From_URL@revN To_URL@revM PATH
      

Die Schaltfläche Trockenlauf startet das Zusammenführen mit der Option --dry-run.

svn diff From_URL@revN To_URL@revM
      

Die Standard-Diff Schaltfläche zeigt die Vergleichsoperation, die zum Zusammenführen verwendet wird.

Export

svn export [-r rev] [--ignore-externals] URL Export_PATH
      

Dieser Dialog wird für nicht versionierte Ordner aufgerufen. Der Ordner ist das Ziel des Exports.

Der Export einer Arbeitskopie an einen anderen Ort wird ohne die Subversion-Bibliotheken durchgeführt. Deshalb gibt es auch keinen entsprechenden Kommandozeilenbefehl.

TortoiseSVN kopiert alle Dateien an den neuen Ort und zeigt Ihnen derweil den Fortschritt an. Nicht versionierte Dateien oder Ordner können ebenfalls exportiert werden.

In beiden Fällen gilt: Wenn Externals auslassen gewählt ist, verwenden Sie die Option--ignore-externals.

Umplatzieren

svn switch --relocate From_URL To_URL
      

Projektarchiv hier erstellen

svnadmin create --fs-type fsfs PATH
      

Hinzufügen

svn add PATH...
      

Wenn Sie einen Ordner markiert haben, durchsucht TortoiseSVN diesen rekursiv nach Objekten, die hinzugefügt werden können.

Import

svn import -m LogMessage PATH URL
      

LogMessage entspricht dem Inhalt des Eingabefeldes für Logmeldungen und kann leer gelassen werden.

Annotieren

svn blame -r N:M -v PATH
svn log -r N:M PATH
      

Wenn Sie die Annotierung mit TortoiseBlame betrachten, wird die Loginformation benötigt, um die Logmeldungen in einem Hinweistext anzuzeigen. Wenn Sie die Annotierungen als Textdatei betrachten, ist diese Information nicht erforderlich.

Zur Ignorierliste hinzufügen

svn propget svn:ignore PATH > tempfile
{neuen Ignorieren-Eintrag in tempfile bearbeiten}
svn propset svn:ignore -F tempfile PATH
      

Da die Eigenschaft svn:ignore oft mehrere Zeilen hat, wird hier gezeigt, wie sie mit Hilfe einer Textdatei statt direkt per Kommandozeile geändert wird.

Erzeuge Patch

svn diff PATH > patch-file
      

TortoiseSVN erzeugt eine Patchdatei im Standard-Diff-Format, indem die Arbeitskopie mit ihrer BASE-Version verglichen wird.

Patch anwenden

Patches anzuwenden ist ein kniffliges Unterfangen, es sei denn, der Patch und die Arbeitskopie befinden sich in der gleichen Revision. Zum Glück für Sie existiert TortoiseMerge, für das es keine entsprechende Funktion in Subversion gibt.

Anhang F. Implementierungsdetails

Inhaltsverzeichnis

Überlagerte Symbole

Dieser Anhang enthält einige interne Informationen über die Arbeitsweise von TortoiseSVN.

Überlagerte Symbole

Jede Datei und jeder Ordner besitzt einen Statuswert in Subversion. Im Kommandozeilenclient werden diese durch einzelne Buchstaben gekennzeichnet, in TortoiseSVN durch überlagerte Symbole. Da die Anzahl der zur Verfügung stehenden überlagerten Symbole durch Windows eingeschränkt wird, kann ein Symbol für mehrere Statuswerte stehen.

Das Symbol Konflikt wird verwendet, um anzuzeigen, dass beim Aktualisieren oder Wechseln zu ein Konflikt zwischen lokalen Änderungen und Änderungen in der Arbeitskopie auftrat. Weiterhin wird durch dieses Symbol der Status Versperrt angezeigt.

Sobald Sie eine Datei ändern, ändert sich auch der Status der Datei auf Verändert. Mit diesem Symbol werden auch Zusammengeführte oder Ersetzte Dateien gekennzeichnet. Auf diese Weise können Sie mit einem Blick feststellen, welche Dateien Sie geändert und noch nicht in das Projektarchiv übertragen haben.

Dieses überlagerte Symbol zeigt, dass Dateien oder Ordner zum Löschen aus der Versionskontrolle markiert wurden oder dass TortoiseSVN eine Datei unter Versionskontrolle vermisst. Eine fehlende Datei kann natürlich dieses Symbol nicht erhalten, aber der Elternordner zeigt es an, sobald ein Unterobjekt vermisst wird.

Dieses Symbol zeigt an, dass eine Datei oder ein Ordner neu zur Versionskontrolle Hinzugefügt wurde.

Dieses Symbol bedeutet dass der Subversion-Status Normal ist oder dass es sich um ein versioniertes Objekt handelt, dessen Status noch nicht bekannt ist. Da TortoiseSVN im Hintergrund einen Statusspeicher verwendet, kann es ein paar Sekunden dauern, bis das Symbol aktualisiert wird.

Das Symbol Benötigt Sperrezeigt an, dass die svn:needs-lock-Eigenschaft einer Datei gesetzt ist.

Das Symbol Gesperrt zeigt an, dass die lokale Arbeitskopie die Sperre für die Datei besitzt.

Dieses Symbol bedeutet, dass dieses Objekt von Subversion Ignoriert wird. Das kann aufgrund eines globalen Ignoriermusters oder der svn:ignore-Eigenschaft des Elternobjekts der Fall sein. Dieses Symbol ist optional.

Dieses Symbol zeigt an, dass eine Datei oder ein Ordner Nicht Versioniert ist. Das Objekt liegt innerhalb eines versionierten Ordners, befindet sich jedoch selbst nicht unter Versionskontrolle. Dieses Symbol ist optional.

Wenn ein Objekt sich nicht in einer Arbeitskopie befindet (Subversion-Status none), wird kein überlagertes Symbol angezeigt. Wenn Sie die Symbole Ignoriert und Nicht Versioniert abgeschaltet haben, wird für solche Objekte auch innerhalb einer Arbeitskopie kein Symbol angezeigt.

Ein Objekt kann nur einen Subversion-Status besitzen. Zum Beispiel kann eine Datei lokal verändert und gleichzeitig zum Löschen markiert sein. Subversion gibt in diesem Fall nur einen Wert gelöscht zurück. Diese Prioritäten sind in Subversion selbst festgelegt.

Wenn TortoiseSVN den Status rekursiv anzeigt (die Standardeinstellung), erhält jeder Ordner ein Symbol, das seinen eigenen sowie die Status aller seiner Kinder anzeigt. Damit ein Summensymbol angezeigt werden kann, verwenden wir die obenstehende Reihenfolge, um festzulegen, welches Symbol verwendet wird, wobei Konflikt die höchste Priorität hat.

Sie werden möglicherweise feststellen, dass nicht alle diese Symbole auf Ihrem Rechner dargestellt werden. Das liegt daran, dass Windows die Anzahl der überlagerten Symbole auf 15 beschränkt. Windows selber verwendet 4, die restlichen 11 teilen sich alle anderen Programme. Wenn nicht mehr genug Plätze frei sind, versucht TortoiseSVN, ein Guter Bürger (tm) zu sein und schränkt seine Verwendung von überlagerten Symbolen ein, damit andere Anwendungen eine Chance haben.

Da es auch Tortoise-Clients für andere Versionskontrollsysteme gibt, haben wir eine gemeinsame Komponente entwickelt, die für die Anzeige der überlagerten Symbole zuständig ist. Die technischen Details sind hier nicht wichtig. Sie müssen wissen müssen, dass diese Komponente es allen Tortoise-Clients ermöglicht, dieselben überlagerten Symbole zu verwenden und dass dadurch die elf verfügbaren Plätze nicht durch die Installation mehrerer Tortoise-Clients verbraucht werden. Natürlich gibt es auch einen kleinen Nachteil: Alle Tortoise-Clients verwenden dieselben überlagerten Symbole und sie können anhand der Symbole nicht mehr auf einen Blick erkennen, welches Versionskontrollsystem zu einer Arbeitskopie gehört.

  • Normal, Verändert und Konflikt sind immer geladen und sichtbar.

  • Gelöscht wird, wenn möglich geladen, fällt aber auf Verändert zurück, wenn nicht genügend Plätze frei sind.

  • Schreibgeschützt wird, wenn möglich geladen, fällt aber auf Verändert zurück, wenn nicht genügend Plätze frei sind.

  • Gesperrt wird, wenn möglich geladen, fällt aber auf Normal zurück, wenn nicht genügend Plätze frei sind.

  • HInzugefügt wird, wenn möglich geladen, fällt aber auf Verändert zurück, wenn nicht genügend Plätze frei sind.

Anhang G. Sprachpakete und Rechtschreibprüfung

Das Standardinstallationsprogramm unterstützt nur Englisch, aber Sie können weitere Sprachpakete und Rechtschreibwörterbücher nach der Installation herunterladen.

Sprachpakete

Die TortoiseSVN-Benutzerschnittstelle wurde in viele verschiedene Sprachen übersetzt, sodass auch für Sie ein passendes Sprachpaket zur Verfügung stehen könnte. Sie finden die vorhandenen Sprachpakete auf unserer Übersetzungsseite. Wenn für Sie nichts Passendes dabei ist, werden Sie doch einfach Projektmitglied und steuern Sie Ihre eigene Übersetzung bei ;-)

Jedes Sprachpaket ist in einem .msi-Installer enthalten. Lassen Sie das Installationsprogramm einmal laufen und folgen Sie den Anweisungen. Nachdem die Installation abgeschlossenen ist, steht die Übersetzung zur Verfügung.

Das Handbuch wurde ebenfalls in viele verschiedene Sprachen übersetzt. Sie können die übersetzten Handbücher von der Supportseite auf unserer Webseite herunterladen.

Rechtschreibprüfung

TortoiseSVN verwendet die Windows-Rechtschreibprüfung (verfügbar ab Windows 8). Wenn Sie die Rechtschreibprüfung nicht in der Standardsprache des Betriebssystems verwenden wollen, müssen Sie die entsprechende Rechtschreibprüfung über die Windows-Einstellungen installieren (Einstellungen > Region & Sprache).

TortoiseSVN wird diese Rechtschreibprüfung verwenden, wenn sie korrekt über die Projekteigenschaft tsvn:projectlanguage konfiguriert ist.

Für den Fall, dass die Windows-Rechtschreibprüfung nicht verfügbar ist, kann TortoiseSVN auch Wörterbücher von OpenOffice und Mozilla verwenden.

Das Installationsprogramm bringt die englische und amerikanische Rechtschreibprüfung mit. Wenn Sie weitere Sprachen benötigen, installieren Sie einfach eines von TortoiseSVN's Sprachpaketen. Diese bringen außer der lokalisierten Anwenderoberfläche auch die entsprechende Rechtschreibprüfung mit. Nachdem die Installation abgeschlossen ist, steht das Wörterbuch zur Verfügung.

Sie können die Wörterbücher auch selbst installieren. Wenn Sie bereits OpenOffice oder Mozilla auf Ihrem PC haben, können Sie deren Wörterbücher aus dem Anwendungsverzeichnis kopieren. Andernfalls müssen Sie die Wörterbücher von http://wiki.services.openoffice.org/wiki/Dictionaries herunterladen.

Sobald Sie die Wörterbücher haben, müssen Sie sie wahrscheinlich umbenennen, sodass die Dateinamen dem Kürzel für die Landessprache entsprechen. Beispiel:

  • en_US.aff

  • en_US.dic

. Danach kopieren Sie sie einfach in den Ordner %APPDATA%\TortoiseSVN\dic. Wenn dieser Ordner nicht existiert, müssen Sie ihn zuerst anlegen. TortoiseSVN wird auch im Languages-Unterordner des TortoiseSVN-Installationsordners suchen, normalerweise C:\Programme\TortoiseSVN\Languages. Dies ist der Ordner, in dem die Dateien der Sprachpakete installiert werden. Dafür benötigt die Installation für den Ordner %APPDATA% keine Administratorrechte und erhält deswegen Vorrang. Beim nächsten Start von TortoiseSVN steht Ihnen dann die Rechtschreibprüfung zur Verfügung.

Wenn Sie mehrere Wörterbücher installieren, verwendet TortoiseSVN die folgenden Regeln, um das zu verwendende Wörterbuch zu ermitteln.

  1. Prüfe die Einstellung tsvn:projectlanguage. Lesen Sie in „Projekt-Einstellungen“ nach, wie Sie Projekteinstellungen vornehmen.

  2. Wenn keine Projektsprache eingestellt ist oder diese Sprache nicht installiert ist, versuchen Sie die Sprache, die dem Windows-Gebietsschema entspricht.

  3. Wenn kein Paket mit der Windows-Spracheinstellung übereinstimmt, versuchen Sie es mit der Basis-Sprache, z. B. de_CH (Schweizerdeutsch) fällt zurück auf de_DE (Deutsch).

  4. Wenn keines der obenstehenden Verfahren funktioniert, wird Englisch verwendet, das in der Standardinstallation enthalten ist.

Glossar

Hinzufügen

Ein Subversion-Befehl, der zum Hinzufügen von Dateien oder Ordnern zu einem Projektarchiv benutzt wird. Die neuen Objekte werden beim Übertragen zum Projektarchiv hinzugefügt.

BASE-Revision

Die aktuelle Basisrevision einer Datei oder eines Ordners in Ihrer Arbeitskopie. Dies ist die Revision, in der sich die Datei oder der Ordner befand, als zuletzt Auschecken, Aktualisieren oder Übertragen aufgerufen wurde. Die BASE-Revision entspricht normalerweise nicht der HEAD-Revision.

Annotieren

Dieser Befehl steht nur für Textdateien zur Verfügung und er annotiert jede Zeile mit der Revision und dem letzten Autor. In unserer GUI-Anwendung namens TortoiseBlame wird zusätzlich die Logmeldung angezeigt, wenn Sie mit der Maus über die Revisionsnummer fahren.

Verzweigen

Ein Begriff, der häufig in Versionskontrollsystemen verwendet wird, um zu beschreiben, wenn sich die Entwicklung an einem bestimmten Punkt verzweigt und verschiedenen Wegen folgt. Sie können von der Hauptentwicklungslinie abzweigen, um neue Funktionen zu implementieren, ohne den Hauptzweig instabil zu machen. Genauso können Sie eine stabile freigegebene Version abzweigen, an der Sie nur noch Fehler beseitigen, während die Weiterentwicklung am instabilen Hauptzweig erfolgt. In Subversion sind Zweige als billige Kopien implementiert.

Auschecken

Ein Subversion-Befehl, der eine lokale Arbeitskopie in einem leeren Verzeichnis erstellt, indem versionierte Dateien aus einem Projektarchiv heruntergeladen werden.

Bereinigen

Ein Zitat aus dem Subversion-Buch: Bereinigt die Arbeitskopie rekursiv, entfernt dabei Sperren und setzt unvollendete Operationen fort. Wenn Sie jemals einen Fehler Arbeitskopie gesperrt bekommen, führen Sie diesen Befehl aus, um veraltete Sperren zu entfernen und Ihre Arbeitskopie wieder in einen nutzbaren Zustand zu versetzen. Beachten Sie, dass in diesem Zusammenhang Sperren lokale Dateisystemsperren bezeichnet und keine Sperren im Projektarchiv.

Übertragen

Dieser Subversion-Befehl wird verwendet, um die Änderungen in Ihrer lokalen Arbeitskopie zurück in das Projektarchiv zu übertragen.

Konflikt

Wenn Änderungen vom Projektarchiv mit den lokalen Änderungen zusammengeführt werden sollen, kann es vorkommen, dass diese Änderungen in denselben Zeilen der Datei auftreten. In diesem Fall kann Subversion nicht selbst entscheiden, welche Version zu verwenden ist und die Datei wird somit als in Konflikt markiert. Sie müssen die Datei von Hand editieren und den Konflikt auflösen, bevor Sie weitere Änderungen übertragen können.

Kopieren

In einem Subversion-Projektarchiv können Sie eine Kopie einer einzelnen Datei oder eines ganzen Baumes erstellen. Diese sind als billige Kopien in Form eines Verweises auf das Original implementiert. Somit benötigt selbst die Kopie eines Dateibaumes fast keinen Platz. Eine Kopie behält die Historie ihrer Vorgänger, sodass auch Logmeldungen über die Kopie hinaus verfolgt werden können.

Löschen

Wenn Sie ein versioniertes Objekt löschen (und dann übertragen), existiert die Datei oder Ordner nach der übertragenen Revision nicht mehr im Projektarchiv. Aber selbstverständlich existiert diese noch in früheren Revisionen und es kann immer noch darauf zugegriffen werden. Falls nötig, können Sie das gelöschte Objekt wieder in die Arbeitskopie kopieren und es so mit der kompletten Historie wiederherstellen.

Vergleich

Abkürzung für Zeige Unterschiede. Sehr nützlich, wenn Sie genau sehen wollen, welche Änderungen Sie vorgenommen haben.

Export

Dieser Befehl erzeugt eine Kopie eines versionierten Ordners. Wie eine Arbeitskopie, jedoch ohne die lokalen .svn-Ordner.

FSFS

Ein proprietäres Subversion-Dateisystem für Projektarchive. Kann über Netzwerkfreigaben genutzt werden. Seit Version 1.2 Standard für neue Projektarchive.

GPO

Gruppenrichtlinienobjekt.

HEAD-Revision

Die neueste Version einer Datei oder eines Ordners im Projektarchiv.

Import

Ein Subversion-Befehl, mit dem eine vollständige Ordnerhierarchie mit einer einzigen Revision in ein Projektarchiv importiert wird.

Sperre

Wenn Sie eine Datei sperren, wird diese im Projektarchiv als nicht übertragbar markiert, mit Ausnahme der Arbeitskopie, von der aus die Sperre gesetzt wurde.

Log

Zeigt das Änderungsprotokoll einer Datei oder eines Ordners. Auch Historie genannt.

Historie

Zeigt die Revisionshistorie einer Datei oder eines Ordners. Auch als Log bekannt.

Zusammenführen

Der Prozess, mit dem Änderungen vom Projektarchiv zur Arbeitskopie hinzugefügt werden, ohne lokale Änderungen zu beeinträchtigen. Manchmal können diese Änderungen nicht automatisch hinzugefügt werden und die Arbeitskopie befindet sich dann in einem Konflikt.

Das Zusammenführen passiert automatisch, wenn Sie Ihre Arbeitskopie aktualisieren. Sie können auch mit dem TortoiseSVN-Befehl Zusammenführen spezifische Änderungen von einem Zweig in der Arbeitskopie zusammenführen.

Patch

Wenn eine Arbeitskopie nur Änderungen an Textdateien aufweist, ist es möglich, mit dem Diff-Befehl von Subversion eine Datei zu erstellen, die diese Änderungen im Standard-Diff-Format enthält. Eine Datei mit solchem Inhalt wird üblicherweise als Patch bezeichnet und kann zum Beispiel jemandem per Mail geschickt werden, der diese Änderungen dann in seine Arbeitskopie übernehmen kann. Jemand ohne Übertragungsrechte zum Projektarchiv kann so Änderungen vornehmen, diese Änderungen an eine Person mit Übertragungsrechten schicken, die dann diese Änderungen übertragen kann. Oder man kann eine solche Patchdatei anderen zuerst zur Diskussion schicken, bevor man die Änderungen überträgt.

Eigenschaft

Zusätzlich zur Versionierung von Dateien und Ordnern erlaubt Subversion die Versionierung von Metadaten für Ordner und Dateien, auch als Eigenschaften bezeichnet. Jede Eigenschaft hat einen Namen und einen Wert, ähnlich wie ein Registrierungsschlüssel. Subversion selbst hat einige spezielle Eigenschaften definiert, die intern benutzt werden, wie zum Beispiel svn:eol-style. TortoiseSVN nutzt ebenfalls spezielle Eigenschaften, so zum Beispiel tsvn:logminsize. Sie können eigene Eigenschaften mit jedem Namen und Wert erstellen, den sie möchten.

Umplatzieren

Wenn das Projektarchiv verschoben wird, weil Sie es vielleicht in einen anderen Ordner auf dem Server verschoben haben oder der Domänenname des Servers sich ändert, dann müssen Sie die Arbeitskopie umplatzieren, sodass die Projektarchiv-URL zum neuen Ort zeigt.

Hinweis: Sie sollten diesen Befehl nur benutzen, wenn die Arbeitskopie zur selben Stelle im Projektarchiv selbst zeigt und nur das Projektarchiv selbst verschoben wurde. In allen anderen Situationen müssen Sie den Befehl Wechseln zu verwenden.

Projektarchiv

Ein Projektarchiv ist ein zentraler Platz, in dem Daten gespeichert und verwaltet werden. Ein Projektarchiv kann ein Ort sein, an dem sich mehrere Datenbanken oder Dateien zur Verteilung über ein Netzwerk befinden, oder ein Projektarchiv kann ein Ort sein, auf den der Benutzer direkt zugreifen kann, ohne über ein Netzwerk reisen zu müssen.

Konflikt lösen

Wenn sich Dateien in einer Arbeitskopie nach einem Zusammenführen in einem Konflikt befinden, müssen diese Konflikte von einer Person mittels eines Editors (oder vielleicht TortoiseMerge) aufgelöst werden. Dieser Prozess wird als Konflikt lösen bezeichnet. Wenn die Konflikte aufgelöst sind, können diese Dateien als aufgelöst markiert werden, was eine Übertragung erlaubt.

Änderungen rückgängig

Subversion hält eine lokale Basis-Kopie von jeder Datei in dem Zustand, in dem sie zuletzt in der Arbeitskopie aktualisiert wurde. Wenn Sie Änderungen gemacht haben und diese rückgängig machen wollen, können Sie den Befehl Rückgängig verwenden, um zurück zur Basisversion der Datei zu kommen.

Revision

Jedes Mal, wenn Sie Änderungen übertragen, wird eine neue Revision im Projektarchiv erstellt. Jede Revision stellt den Status des Projektarchivs zu einem bestimmten Zeitpunkt in der Vergangenheit dar. Wenn Sie in der Zeit zurückgehen möchten, können Sie das Projektarchiv so untersuchen, wie es bei Revision N war.

Anders ausgedrückt, bezieht sich eine Revision auf eine Menge von Änderungen, die bei der Erstellung dieser Revision vorgenommen wurden.

Revisionseigenschaft (revprop)

So wie Dateien Eigenschaften haben können, hat auch jede Revision im Projektarchiv Eigenschaften. Einige spezielle Revisionseigenschaften werden automatisch hinzugefügt, wenn die Revision erstellt wird. Diese sind: svn:date, svn:author svn:log die das Übertragungsdatum, die Person, welche die Übertragung gemacht hat, und die Logmeldung darstellen. Diese Eigenschaften können verändert werden, aber sie sind nicht versioniert, sodass jede Änderung permanent ist und nicht rückgängig gemacht werden kann.

SVN

Eine häufig verwendete Abkürzung für Subversion.

Der Name des spezifischen Protokolls, das von svnserve genutzt wird.

Wechseln

So wie Aktualisieren zu Revision den Zeitpunkt der Arbeitskopie ändert, um auf einen anderen Punkt in der Historie zu zeigen, ändert Wechseln zu die Position der Arbeitskopie, sodass sie an einen anderen Ort im Projektarchiv zeigt. Dies ist vor allem nützlich, wenn Sie mit verschiedenen Zweigen arbeiten, in denen nur wenige Dateien unterschiedlich sind. Sie können Ihre Arbeitskopie zwischen den Zweigen hin und her wechseln, wobei jeweils nur die Unterschiede übertragen werden.

Aktualisieren

Dieser Subversion-Befehl holt die neuesten Änderungen aus dem Projektarchiv in Ihre Arbeitskopie und führt dabei die Änderungen von anderen mit Ihren Änderungen zusammen.

Arbeitskopie

Dies ist Ihr lokaler Sandkasten, der Bereich, in dem Sie an versionierten Dateien arbeiten. Er liegt normalerweise auf Ihrer lokalen Festplatte. Sie erzeugen eine Arbeitskopie, indem Sie einen Ordner aus einem Projektarchiv Auschecken und Sie führen Ihre Änderungen mit einem Übertragen in das Projektarchiv zurück.

Stichwortverzeichnis

C

CLI,
COM, ,
COM-Schnittstelle von SubWCRev, COM-Schnittstelle

N

Netzwerkfreigabe, Projektarchiv auf einer Netzwerkfreigabe
Neue Dateien versionieren, Neue Dateien und Ordner hinzufügen
Neuer Server, Eine Arbeitskopie umplatzieren
nicht versionierte Dateien/Ordner, Ignorieren von Dateien und Ordnern

P

patch, Erzeugen und Anwenden von Patches
Platzhalter, Platzhalter in der Ignorierliste
praise, Wer hat welche Zeile geändert?
Priorität der überlagerten Symbole, Überlagerte Symbole
Projektarchiv, Das Projektarchiv, Daten in ein Projektarchiv importieren
Projektarchiv anlegen, Projektarchiv erstellen
Projektarchiv URL geändert, Eine Arbeitskopie umplatzieren
Projektarchivbetrachter, Projektarchivbetrachter, Integration mit webbasierten Projektarchivbetrachtern
Projekte beobachten,
Projekteigenschaften, TortoiseSVN-Projekteigenschaften
Projektmonitor,
Protokoll der Datenintegration, Datenintegration protokollieren
Proxyserver, Netzwerk-Einstellungen

R

Rechts-Ziehen, Ziehen und Ablegen
Rechtschreibprüfung, Rechtschreibprüfung
Rechtsklick, Kontextmenüs
Registrierung, Erweiterte Einstellungen
Revision, Revisionen, Revisionsgraphen
Revisionen vergleichen, Ordner vergleichen
Revisionseigenschaften, Ändern der Logmeldung und des Autors
Revisionsgraph, Revisionsgraphen
Revisionsnummern im Quelltext,
revprops, Ändern der Logmeldung und des Autors
Rückgängig, Änderungen rückgängig machen, Revisionen im Projektarchiv rückgängig machen

S

Schlüsselwörter, svn:keywords
Schlüsselwörter expandieren, svn:keywords
schreibgeschützt, Sperren
Server umgezogen, Eine Arbeitskopie umplatzieren
Serverbetrachter, Projektarchivbetrachter
Serverseitige Aktionen, Projektarchivbetrachter
Serverseitige Aktionsskripte, Serverseitige Aktionsskripte
sounds, Allgemeine Einstellungen
spärlich ausgecheckt, Eine Arbeitskopie auschecken
sperren, Sperren
spezielle Dateien, Spezielle Dateien
Sprachpakete, Sprachpakete
Standard-Diff, Erzeugen und Anwenden von Patches
Statistiken, Statistiken anzeigen
Status, Statusinformationen anzeigen, Prüfe auf Änderungen
Status der Arbeitskopie, Statusinformationen anzeigen
SUBST-Laufwerke, Überlagerte Symbole
Subversion-Buch,
Subversion-Eigenschaften, Subversion-Eigenschaften
SubWCRev,
SVN_ASP_DOT_NET_HACK, Die Umgebungsvariable SVN_ASP_DOT_NET_HACK setzen
switch, Auschecken oder Wechseln...
Symbole, Überlagerte Symbole, Überlagerte Symbole

T

teilweise ausgecheckt, Eine Arbeitskopie auschecken
temporäre Dateien, Import
TortoiseIDiff, Bilder mit TortoiseIDiff vergleichen
TortoiseSVN-Eigenschaften, TortoiseSVN-Projekteigenschaften
TortoiseSVN-Verweis, Auschecken aus Webseiten

Z

Ziehen und Ablegen, Ziehen und Ablegen
Zugriff, Lokaler Zugriff auf das Projektarchiv
zurückstellen, Zurückstellen