Looking for svn Keywords? Try Ask4Keywords

svnErste Schritte mit svn


Bemerkungen

Apache Subversion (SVN) ist ein universelles und zentralisiertes Versionskontrollsystem für Open Source. Subversion ist derzeit ein Projekt unter der Apache Software Foundation (ASF) und ist unter der Apache License, Version 2.0 lizenziert.

Subversion dient zum Verwalten und Steuern von Dateien und Verzeichnissen und zum Nachverfolgen der an ihnen vorgenommenen Änderungen. Es ist ein zuverlässiges Zeitmaschinen- und Verwaltungswerkzeug für die gemeinsam entwickelten Projekte. Es kann problemlos die Standardfragen beantworten, die jedes Versionskontrollsystem zuverlässig beantworten muss. Zum Beispiel,

  • Wie sah das Projekt / die Datei FOO am 12.12.2012 aus?
  • Welche Änderungen wurden von USERNAME oder am 20/12/2012 eingeführt?
  • Wer hat die betreffende Zeichenfolge seit der letzten Überprüfung geändert?
  • und sehr viel mehr.

Versionen

Ausführung Was gibt's Neues? Veröffentlichungsdatum
1.9.x Zahlreiche Verbesserungen der Benutzerfreundlichkeit und Leistung 2015-08-05
1.8.x Verbesserte Umbenennungsverfolgung, automatische Zusammenführung der Wiedereingliederung, vererbte versionierte Eigenschaften, integriertes Tool zur Konfliktlösung 2013-06-18
1.7.x Komplettes Umschreiben der Arbeitskopienbibliothek, verbesserte Verwendung des HTTP-Protokolls 2011-10-11
1.6.x Erkennung von Baumkonflikten, verbesserte interaktive Konfliktlösung, Unterstützung für repo-relative URLs 2009-03-20
1.5.x svn:mergeinfo und Branch-Tracking ( svn:mergeinfo ), interaktive Konfliktlösung für Dateien, spärliche Checkouts, verbesserte svn:externals Syntax 2008-06-19
1.4.x svnsync Tool für die Repository-Replikation, neue und verbesserte Bibliothek für Arbeitskopien 2006-09-10
1.3.x High-Level-Protokollierung von Benutzeroperationen auf der Serverseite, Leistungsverbesserungen 2005-12-30
1.2.x Unterstützung für das Lock-Modify-Unlock-Modell (dh Sperren), DAV-Autoversionierung, FSFS wird standardmäßig für neue Repositorys verwendet 2005-05-21
1.1.x Neues Repository-Backend (FSFS), Symlink-Versionierung 2004-09-29
1,0.x Erstveröffentlichung 2004-02-23

Apache Subversion 1.9.x ist derzeit die neueste und beste SVN-Version, die vollständig unterstützt wird. Subversion 1.8.x wird teilweise unterstützt. Subversion 1.7.x und frühere Versionen werden nicht mehr unterstützt.

Installation und Ersteinrichtung

Installieren Sie den svn Client, um die Zusammenarbeit an dem Projekt zu starten, das Subversion als Versionskontrollsystem verwendet.

Um Subversion zu installieren, können Sie es selbst aus einem Quellcode-Release erstellen oder ein für Ihr Betriebssystem vorinstalliertes Binärpaket herunterladen. Die Liste der Standorte, an denen Sie einen kompilierten Subversion-Client ( svn ) für verschiedene Betriebssysteme erhalten können, ist auf der offiziellen Seite für Binärpakete verfügbar . Wenn Sie die Software selbst kompilieren möchten, können Sie die Quelle auf der Seite Quellcode herunterladen .

Mit Subversion können Sie nicht nur den standardmäßigen svn Befehlszeilenclient verwenden. Es gibt einige bemerkenswerte grafische Subversion-Clients für verschiedene Betriebssysteme, und die meisten IDEs bieten heutzutage eine robuste Integration mit SVN direkt oder über Plugins. Die Liste der grafischen Clients finden Sie auf der Wikipedia-Seite: https://en.wikipedia.org/wiki/Comparison_of_Subversion_clients .

Gleich nach der Installation des Clients sollten Sie ihn mit dem Befehl svn ausführen können. Sie sollten Folgendes sehen:

$ svn
Type 'svn help' for usage.
 

Alles ist meistens fertig. Erstellen Sie nun einen lokalen Arbeitsbereich, eine Arbeitskopie , die mit dem zentralen Remote- Repository verbunden wird . Mit anderen Worten, Sie werden eine Arbeitskopie auschecken . Sie werden mit den versioniert Daten mit Hilfe der Arbeitskopie betreiben und Ihre Änderungen veröffentlichen können ( so genannte in SVN zu begehen) , so dass andere auf dem gleichen Projekt arbeiten , können sie und profitieren Sie von Ihrer Änderungen sehen. Um später die zukünftigen Änderungen aus dem Repository abzurufen, aktualisieren Sie Ihre Arbeitskopie . Diese grundlegenden Operationen werden in anderen Beispielen behandelt.

Eine Arbeitskopie auschecken

Um Änderungen an den Daten des Projekts vornehmen zu können, müssen Sie eine lokale Kopie des versionierten Projekts anfordern. Verwenden Sie die Befehlszeilen- svn Client oder Ihren bevorzugten SVN-Client (z. B. TortoiseSVN). Ihre lokale Kopie des Projekts wird in Subversion als Arbeitskopie bezeichnet. Sie erhalten sie, indem Sie den Befehl svn checkout <URL> ausgeben, wobei <URL> eine Repository-URL ist. z.B

$ svn checkout https://svn.example.com/svn/MyRepo/MyProject/trunk
 

Alternativ können Sie svn co <URL> als Abkürzung verwenden, um eine lokale Kopie zu überprüfen.

Als Ergebnis erhalten Sie eine Arbeitskopie des /trunk eines Projekts namens MyProject, das sich im MyRepo-Repository befindet. Die Arbeitskopie befindet sich in einem Verzeichnis, das als trunk auf Ihrem Computer bezeichnet wird, relativ zu dem Verzeichnis, in dem Sie den Befehl ausgegeben haben.

Wenn Sie einen anderen Namen für Ihre Arbeitskopie haben möchten, können Sie diesen als Parameter am Ende des Befehls hinzufügen. z.B

$ svn checkout https://svn.example.com/svn/MyRepo/MyProject/trunk MyProjectSource
 

Dadurch wird eine Arbeitskopie mit dem Namen MyProjectSource .

Beachten Sie, dass Sie anstelle des Trunks einen Zweig, ein privates Regal oder ein Tag auschecken könnten (vorausgesetzt, diese sind bereits im Repository vorhanden). Sie können beliebig viele lokale Arbeitskopien auf Ihrem Computer haben.

Sie können auch die Arbeitskopie des gesamten Repository MyRepo erhalten. Aber du solltest davon Abstand nehmen. Im Allgemeinen brauchen Sie nicht eine Arbeitskopie des gesamten Repository für Ihre Arbeit haben , weil Ihre Arbeitskopie auf einem anderen Entwicklungszweig / Tag / was auch immer sofort geschaltet werden kann. Darüber hinaus kann das Subversion-Repository eine Reihe von (nicht) verwandten Projekten enthalten, und es ist besser, eine dedizierte Arbeitskopie für jedes von ihnen zu haben, nicht eine einzelne Arbeitskopie für alle Projekte.

Auschecken einer Arbeitskopie bei einer bestimmten Revision

Um Version 5394 zu erhalten, verwenden Sie:

svn co --revision r5394 https://svn.example.com/svn/MyRepo/MyProject/trunk
 

Oder die kürzere Version:

svn co -r 5394 https://svn.example.com/svn/MyRepo/MyProject/trunk
 

Oder mit Pegging-Versionen:

svn co https://svn.example.com/svn/MyRepo/MyProject/trunk@5394
 

Wenn bereits ausgecheckt, können Sie den Befehl update , um eine bestimmte Revision zu verschieben, indem Sie Folgendes tun:

svn up -rXXX
 

Übernehmen Sie Ihre lokalen Änderungen in das Repository

Führen Sie den Befehl svn commit , um die in Ihrer Arbeitskopie vorgenommenen Änderungen zu veröffentlichen.

WICHTIG: Überprüfen Sie Ihre Änderungen, bevor Sie sie festlegen! Verwenden Sie svn status und svn diff , um die Änderungen zu überprüfen. Stellen Sie außerdem sicher, dass Sie sich im richtigen Pfad befinden, bevor Sie ein Commit durchführen. Wenn Sie viele Dateien in verschiedenen Verzeichnissen aktualisiert haben, sollten Sie sich auf der geeigneten Ebene befinden, um alle Dateien unter Ihrem Speicherort zu speichern.

Hier ist ein Beispiel für den Commit-Befehl:

svn commit -m "My Descriptive Log Message"
 

Alternativ ist svn ci die Abkürzung für svn commit

Beachten Sie die Option -m (--message) . Gute Commit-Nachrichten helfen anderen, zu verstehen, warum ein Commit gemacht wurde. Auf der Serverseite ist es auch möglich , nicht leere Nachrichten zu erzwingen und sogar zu erzwingen, dass jede Commit-Nachricht ein vorhandenes Ticket in Ihrem Fehlerverfolgungssystem enthält.

Patches erstellen und anwenden

Ein Patch ist eine Datei, die die Unterschiede zwischen zwei Revisionen oder zwischen Ihrem lokalen Repository und der letzten Revision zeigt, auf die Ihr Repository zeigt.

Führen Sie die folgenden Schritte aus, um einen Patch Ihrer lokalen nicht festgeschriebenen Änderungen freizugeben oder zu speichern, um ihn zu überprüfen oder später anzuwenden:

svn diff > new-feature.patch
 

So erhalten Sie einen Patch aus den Unterschieden zwischen zwei Versionen:

svn diff -r NEWER_REVISION:OLDER_REVISION > feature.patch
 

Um einen Patch anzuwenden, führen Sie Folgendes aus:

svn patch new-feature.patch
 

Um den Patch erfolgreich anwenden zu können, müssen Sie den Befehl unter demselben Pfad ausführen, in dem der Patch erstellt wurde.

Exportieren der versionierten Daten (einfacher Download)

Wenn Sie die Daten des versionierten Projekts abrufen möchten, aber keine der von Subversion angebotenen Funktionen zur Versionskontrolle benötigen, können Sie den Befehl svn export <URL> ausführen. Hier ist ein Beispiel:

$ svn export https://svn.example.com/svn/MyRepo/MyProject/trunk
 

Als Ergebnis erhalten Sie den Datenexport des Projekts. Anders als bei einer Arbeitskopie können Sie jedoch keine svn Befehle darauf ausführen. Der Export ist nur ein einfacher Download der Daten.

Wenn Sie die heruntergeladenen Daten später in eine funktionsfähige Arbeitskopie konvertieren möchten, führen Sie svn checkout <URL> in das Verzeichnis aus, in das Sie den Export ausgeführt haben.

Änderungen an Ihrer lokalen Arbeitskopie vornehmen

Die Arbeitskopie (WC) ist Ihr lokaler und privater Arbeitsbereich , den Sie für die Interaktion mit dem zentralen Subversion-Repository verwenden. Sie verwenden die Arbeitskopie, um den Inhalt Ihres Projekts zu ändern und von anderen vorgenommene Änderungen abzurufen.

Die Arbeitskopie enthält die Daten Ihres Projekts und wirkt wie ein normales Verzeichnis in Ihrem lokalen Dateisystem. Die Arbeitskopie verfolgt jedoch den Status und die Änderungen der darin enthaltenen Dateien und Verzeichnisse. Sie können sich die Arbeitskopie als ein .svn Verzeichnis .svn dessen Versionskontrollvariable durch ein verstecktes .svn Metadatenverzeichnis im Stammverzeichnis hinzugefügt wird.

Meistens nehmen Sie Änderungen an den Projektdaten vor, indem Sie den Inhalt der Arbeitskopie ändern. Sobald Sie mit den Änderungen zufrieden sind und sie gründlich überprüft haben, können Sie sie im zentralen Repository veröffentlichen.

Sie können beliebige Aktionen mit den Daten Ihres Projekts in der Arbeitskopie durchführen. Vorgänge, die das Kopieren, Verschieben, Umbenennen und Löschen umfassen, müssen jedoch mit den entsprechenden svn Befehlen ausgeführt werden:

  • Vorhandene Dateien ändern . Ändern Sie die Dateien wie gewohnt mit Ihrem bevorzugten Textverarbeitungsprogramm, Grafikeditor, Audiobearbeitungsprogramm, IDE usw. Sobald Sie die Änderungen auf der Festplatte speichern, erkennt Subversion sie automatisch.

  • Neue Dateien hinzufügen Legen Sie neue Dateien in die Arbeitskopie und Subversion erkennt sie als nicht versioniert . Die neuen Dateien werden nur dann automatisch svn add wenn Sie den Befehl svn add ausführen:

    svn add foo.cs
     
  • Dateien und Verzeichnisse verschieben Verschieben Sie Dateien und Verzeichnisse mit dem Befehl svn move :

    svn move foo.cs bar.cs
     
  • Dateien und Verzeichnisse umbenennen . Benennen Sie Dateien und Verzeichnisse mit dem Befehl svn rename um:

    svn rename foo.cs bar.cs
     

    HINWEIS: Der Befehl svn rename ist ein Alias ​​für svn move Befehl svn move .

  • Dateien und Verzeichnisse kopieren . Kopieren Sie Dateien und Verzeichnisse mit dem Befehl svn copy :

    svn copy foo.cs bar.cs
     
  • Dateien und Verzeichnisse löschen Löschen Sie Dateien und Verzeichnisse mit dem Befehl svn delete :

    svn delete foo.cs
     
  • Überprüfen des Status von Dateien und Verzeichnissen in der Arbeitskopie . Überprüfen Sie Ihre Änderungen mit dem Befehl svn status (oder kurz svn st ):

    svn status
     

    WICHTIG: Überprüfen Sie Ihre Änderungen immer, bevor Sie sie festlegen. So vermeiden Sie unnötige oder irrelevante Änderungen.

  • Änderungen rückgängig machen Setzen Sie Ihre Änderungen mit dem Befehl svn revert :

    svn revert foo.c
     
  • Alle Änderungen rückgängig machen : Vom Stamm des Repositorys:

    svn revert -R .
     

    WICHTIG: Wiederhergestellte nicht festgeschriebene Änderungen gehen für immer verloren. Sie können die zurückgegebenen Änderungen nicht wiederherstellen. Verwenden Sie svn revert mit Vorsicht! Wenn Sie die Änderungen beibehalten möchten, aber zurücksetzen müssen, speichern Sie sie in einem Patch. Siehe Beispiel zum Erstellen und Anwenden eines Patches.

Wiederherstellen oder Zurücksetzen einer Datei

Um eine Datei auf die neueste aktualisierte svn-Version zurückzusetzen, dh die lokalen Änderungen rückgängig zu machen, können Sie revert :

svn revert file
 

Um eine Datei auf eine ältere Version (Revision XXX) zurückzusetzen, verwenden Sie das update :

svn update -r XXX file
 

Achtung : In beiden Fällen gehen lokale Änderungen in der Datei verloren, da diese überschrieben werden.


Um nur die ältere Version einer Datei anzuzeigen, verwenden Sie cat :

svn cat -r XXX file
 

Und um die Unterschiede zu Ihrer lokalen Version der Datei anzuzeigen:

svn diff -r XXX file
 

Überprüfen der Protokolle

Beim Ausführen von svn log werden Ihnen alle Commit-Nachrichten angezeigt. Sie möchten wahrscheinlich nur bestimmte Revisionen überprüfen.

  • Sehen Sie sich die n neuesten Versionen an:

    svn log -n

  • Eine bestimmte Revision anzeigen:

    svn log -c rXXX

  • Betrachte die betroffenen Pfade:

    svn log -v -c rXXX

Aktualisieren einer Arbeitskopie

Sie sind nicht die einzige Person, die an dem Projekt arbeitet, richtig? Dies bedeutet, dass Ihre Kollegen auch Änderungen an den Projektdaten vornehmen. Um auf dem neuesten Stand zu bleiben und die von anderen vorgenommenen Änderungen abzurufen, sollten Sie den Befehl svn update in Ihrer Arbeitskopie ausführen. Als Ergebnis wird Ihre Arbeitskopie mit dem Repository synchronisiert und die von Ihren Kollegen vorgenommenen Änderungen heruntergeladen.

Abkürzung für svn update ist svn up .

Es ist eine Regel, dass Sie svn update ausführen, bevor Sie Ihre Änderungen übernehmen.

Verwenden eines kennwortgeschützten Repository

Ein Subversion-Repository kann so konfiguriert werden, dass bestimmte Inhalte oder Befehle nur bestimmten Benutzern zugänglich sind. Um auf diesen eingeschränkten Inhalt zugreifen zu können, müssen Sie einen Benutzernamen und ein Kennwort angeben.

Ihr Benutzername und Ihr Passwort können Sie direkt als Teil des Befehls angeben:

$ svn checkout https://svn.example.com/MyRepo/trunk --username JoeUser --password topsecret
 

Leider wird Ihr Kennwort auf der Konsole im Klartext angezeigt. Um dieses mögliche Sicherheitsproblem zu vermeiden, geben Sie einen Benutzernamen, aber kein Passwort an. Wenn Sie dies tun, wird eine Kennwortaufforderung angezeigt, in der Sie Ihr Kennwort eingeben können, ohne es preiszugeben.

$ svn checkout https://svn.example.com/MyRepo/trunk --username JoeUser
Password for 'JoeUser':
 

Wenn Sie keine Authentifizierungsinformationen angeben, werden Sie von Subversion aufgefordert, sowohl den Benutzernamen als auch das Kennwort einzugeben:

$ svn checkout https://svn.example.com/MyRepo/trunk
Username:  JoeUser
Password for 'JoeUser':
 

Die erste Methode ist zwar weniger sicher, wird jedoch häufig in automatisierten Skripts angezeigt, da es für viele Arten von Skripts schwierig ist, Informationen für eine interaktive Eingabeaufforderung bereitzustellen.

Hinweis : Für Befehle, die nur für Ihre Arbeitskopie gelten (z. B. " revert oder " status ), ist niemals ein Kennwort erforderlich, sondern nur Befehle, die die Kommunikation mit dem Repository-Server erfordern.