Zum Inhalt springen

„Apache Subversion“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
zurück auf Peu 11:37, 3. Nov. 2008 (52559583)
Veröffentlichungen: +Baustein Veraltet
 
(350 dazwischenliegende Versionen von mehr als 100 Benutzern, die nicht angezeigt werden)
Zeile 1: Zeile 1:
{{Infobox Software
{{Infobox Software
| Name = <!-- Nur falls abweichend vom Artikelnamen -->
| Name = Subversion
| Logo = [[Bild:Subversion logo.png|234px|Subversion-Logo]]
| Logo = [[Datei:Subversion logo.svg|234px|Subversion-Logo]]
| Screenshot =
| Hersteller = [[CollabNet]]
| Beschreibung =
| AktuelleVersion = 1.5.4
| Maintainer =
| AktuelleVersionFreigabeDatum = 24.&nbsp;Oktober 2008
| Hersteller = [[CollabNet]], [[Apache Software Foundation]]
| Betriebssystem = [[AIX]], [[Linux|GNU/Linux]], [[Microsoft Windows|Windows]], [[Mac OS X]], *[[Berkeley Software Distribution|BSD]], [[Solaris (Betriebssystem)|Solaris]], [[OS/400]]
| Erscheinungsjahr = 2000
| Kategorie = [[Versionsverwaltung]]
| AktuelleVersion = <!-- Wikidata -->
| Lizenz = Subversion License (ähnlich [[Apache-Lizenz|Apache]]/[[BSD-Lizenz|BSD]])
| AktuelleVersionFreigabeDatum = <!-- Wikidata -->
| Deutsch = Nach Installation eines Sprachpaketes
| AktuelleVorabVersion = <!-- Wikidata -->
| Website = [http://subversion.tigris.org/ subversion.tigris.org]
| AktuelleVorabVersionFreigabeDatum = <!-- Wikidata -->
| Betriebssystem = <!-- Wikidata -->
| Programmiersprache = <!-- Wikidata -->
| Kategorie = [[Versionsverwaltung]]
| Lizenz = <!-- Wikidata -->
| Deutsch = ja<ref>falls bei der Erstellung des Installationspaketes die Internationalisierung berücksichtigt wurde, wie dies zum Beispiel bei [https://alagazam.net/ alagazam.net] der Fall ist. Die Ausgabesprache wird anhand der Systemvariablen <code>LC_ALL</code> automatisch bestimmt; alle Meldungen erscheinen auf Deutsch, falls (Beispiel für Windows:) <code>LC_ALL = de_DE.CP1252</code> gesetzt ist. Pakete zur späteren Nachinstallation einer Sprache stehen beim Kommandozeilenclient nicht zur Verfügung. Diese Situation ist nicht zu verwechseln mit zu Subversion passenden graphischen Oberflächen wie [[TortoiseSVN]], wo deutschsprachige Meldungen erst nach Installation eines Sprachpaketes zur Verfügung stehen.</ref>
| Website = <!-- Wikidata -->
}}
}}
[[Datei:SVNvsGITServer 1.png|mini|Zentrale Verwaltung eines Repositoriums mit Hilfe von Subversion.]]
'''Subversion (SVN)''' ist eine [[Open Source|Open-Source]]-[[Software]] zur [[Versionsverwaltung]] von Dateien und Verzeichnissen.


'''Apache Subversion''' ('''SVN''') ist eine [[freie Software]] zur [[Versionsverwaltung#Zentrale Versionsverwaltung|zentralen Versionsverwaltung]] von Dateien und Verzeichnissen.
Die Versionierung erfolgt in einem zentralen [[Repository|Projektarchiv]] (engl. ''repository'') in Form einer einfachen Revisionszählung. Wenn Änderungen an Inhalten verteilt auf den Computern der Bearbeiter ausgeführt werden, werden zwischen dem Projektarchiv und einem Arbeitsplatz jeweils nur die Unterschiede zu bereits vorhandenen Ständen übertragen; anfangs das gesamte Projekt, später nur Änderungen.

Die Versionierung erfolgt in einem zentralen [[Repositorium|Repositorium bzw. Projektarchiv]] (engl. ''repository'') in Form einer einfachen Revisionszählung. Wenn Änderungen an Inhalten verteilt auf den Computern der Bearbeiter ausgeführt werden, werden zwischen dem Projektarchiv und einem Arbeitsplatz jeweils nur die Unterschiede zu bereits vorhandenen Ständen übertragen.


== Allgemeines ==
== Allgemeines ==
Subversion wird als [[freie Software]] unter einer Lizenz im Stil der [[Apache-Lizenz]] veröffentlicht.


Die Benennung „Subversion“ setzt sich aus den Worten ''Sub'' und ''Version'' zusammen und kann so als ''Unterversion, frühere Version'' verstanden werden. Der Name wurde von Jim Blandy geprägt, der auch das initiale Design des Subversion-Speichers definierte. Er verstand die Software als eine Weiterentwicklung von [[Concurrent Versions System|CVS]], wobei als Reaktion auf weit verbreitete Kritik an CVS insbesondere die Handhabung von Versionshistorien geändert wurde.<ref>[http://svnbook.red-bean.com/en/1.7/svn-book.html Subversion Buch] Subversion’s History</ref> So ist es mit Subversion – im Gegensatz zu CVS – z.&nbsp;B. möglich, Dateien oder Verzeichnisse zu verschieben oder umzubenennen, ohne die Versionsgeschichte zu verlieren. Details finden sich im Abschnitt [[#Unterschiede zu CVS|Unterschiede zu CVS]]. In der Bedienung der Kommandozeilenversion ist es dagegen sehr ähnlich gehalten.
Subversion wird als [[Freie Software]] unter einer Lizenz im Stil der [[Apache-Lizenz]] veröffentlicht.


Mit <code>cvs2svn</code> gibt es einen [[Konvertierung (Informatik)|Konverter]], mit dem ein CVS-[[Repository|Repositorium]] zu Subversion konvertiert werden kann. Auch für die Migration von anderen Versionsverwaltungs-Systemen (etwa PVCS, [[Microsoft Visual SourceSafe|Visual Source Safe]], [[Rational ClearCase|ClearCase]], MKS, [[Perforce]], [[StarTeam]],&nbsp;…) sind verschiedene kostenfreie Import-Werkzeuge erhältlich.
Die Benennung „Subversion“ verweist einerseits auf den politisch-soziologischen Begriff der [[Subversion]] und greift andererseits die Bedeutung von ''sub version'' im Sinne von ''Unterversion, früherer Version'' auf.


== Geschichte ==
Subversion wurde als moderne Ablösung für das mit vielen Schwächen behaftete, in Entwicklerkreisen aber weiterhin sehr verbreitete Programm [[Concurrent Versions System|CVS]] entwickelt. Deshalb ist es in der Bedienung sehr ähnlich gehalten, behebt aber einige Schwächen von CVS. So ist es mit Subversion z.&nbsp;B. möglich, Dateien oder Verzeichnisse zu verschieben oder umzubenennen, ohne die Versionsgeschichte zu verlieren. Dies wird im Abschnitt [[#Unterschiede zu CVS|Unterschiede zu CVS]] vertieft.
Subversion wurde seit Anfang 2000 bei [[CollabNet]] entwickelt.


Am 4.&nbsp;November 2009 gaben ehemaliger und neuer [[Webhosting|Hoster]] in einer gemeinsamen Presseerklärung bekannt, dass das Projekt auf Entschluss von CollabNet zur [[Apache Software Foundation]] wechseln werde.<ref>{{Internetquelle |url=https://www.apache.org/foundation/press/pr_2009_11_04.html |titel=Celebrating a Decade of Open Source Leadership |abruf=2020-08-20}}</ref> Am 7.&nbsp;November 2009 startete Apache Subversion im [[Apache Incubator]], seit 17.&nbsp;Februar 2010 ist Apache Subversion ein Top-Level-Apache-Projekt.
Mit cvs2svn existiert ein [[Konvertierung (Informatik)|Konverter]], mit dem ein CVS-[[Repository]] zu Subversion konvertiert werden kann. Auch für die Migration von anderen Versionsverwaltungs-Systemen (etwa PVCS, [[Microsoft Visual SourceSafe|Visual Source Safe]], [[Rational ClearCase|ClearCase]], MKS, Perforce, [[StarTeam]],&nbsp;…) sind verschiedene kostenfreie Import-Werkzeuge erhältlich.


== Geschichte ==
== Veröffentlichungen ==
{{Veraltet | dieses Abschnitts | Versionsreleases seit 1.14.4 fehlen. | seit=2024-10-00}}
{| class="wikitable"
|-
! Version !! Erscheinungsdatum !! Bemerkungen
|-
| {{Version |o |-}}
| 5. Juni 2000
| [[Concurrent Versions System|CVS]]-Repositorium zur gemeinsamen Entwicklung eingerichtet.
|-
| {{Version |o |0.9}}
| 15. Februar 2002
| Große Fortschritte beim Repositoriums-Konverter <code>cvs2svn</code>, Kommando <code>svn switch</code> eingeführt, Quelltext reorganisiert und aufgeräumt, Build-System erneuert.
|-
| {{Version |o |0.14.0}}
| 23. Juli 2002
| Erste Alpha-Version veröffentlicht.
|-
| {{Version |o |0.35.1}}
| 19. Dezember 2003
| Erste Beta-Version veröffentlicht.
|-


| {{Version |o |1.0}} || 23.&nbsp;Februar 2004 ||Version 1.0 fertiggestellt.
Subversion wird seit Anfang 2000 bei [[CollabNet]] entwickelt und erreichte am 23. Februar 2004 die stabile Version 1.0. Am 29. September 2004 erschien Version 1.1, deren größte Neuerung war, dass [[Projektarchiv|Projektarchiv]]e (Repositories) nicht mehr nur in einer [[Berkeley DB|Berkeley-Datenbank]] verwaltet werden können, sondern dass dazu auch direkt das Dateisystem benutzt werden kann. Außerdem wurden internationalisierte Programmausgaben ermöglicht. Die am 23. Mai 2005 erschienene Version 1.2 unterstützt nun auch optionale Bearbeitungssperren für Dateien, was teilweise für binäre Dateien von Vorteil sein kann. Seit dem 1. Januar 2006 existiert die Version 1.3, die in den Bereichen Server-Logging, [[Autorisierung]], [[Programmierschnittstelle|Programmiersprachen-Anbindungen]], [[Parameter (Informatik)#Befehlszeilenparameter|Kommando-Optionen]] und Leistung („[[Leistung (Informatik)|Performance]]“) Verbesserungen bietet. Am 10. September 2006 wurde Version 1.4 veröffentlicht, sie bringt das Programm ''svnsync'' mit, welches das Spiegeln von Projektarchiven (Repositories) ermöglicht.
|-
| {{Version |o |1.1}} || 29.&nbsp;September 2004 || [[Projektarchiv]]e (Repositorien) können nicht mehr nur in einer [[Berkeley DB|Berkeley-Datenbank]] verwaltet werden, sondern auch direkt im Dateisystem. Internationalisierte Programmausgaben.
|-
| {{Version |o |1.2}} || 21.&nbsp;Mai 2005 || Bearbeitungssperren für Dateien, was für binäre Dateien von Vorteil sein kann.
|-
| {{Version |o |1.3}} || 30.&nbsp;Dezember 2005 || Verbesserungen in den Bereichen Server-Logging, [[Autorisierung]], [[Programmierschnittstelle|Programmiersprachen-Anbindungen]], [[Parameter (Informatik)#Befehlszeilenparameter|Kommando-Optionen]] und [[Rechenleistung|Performance]].
|-
| {{Version |o |1.4}} || 10.&nbsp;September 2006 || Neues Programm <code>svnsync</code>, welches das Spiegeln von Projektarchiven (Repositorien) ermöglicht.
|-
| {{Version |o |1.5}} || 19.&nbsp;Juni 2008 || Neue Funktionalität ''Merge-Tracking'', das dokumentierte Zusammenführen verschiedener Teilbäume.
|-
| {{Version |o |1.6}} || 20.&nbsp;März 2009 || Verbesserungen des Merge-Tracking und der Sicherheitsfunktionen.
|-
| {{Version |o |1.7}} || 11.&nbsp;Oktober 2011 || Änderung der Metadatenverwaltung: Anstatt Metadaten in <code>.svn</code>-Ordnern in jedem Unterverzeichnis zu speichern, werden diese jetzt zentral in einem einzigen <code>.svn</code>-Ordner im Hauptverzeichnis der Arbeitskopie in einer [[SQLite]]-Datenbank gespeichert.
|-


| {{Version |o |1.8}} || 18.&nbsp;Juni 2013 || Lokales (''Working copy'') Verschieben/Umbenennen von Dateien wird transparent unterstützt, Vereinfachungen des Re-Integrierens von Teilbäumen, vererbte Eigenschaften und Einstellungen direkt im Projektarchiv.
== Unterschiede zu CVS ==
|-
| {{Version |o |1.8.18}}
| 7.&nbsp;Juli 2017
| Kleinere Fehlerbehebungen, unter anderem für mögliche [[Secure Hash Algorithm|SHA1]]-Kollisionen<ref>{{Internetquelle|url=http://svn.apache.org/repos/asf/subversion/tags/1.8.18/CHANGES|titel=Apache Subversion Change Log Version 1.8.18|autor=|hrsg=Apache Software Foundation|werk=|datum=2017-07-10|sprache=en|zugriff=2017-08-08}}</ref><ref>{{Internetquelle|url=https://svn.haxx.se/dev/archive-2017-07/0054.shtml|titel=Release Announcement for Apache Subversion 1.8.18|titelerg=Subversion Dev: [ANNOUNCE] Apache Subversion 1.8.18 released|autor=Stefan Sperling|hrsg=Apache Software Foundation|werk=|datum=|sprache=en|zugriff=2017-08-08}}</ref>
|-
| {{Version |o |1.8.19}}
| 10.&nbsp;August 2017
| Sicherheitsupdate um Client-seitige Ausführung von beliebigem Code zu verhindern (CVE-2017-9800).<ref>{{Internetquelle|url=http://svn.apache.org/repos/asf/subversion/tags/1.8.19/CHANGES|titel=Apache Subversion Change Log Version 1.8.19|autor=|hrsg=Apache Software Foundation|werk=|datum=2017-08-10|sprache=en|zugriff=2017-11-20}}</ref><ref>{{Internetquelle|url=http://mail-archives.apache.org/mod_mbox/subversion-announce/201708.mbox/%3C8760dvl2j6.fsf%40codematters.co.uk%3E|titel=Release Announcement for Apache Subversion 1.8.19|titelerg=[SECURITY][ANNOUNCE] Apache Subversion 1.8.19 released|autor=Philip Martin|hrsg=Apache Software Foundation|werk=|datum=2017-08-10|sprache=en|zugriff=2017-11-20}}</ref>
|-


| {{Version |o |1.9}} || 5.&nbsp;August 2015 || Neues, verbessertes ''FSFS''-Dateiformat Version 7, neues Tool <code>svnfsfs</code>, experimentelles ''FSX''-Dateiformat, neues <code>svn</code>-Unterkommando <code>auth</code>, Server-seitige Performance-Verbesserungen, Erweiterung der Tools <code>svnadmin</code> und <code>svnbench</code>, 3-Wege-Konflikt- und <code>diff3</code>-Verbesserungen, vorausschauendes <code>blame</code>.
Der entscheidende Unterschied zwischen CVS und SVN liegt in der Rangfolge von örtlicher (L) und zeitlicher (T) Kennzeichnung der Inhalte eines [[Projektarchiv]]s (P): während in CVS primär örtlich, sekundär zeitlich adressiert wird (P:L.T), werden in SVN die Koordinaten umgekehrt (P:T.L). SVN bildet die erfahrungsgemäße Realität von [[Veränderung]]en damit anschaulicher nach: Jede Veränderung benötigt Zeit, und ihre Endpunkte sind das Vorher (Revision vor Änderung) und das Nachher (Revision nach der Änderung). SVN versioniert oder revisioniert also grundsätzlich das gesamte Projektarchiv und damit jeweils die gesamte Verzeichnisstruktur, während CVS auf der unabhängigen Versionierung jedes einzelnen Inhalts beruht.
|-
| {{Version |o |1.9.6}}
| 6.&nbsp;Juli 2017
| Speicherbedarf bei Verwendung großer Mengen an ''Merge''-Metadaten reduziert, einzelne Fehlermeldungen verbessert, Konsistenzprüfung nun unabhängig von Hash-Algorithmen um beispielsweise [[Secure Hash Algorithm|SHA1]]-Kollisionen zu entgehen, weitere kleine Fehlerbehebungen.<ref>{{Internetquelle|url=http://svn.apache.org/repos/asf/subversion/tags/1.9.6/CHANGES|titel=Apache Subversion Change Log Version 1.9.6|autor=|hrsg=Apache Software Foundation|werk=|datum=2017-07-05|sprache=en|zugriff=2017-08-08}}</ref><ref>{{Internetquelle|url=https://mail-archives.apache.org/mod_mbox/subversion-announce/201707.mbox/%3C20170706103910.s2fibubji2orhfcs%40tarpaulin.shahaf.local2%3E|titel=Release Announcement for Apache Subversion 1.9.6|titelerg=[ANNOUNCE] Apache Subversion 1.9.6 released|autor=Daniel Shahaf|hrsg=Apache Software Foundation|werk=|datum=2017-07-06|sprache=en|zugriff=2017-08-08}}</ref>
|-
| {{Version |o |1.9.10}}
| 11.&nbsp;Januar 2019
| Sicherheitsupdate um Client-seitige Ausführung von beliebigem Code zu verhindern (CVE-2017-9800).<ref>{{Internetquelle|url=http://svn.apache.org/repos/asf/subversion/tags/1.9.7/CHANGES|titel=Apache Subversion Change Log Version 1.9.7|autor=|hrsg=Apache Software Foundation|werk=|datum=2017-08-10|sprache=en|zugriff=2017-11-20}}</ref><ref>{{Internetquelle|url=https://mail-archives.apache.org/mod_mbox/subversion-announce/201708.mbox/%3C2fefe468-7d41-11e7-aea1-9312c6089150%40apache.org%3E|titel=Release Announcement for Apache Subversion 1.9.7|titelerg=[SECURITY][ANNOUNCE] Apache Subversion 1.9.7 released|autor=Daniel Shahaf|hrsg=Apache Software Foundation|werk=|datum=2017-08-10|sprache=en|zugriff=2017-11-20}}</ref>
|-


| {{Version |o |1.10.4}}
Das Versionsschema von Subversion bezieht sich nicht mehr auf einzelne Dateien, sondern jeweils auf das ganze Projektarchiv, mit jeder Änderung bekommt es eine neue „Revisionsnummer“ zugeordnet. Somit kann man einfacher – und im Gegensatz zu CVS konsistent – eine exakte Version beschreiben (z.&nbsp;B. „Revision 2841“ statt „Version vom 23. März 2004 20:56:31 UTC“). Die Revisionsnummer einer Datei entspricht dabei der Revisionsnummer des Projektarchivs, als sie das letzte Mal geändert wurde, die Revisionsnummer eines Verzeichnisses entspricht der höchsten Revisionsnummer der enthaltenen Dateien und Verzeichnisse. Die Abfolge der Revisionsnummern einer einzelnen Datei kann also durchaus lückenhaft sein, wenn die Datei nicht bei jeder Änderung ([[Commit]]) am Repository geändert wurde. Beispielsweise könnte eine Datei bei der Revision 25 zum Projektarchiv hinzugefügt worden sein und jeweils einmal in der Revision 48 und der Revision 52 verändert worden sein. Beim Abrufen ("checkout") einer Datei wird die größte Revisionsnummer abgerufen, die kleiner oder gleich der angeforderten ist. Wird in dem Beispiel die Revision 52 angefordert, so wird die Revision 52 der Datei abgerufen; wird hingegen die Revision 51 angefordert, liefert Subversion die Inhalte von Revision 48.
| 11.&nbsp;Januar 2019
| Improved path-based authz, new interactive conflict resolver, LZ4 compression, FSFS format 8, shelving.<ref>{{Internetquelle|url=https://subversion.apache.org/docs/release-notes/1.10.html|titel=Apache Subversion 1.10 Release Notes|autor=|hrsg=Apache Software Foundation|werk=|datum=|sprache=en|zugriff=2019-01-19}}</ref>
|-
| {{Version |o |1.10.8}}
| 12.&nbsp;April 2022
| Letzte Version des 1.10.x-Astes mit [[Long Term Support|Langzeitunterstützung (LTS)]], mit Erscheinen des 1.14.x-LTS-Asts wurde dieser Ast zum aktuellen „Old-Stable“. Die Unterstützung endete am 24. September 2023. Anwender- und entwicklungsseitige Verbesserungen siehe Änderungshistorie.<ref>{{Internetquelle |url=https://svn.apache.org/repos/asf/subversion/tags/1.10.8/CHANGES |titel=CHANGES - Change log from /branches/1.10.x up to Version 1.10.8 with User-visible changes (Client-side bugfixes & Server-side bugfixes) and Developer-visible changes. |hrsg=Apache Software Foundation / The Subversion Team |werk= |datum=2022-04-12 |sprache=en |abruf=2022-05-12}}</ref> Enthält weiterhin Patches gegen CVE-2021-28544 ''SVN authz protected copyfrom paths regression'' und CVE-2022-24070 ''Subversion's mod_dav_svn is vulnerable to memory corruption'', siehe Beschreibung in ''Release Announcement for Apache Subversion 1.10.8'' sowie dort verlinkte Schwachstellenmeldungen.<ref>{{Internetquelle |url=https://lists.apache.org/thread/jtpsygdt39q1nk8p9xwxff9ghxdt52r1
|titel=Release Announcement for Apache Subversion 1.10.8 |titelerg=[SECURITY][ANNOUNCE] Apache Subversion 1.10.8 released |autor=Mark Phippard |hrsg=Apache Software Foundation / The Subversion Team |werk= |datum=2022-04-12 |sprache=en |abruf=2022-05-13}}</ref>
|-


| {{Version |o |1.11.1}}
Subversion speichert Client-seitig beim Abrufen ("checkout"), Aktualisieren ("update") und Ändern ("commit") in einem gesonderten Verzeichnis (<code>.svn</code>) eine zweite Kopie jeder Datei. Dadurch verdoppelt sich der Speicherbedarf einer Arbeitskopie, allerdings bietet dies bei entfernten Projektarchiven auch einige Vorteile. So können einige Aktionen, wie Anzeige der lokalen Änderungen, ganz ohne Netzwerkzugriff erfolgen, und Subversion muss beim "commit" nur die geänderten Teile einer Datei übertragen, während CVS die Änderungen Server-seitig berechnet und somit jeweils die gesamte Datei übertragen muss. Auch ist es möglich, jederzeit die Änderungen einer Datei gegenüber ihrer Basisversion zu ermitteln oder zurückzunehmen, ohne das Projektarchiv zu konsultieren.
| 11.&nbsp;Januar 2019
| Improved shelving, checkpointing, improved tree conflict resolution.<ref>{{Internetquelle |url=https://subversion.apache.org/docs/release-notes/1.11.html |titel=Apache Subversion 1.11 Release Notes |autor= |hrsg=Apache Software Foundation |werk= |datum= |sprache=en |zugriff=2019-01-19}}</ref>
|-


| {{Version |o |1.12.0}}
Änderungen ("[[commit]]s") sind dabei in Subversion [[atomar]], das heißt, eine Änderung wird entweder ganz oder gar nicht ins [[Repository]] gespeichert. Verbindungsabbrüche und mehrere gleichzeitige "commits" können somit nicht zu inkonsistenten Zuständen führen.
| 24.&nbsp;April 2019
| Improved shelving, improved checkpointing, improvements to the interactive conflict resolver.<ref>{{Internetquelle |url=https://subversion.apache.org/docs/release-notes/1.12.html |titel=Apache Subversion 1.12 Release Notes |autor= |hrsg=Apache Software Foundation |werk= |datum= |sprache=en |zugriff=2019-04-26}}</ref>
|-


| {{Version |o |1.13.0}}
=== Kopien ===
| 30.&nbsp;November 2019
| <ref>{{Internetquelle |url=https://subversion.apache.org/docs/release-notes/1.13.html |titel=Apache Subversion 1.13 Release Notes |autor= |hrsg=Apache Software Foundation |werk= |datum= |sprache=en |zugriff=2019-12-11}}</ref>


|-
CVS ist nicht in der Lage, Kopien von Dateien zu verwalten; jede Kopie wird wie eine ganz neue Datei behandelt. Subversion behält bei Kopien die Historie einer Datei. Bei der Erstellung einer Kopie wird dabei keine Duplizierung der Daten vorgenommen, sondern eine datenbankinterne Verknüpfung angelegt, die im weiteren Verlauf genauso weiter verwendet werden kann wie das Original (''„billige Kopie“''). Kopien sind insbesondere beim Umbenennen und Verschieben von Dateien interessant. Subversion realisiert dies zwar wie CVS, indem es eine Kopie anlegt und das Original als gelöscht markiert, allerdings kommt es nicht wie in CVS zu einem Bruch in der Historie. Eine native Unterstützung für das Verschieben/Umbenennen ist auf der Website als mittelfristiges Ziel genannt.<ref>Subversion-Bugtracker: ''[http://subversion.tigris.org/issues/show_bug.cgi?id=898 Issue 898]''</ref>
|{{Version |o |1.14.0}}
|27.&nbsp;Mai 2020
| <ref>{{Internetquelle|url=https://subversion.apache.org/docs/release-notes/1.14 |titel=Apache Subversion 1.14 Release Notes |autor= |hrsg=Apache Software Foundation|werk= |datum= |sprache=en |zugriff=2020-05-28}}</ref>
|-
|{{Version |o |1.14.2}}
|12.&nbsp;April 2022<ref>{{Internetquelle |url=https://svn.apache.org/repos/asf/subversion/tags/1.14.2/CHANGES |titel=CHANGES - Change log from /branches/1.14.x up to Version 1.14.2 with User-visible changes (Client-side bugfixes & Server-side bugfixes) and Developer-visible changes. |hrsg=Apache Software Foundation / The Subversion Team |werk= |datum=2022-04-12 |sprache=en |abruf=2022-05-12}}</ref>
| Vorherige stabile Version des 1.14.x-Astes mit [[Long Term Support|Langzeitunterstützung (LTS)]].
Anwender- und entwicklungsseitige Verbesserungen siehe Änderungshistorie.<ref>{{Internetquelle |url=https://svn.apache.org/repos/asf/subversion/tags/1.14.2/CHANGES |titel=CHANGES - Change log from /branches/1.14.x up to Version 1.14.2 with User-visible changes (Client-side bugfixes & Server-side bugfixes) and Developer-visible changes. |hrsg=Apache Software Foundation / The Subversion Team |werk= |datum=2022-04-12 |sprache=en |abruf=2022-05-12}}</ref>

Enthält weiterhin Patches gegen CVE-2021-28544 ''SVN authz protected copyfrom paths regression'' und CVE-2022-24070 ''Subversion's mod_dav_svn is vulnerable to memory corruption'', siehe Beschreibung in ''Release Announcement for Apache Subversion 1.14.2'' sowie dort verlinkte Schwachstellenmeldungen.<ref>{{Internetquelle |url=https://lists.apache.org/thread/bg8z05826qho57ggbhgk8dcmwv230xzy |titel=Release Announcement for Apache Subversion 1.14.2 |titelerg=[SECURITY][ANNOUNCE] Apache Subversion 1.14.2 released |autor=Mark Phippard |hrsg=Apache Software Foundation / The Subversion Team |werk= |datum=2022-04-12 |sprache=en |abruf=2022-05-13}}</ref>

|-
|{{Version |c |1.14.3}}
|28.&nbsp;Dezember 2023<ref>{{Internetquelle |url=https://svn.apache.org/repos/asf/subversion/branches/1.14.x/STATUS |titel=STATUS - Status of Version 1.14.3: Candidate changes, Veto-blocked changes, and Approved changes |hrsg=Apache Software Foundation / The Subversion Team |werk= |datum=2022-05-12 |sprache=en |abruf=2022-05-12}}</ref>
| Aktuelle geplante stabile Version des 1.14.x-Astes mit [[Long Term Support|Langzeitunterstützung (LTS)]].
|-

|{{Version |cp |1.14.4}}
|28.&nbsp;Dezember 2023<ref>{{Internetquelle |url=https://svn.apache.org/repos/asf/subversion/branches/1.14.x/STATUS |titel=STATUS - Status of Version 1.14.4: Candidate changes, Veto-blocked changes, and Approved changes |hrsg=Apache Software Foundation / The Subversion Team |abruf=2024-03-24}}</ref>
| Nächste geplante stabile Version des 1.14.x-Astes mit [[Long Term Support|Langzeitunterstützung (LTS)]].
Unterstützung für Windows auf ARM64.
|-

|{{Version |p |1.15.0}}
|2024<ref>{{Internetquelle |url=https://svn.apache.org/repos/asf/subversion/trunk/CHANGES |titel=CHANGES - Change log from /branches/1.15.x up to Version 1.15.0 with User-visible changes (Client-side bugfixes & Server-side bugfixes) and Developer-visible changes. |hrsg=Apache Software Foundation / The Subversion Team |werk= |datum=2022-05-12 |sprache=en |abruf=2022-05-12}}</ref>
| Zukünftige stabile Hauptversion (neuer 1.15.x-Ast).
Geplante Client-seitige Verbesserungen: Gleichzeitige Unterstützung mehrerer Arbeitskopieformate in einem Projekt (ab 1.8 bis 1.15). Geschwindigkeitssteigerung.
|-

| colspan="5" | <small>{{Version | l | show=111110}}</small>
|}
<!-- o=Old-Not-Supported; co=Old-Still-Supported; c=Latest-Stable; cp=Preview; p=Planned-Future -->

== Besonderheiten ==
=== Versionsschema ===
Das Versionsschema von Subversion bezieht sich nicht auf einzelne Dateien, sondern auf das ganze Projektarchiv. Dieses bekommt bei jeder Änderung eine neue „Revisionsnummer“ zugeordnet. Somit kann einfach und konsistent eine exakte Version des Projektarchivs beschrieben werden (z.&nbsp;B. „Revision 2841“ statt „Version vom 23. März 2004 20:56:31 UTC“). Die Revisionsnummer einer Datei entspricht dabei der Revisionsnummer des Projektarchivs zum Zeitpunkt der letzten Änderung der Datei. Die Revisionsnummer eines Verzeichnisses entspricht der höchsten Revisionsnummer aller enthaltenen Dateien und Verzeichnisse. Die Abfolge der Revisionsnummern einer einzelnen Datei kann also durchaus lückenhaft sein, wenn die Datei nicht bei jeder Änderung (''[[Commit]]'') am Repositorium geändert wurde. Beispielsweise könnte eine Datei bei der Revision 40 zum Projektarchiv hinzugefügt und jeweils einmal in der Revision 48 und der Revision 52 verändert worden sein. Beim Abrufen (''Checkout'') einer Datei wird die größte Revisionsnummer abgerufen, die kleiner oder gleich der angeforderten ist. Wird in dem Beispiel die Revision 52 angefordert, so wird die Revision 52 der Datei abgerufen; wird hingegen die Revision 51 angefordert, liefert Subversion die Inhalte von Revision 48.

=== Änderungsverfolgung ===
Subversion speichert Client-seitig bei jedem [[Versionsverwaltung#Funktionsweise|Checkout]], [[Softwareaktualisierung|Update]] und [[Commit#Versionsverwaltung|Commit]] einer Datei eine Kopie, welche im <code>.svn</code>-Verzeichnis abgelegt wird. Dadurch verdoppelt sich der Speicherbedarf einer Arbeitskopie, allerdings bietet dies bei entfernten Projektarchiven auch einige Vorteile. So können einige Aktionen, wie Anzeige der lokalen Änderungen, ganz ohne Netzwerkzugriff erfolgen, und Subversion muss beim Übertragen nur die geänderten Teile einer Datei übertragen. Auch ist es möglich, jederzeit die Änderungen einer Datei gegenüber ihrer Basisversion zu ermitteln oder zurückzunehmen, ohne das Projektarchiv zu konsultieren.

==== Export-Kommando ====
Da die im <code>.svn</code>-Ordner enthaltenen Metadaten etwa auf einem Produktivsystem nicht erwünscht sind, gibt es in Subversion das <code>export</code>-Kommando, welches die Dateien ''ohne'' die Metadaten des <code>.svn</code>-Ordners ins Dateisystem schreibt. Dies unterscheidet einen ''Export'' von einem ''Checkout''.

=== Atomare Commits ===
Commits geschehen in Subversion [[Atomare Operation|atomar]], das heißt, eine Änderung – auch mehrerer Dateien – wird entweder ganz oder gar nicht ins [[Repository|Repositorium]] gespeichert. Verbindungsabbrüche und mehrere gleichzeitige Zugriffe können somit nicht zu inkonsistenten Zuständen führen.

=== „Billige Kopien“ ===
Subversion ist in der Lage, Kopien von Dateien so zu verwalten, dass den Kopien derselbe Bearbeitungsverlauf gemeinsam ist. Dieser Umstand ist besonders dann nützlich, wenn Änderungen an einer der Dateien in die andere portiert werden sollen. Zur Erstellung einer Kopie werden die Dateien auch nicht dupliziert, sondern es wird eine Datenbank-interne [[Zeiger (Informatik)|Verknüpfung]] angelegt, die im weiteren Verlauf genauso weiterverwendet werden kann wie das Original. Von dieser Technik wird häufig als ''billige Kopie''<ref>[https://svn.apache.org/repos/asf/subversion/trunk/notes/subversion-design.html#server.fs.struct.bubble-up Erläuterung der Bubble-Up-Methode als Grundlage „billiger Kopien“ in SVN] (englisch)</ref> gesprochen.

=== Umbenennungs- und Verschiebungskonzept ===
Das Kopie-Konzept wird bei der Umbenennung und Verschiebung von Dateien eingesetzt: Subversion realisiert diese, indem es eine Kopie anlegt und das Original als gelöscht markiert, dabei kommt es zu keinem Bruch im Versionsverlauf.

Eine native Unterstützung für Verschiebung und Umbenennung ist auf der Entwicklerseite als mittelfristiges Ziel genannt.<ref>Subversion-Bugtracker: ''{{Webarchiv|url=http://subversion.tigris.org/issues/show_bug.cgi?id=898 |wayback=20021201064344 |text=Issue 898 |archiv-bot=2023-03-07 20:44:33 InternetArchiveBot }}''</ref>


=== Tag- und Branchkonzept ===
=== Tag- und Branchkonzept ===
Neben dem geänderten Datenbank-Modell sticht das zu anderen Versionsverwaltungssystemen völlig unterschiedliche Konzept im Bereich der Benennung von Dateiversionen (sogenanntes ''[[Tag (Informatik)|Tagging]]'') und der Verzweigung in Varianten (sogenanntes ''Branching'') hervor. Während die Benennung von Tags und Branches in den meisten anderen Versionsverwaltungssystemen wie [[Git]], [[Mercurial]] oder auch [[Concurrent Versions System|CVS]] eine klare semantische Bedeutung hat, kennt Subversion nur das Konzept der „billigen Kopie“, die je nach Nutzungsart „Tag-“ oder „Branch-Charakter“ haben kann. Jede Kopie in Subversion ist demnach automatisch eine Variante dieser Datei oder des Verzeichnisses. Namentliche Kennzeichnungen entstehen in Subversion durch eine Kopie, die später nicht mehr verändert werden sollte. Wegen des Fehlens einer Tag- oder Branch-Semantik obliegt die Strukturierung und Verwaltung von Kennzeichnungen und Verzweigungen dem Benutzer und [[Administrator (Rolle)|Administrator]]. Dabei hat es sich bewährt, für Projekte die Basisverzeichnisse ''trunk'' (dt. „Stamm“), ''branches'' (dt. „Verzweigungen“) und ''tags'' (dt. „Markierungen“) anzulegen. Das Verzeichnis ''trunk'' enthält dabei die Hauptentwicklungslinie des Projekts, in ''branches'' werden weitere Unterverzeichnisse mit alternativen Entwicklungspfaden verwaltet und in ''tags'' eine Kopie von ''trunk'' oder einem der ''branches'' als Unterverzeichnis angelegt. Zur besseren Übersicht werden je nach Projektanforderungen ''tags'' und ''branches'' noch in weitere Unterverzeichnisse unterteilt. Als ''HEAD'' bezeichnet man die neueste Version (engl. „top revision“) innerhalb einer Verzweigung.
[[Bild:Subversion project visualization.svg|thumb|Visualisierung eines Subversion-Projektes]]
Neben dem geänderten Datenbank-Modell sticht das zu CVS völlig unterschiedliche Konzept im Bereich des [[Tag (Informatik)|Tagging]] und Branching hervor. Während Tags und Branches in CVS eine klare semantische Bedeutung haben, kennt Subversion nur das Konzept der Kopie, die je nach ''Nutzungsart'' Tag- oder Branch-Charakter haben kann. Jede Kopie in Subversion ist demnach automatisch ein Branch dieser Datei oder des Verzeichnisses. Tags entstehen in Subversion, wenn man eine Kopie anlegt und später auf ihr keine Änderungen mehr vornimmt. Aufgrund des Fehlens einer Tag- und Branch-Semantik obliegt die Strukturierung und Verwaltung von Tags und Branches dem Benutzer und [[Administrator (Rolle)|Administrator]]. Dabei hat sich bewährt, für Projekte die Basisverzeichnisse ''trunk'' (engl. Stamm), ''branches'' (engl. Verzweigungen) und ''tags'' (engl. Markierungen) anzulegen. ''trunk'' enthält dabei die Hauptentwicklungslinie des Projekts, in ''branches'' werden weitere Unterverzeichnisse mit alternativen Entwicklungspfaden verwaltet, und in ''tags'' eine Kopie von ''trunk'' oder einem der ''branches'' als Unterverzeichnis angelegt. Zur besseren Übersicht werden je nach Projektanforderungen ''tags'' und ''branches'' noch in weitere Unterverzeichnisse unterteilt. Als ''head'' bezeichnet man die Toprevision innerhalb eines Branches.


[[Datei:Subversion project visualization.svg|650px|mini|zentriert|Visualisierung eines Subversion-Projektes]]
Durch das Fehlen einer aufgezwungenen Semantik für Tags ist bei gehobenen Ansprüchen an das Versionskontrollsystem die Angabe der Revisionsnummer als Referenz, beispielsweise beim [[Bug-Tracker|Bug-Tracking]] oder in der Dokumentation, unabdingbar. Die Verwendung von serverseitigen Scripts kann steuern, ob, wie und von wem erstellte Tags modifiziert werden können. Darüber hinaus ist das Branchen und Taggen in Subversion deutlich performanter gelöst als in CVS.

Da ''branches'' und ''tags'' nur Kopien im Dateisystem sind, entsteht bei deren Erstellung zwangsläufig ein neuer Commit. Zudem muss sich jeder Entwickler an die vorgegebene Semantik halten. So ist es etwa möglich, ''tags'' und ''branches'' von Teilen des Dateisystems oder gar vom ganzen Dateisystem inklusive aller bisherigen ''tags'' und ''branches'' zu erstellen, in einen ''tag'' nachträglich Änderungen zu ''committen'' oder Dateien oder Verzeichnisse außerhalb der vorgesehenen Dateistruktur anzulegen. So ein regelwidriges Verhalten kann durch serverseitige Skripte unterbunden werden.


Da Dateien in Subversion auch versionskontrolliert umbenannt werden können, kann die Projektstruktur jederzeit gestiegenen oder gesunkenen Anforderungen angepasst werden.
Da Dateien in Subversion auch versionskontrolliert umbenannt werden können, kann die Projektstruktur jederzeit gestiegenen oder gesunkenen Anforderungen angepasst werden.


=== Sonstiges ===
=== Verzeichnisse und Metadaten ===
In CVS und anderen Versionskontrollsystemen wie [[Source Code Control System|SCCS]], [[Revision Control System|RCS]] oder [[Git]] werden nur die Dateien verwaltet. Die Verzeichnisstruktur existiert, entsteht und verschwindet implizit – gemäß der Pfade der verwalteten Dateien. Im Gegensatz dazu gehören in Subversion auch die Verzeichnisse zu den verwalteten Inhalten. Insbesondere verschwindet ein geleertes Verzeichnis nicht automatisch, sondern müsste dazu explizit als gelöscht markiert werden. Hierdurch können in Subversion auch leere Verzeichnisse ein- und ausgecheckt werden.


Weiterhin können in Subversion Metadaten verwaltet werden. Sie werden nicht wie die Inhalte im Verzeichnisbaum abgelegt, sondern direkt in der internen Datenbank gespeichert, und daher bei Verwendung des Export-Befehls auch nicht mit exportiert. Änderungen an den Metadaten werden wie Inhaltsänderungen eingecheckt und erhöhen die Revisionsnummer der annotierten Inhalte.
Subversion kann auch Verzeichnisse und Metadaten verwalten. Insbesondere können Verzeichnisse auch als gelöscht markiert werden. Dies ist mit CVS nicht möglich, hier können nur optional leere Verzeichnisse gelöscht werden, sie können nicht ohne Verlust der Historie aller enthaltenen Dateien aus dem Repository gelöscht werden. Subversion bietet einen verbesserten Umgang mit [[Binärdatei|Binärdaten]]. Es erkennt solche Dateien (beispielsweise Bilder oder Audiodateien) weitgehend automatisch, und es werden (wie bei Textdateien) nur die [[Mengenlehre#Differenz und Komplement|Differenz]]en zwischen den geänderten Versionen gespeichert. In CVS geht das umständlicher über Eintrag der Endungen von binären Dateien in <code>cvswrapper</code>, verschiedene Versionen von Dateien dieser Typen müssen aber immer voll gespeichert werden.


=== Binärdateien ===
Wie CVS bietet Subversion den Netzwerkzugriff über einen eigenen [[Server]], auf den mit [[Secure Shell|SSH]] auch verschlüsselt zugegriffen werden kann. Zusätzlich hierzu und der Speicherung im lokalen [[Dateisystem]] existiert auch ein Modul für den [[Apache (Software)|Apache 2]]-Webserver, mit dem die Daten auch mit der [[Hypertext Transfer Protocol|HTTP]]/[[Hypertext Transfer Protocol Secure|HTTPS]]-Erweiterung [[WebDAV]] übertragen werden können. Somit kann die aktuelle Revision einer Datei auch mit einem gewöhnlichen Webbrowser abgerufen werden.
Subversion bietet einen verbesserten Umgang mit [[Binärdatei|Binärdaten]]. Es erkennt solche Dateien (beispielsweise Bilder oder Audiodateien) weitgehend automatisch, und es werden (wie bei Textdateien) nur die [[Mengenlehre#Differenz und Komplement|Differenzen]] zwischen den geänderten Versionen gespeichert.


=== Dateilöschung ===
Einmal eingefügte (''checked in'') Dateien lassen sich nur noch mit großem Aufwand, teilweise sogar mit der Gefahr, das Repository zu zerstören, vollständig (mitsamt Versionshistorie) entfernen. <ref>Subversion-Bugtracker: ''[http://subversion.tigris.org/issues/show_bug.cgi?id=516 Issue 516]'', 4. Oktober 2001</ref> Für die Zukunft ist geplant, das Kommando <code>svnadmin obliterate</code> zu implementieren, welches ein sicheres und rückstandfreies Löschen ermöglichen soll <ref>Subversion FAQ: ''[http://subversion.tigris.org/faq.html#removal How do I completely remove a file from the repository's history?]'', 3. August 2006</ref>, was allerdings seit inzwischen über einem halben Jahrzehnt nicht verwirklicht wurde.
Dateien, die bereits durch einen ''Commit'' im Repositorium gespeichert wurden, können als gelöscht markiert werden, sind dann aber immer noch mit ihrer gesamten Historie vorhanden. Ein vollständiges Entfernen von Dateien (mitsamt Versionshistorie) entspricht nicht den Grundsätzen von Subversion und lässt sich nur mit großem Aufwand als Administrator durchführen.


=== Sonstiges ===
Subversion verwaltet das gesamte Repository in einer Datenbank, deren Dateien nicht die Struktur des Repository-Inhalts widerspiegeln. Die Integrität der Datenbank lässt sich so verzeichnisübergreifend überprüfen. Es stehen dabei aktuell zwei [[Frontend und Backend|Backends]] zur Verfügung. Das in der Version 1.1 hinzugefügte <code>fsfs</code>-Backend verwendet ein eigenes Format. Das andere Backend verwendet das [[Berkeley DB|Berkeley-Datenbanksystem]], dies hat jedoch den Nachteil, dass die Daten einerseits dessen binären Inkompatibilitäten abhängig von der verwendeten Version unterliegen, und andererseits den damit eingebrachten Stabilitätsproblemen. Dies kann zur Folge haben, dass ein mit einer älteren Version erstelltes Repository auf die neue Version angepasst werden muss. Zudem ist der Zugriff über [[Network File System|NFS]] und Windows-Netzwerkfreigaben dann nicht möglich.
Die Metadaten erlauben die Speicherung von Attributen wie etwa Dateien, die ignoriert werden sollen, oder solche, die auf Systemen, die dies unterstützen, als ausführbar markiert werden sollen. Neben den von SVN vordefinierten Werten, zu denen etwa auch Merge-Informationen gehören, können hier auch beliebige andere Werte hinterlegt werden. Allerdings werden diese Metadaten teilweise als intransparent kritisiert, da sie je nach Client gut versteckt sind und teils von Subversion selbst gesetzt werden.

Wie CVS bietet Subversion den Netzwerkzugriff über einen eigenen [[Server]], auf den mit [[Secure Shell|SSH]] auch verschlüsselt zugegriffen werden kann. Zusätzlich hierzu und der Speicherung im lokalen [[Dateisystem]], gibt es auch ein Modul für den [[Apache HTTP Server|Apache-2]]-Webserver, mit dem die Daten auch mit der [[Hypertext Transfer Protocol|HTTP]]/[[Hypertext Transfer Protocol Secure|HTTPS]]-Erweiterung [[WebDAV]] übertragen werden können. Somit kann die aktuelle Revision einer Datei auch mit einem gewöhnlichen Webbrowser abgerufen werden.


Subversion verwaltet das gesamte Repositorium in einer Datenbank, deren Dateien nicht die Struktur des Repositoriums-Inhalts widerspiegeln. Die Integrität der Datenbank lässt sich so verzeichnisübergreifend überprüfen. Es stehen dabei aktuell zwei [[Front-End und Back-End|Backends]] zur Verfügung. Das in der Version 1.1 hinzugefügte <code>fsfs</code>-Backend verwendet ein eigenes Format. Das andere Backend verwendet das [[Berkeley DB|Berkeley-Datenbanksystem]], dies hat jedoch den Nachteil, dass die Daten einerseits – abhängig von der verwendeten Version – dessen binären Inkompatibilitäten unterliegen, und andererseits den damit eingebrachten Stabilitätsproblemen. Dies kann zur Folge haben, dass ein mit einer älteren Version erstelltes Repositorium an die neue Version angepasst werden muss. Zudem ist der Zugriff über [[Network File System|NFS]] und Windows-Netzwerkfreigaben dann nicht möglich.
Im Gegensatz zu CVS definiert Subversion die [[Zeichenkodierung]], welche für Dateinamen und Log-Messages im Repository benutzt wird. Damit können beispielsweise auch Dateien mit Umlauten im Namen auf Systemen mit verschiedenen Zeichen-Codierungen (beispielsweise [[CP1252]] (deutschsprachiges Windows), [[UTF-8]] (Linux)) benutzt werden, während dies bei CVS nicht plattformunabhängig funktioniert, da die CVS-Client-Server-Protokoll-Definition dies nicht festlegt.


Subversion definiert selbst die [[Zeichenkodierung]], welche für Dateinamen und Logbuch-Einträge im Repositorium benutzt wird. Damit können beispielsweise auch Dateien mit Umlauten im Namen auf Systemen mit verschiedenen Zeichen-Codierungen (beispielsweise [[CP1252]] (deutschsprachiges Windows), [[UTF-8]] (Linux)) benutzt werden. Allerdings ergeben sich bei Zeichen in Dateinamen, die in UTF-8 sowohl ''composed'' als auch ''decomposed'' gespeichert werden können, Probleme auf [[macOS]]-basierten Systemen. Dies betrifft etwa Umlaute, die in UTF-8 als ein Zeichen (Ä, ''composed'') und als zwei Zeichen (A und ¨, ''decomposed'') gespeichert werden können.<ref>{{Webarchiv|url=http://www.syntevo.com/smartsvn/techarticles.html?page=problems.macos-special-characters|wayback=20120831|text=Problems with umlauts in file names on Mac OS X}}</ref>
Die aktuelle Subversion-Version hat lediglich Probleme auf [[Mac OS X]], da dessen Dateisystem z.&nbsp;B. Umlaute als zwei Zeichen speichert (etwa „a“ + „¨“<ref>genauer: LATIN SMALL LETTER A + COMBINING DIAERESIS [http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf#G30602 ''The Unicode Standard&nbsp;5.0'', Chapter&nbsp;3.6 ''Combination'']</ref>), während Windows und Linux nur ein Zeichen benutzen (etwa „ä“). Man kann die unter Mac OS X hinzugefügten Dateien zwar unter Windows abrufen, aber die Umlaute bestehen intern dann auch aus zwei Zeichen, werden aber wie „normale“ Umlaute beispielsweise im Explorer angezeigt. Da man trotzdem Dateien mit „normalen“ Ein-Zeichen-Umlauten anlegen kann, ist es so möglich, zwei gleich aussehende, aber intern vom Namen her unterschiedliche Dateien in demselben Verzeichnis unter Windows zu haben.


== Abhängigkeiten von Subversion ==
== Abhängigkeiten von Subversion ==
Für eine Installation der Basisfunktionen muss ab Version 1.1.0 nur die ''[[Apache HTTP Server|Apache]] Portable Runtime''-Bibliothek vorhanden sein. Zuvor war auch noch eine ''Berkeley-DB'' in einer Version 4.0 oder höher notwendig, was aber hinfällig ist, seit das Repositorium mit Hilfe des ''FSFS''-Backend optional auch direkt im [[Dateisystem]] gespeichert werden kann.


[[Apache HTTP Server|Apache]] 2 und Neon sind für die [[WebDAV]]-Nutzung erforderlich, [[Python (Programmiersprache)|Python 2.x]] für einige mitgelieferte Test-Skripte, eine SSL-Implementierung, wenn man WebDAV verschlüsseln will. Ab Version 1.4 kann alternativ auch ''Serf'' anstatt ''Neon'' für WebDAV verwendet werden.
Für eine Installation der Basisfunktionalität muss seit Version 1.1.0 nur die [[Apache HTTP Server|Apache]] Portable Runtime-Bibliothek vorhanden sein. Zuvor war auch noch eine Berkeley-DB in einer Version von 4.0 oder höher notwendig, was jetzt aber hinfällig ist, da das Repository mit Hilfe des FSFS-Backend optional auch direkt im [[Dateisystem]] gespeichert werden kann.


Repositorien werden – wie bei [[Concurrent Versions System|CVS]] – mit dem Aufruf eines Befehls eingerichtet. Damit kann bei lokalem Zugriff sofort gearbeitet werden. Eine Server-Konfiguration verläuft abhängig von der gewählten Methode unterschiedlich, gleicht aber derjenigen anderer Systeme, CVS eingeschlossen.
[[Apache HTTP Server|Apache]] 2 und Neon sind für die [[WebDAV]]-Nutzung erforderlich, [[Python (Programmiersprache)|Python 2.x]] für einige mitgelieferte Test-Skripte, eine SSL-Implementierung, wenn man WebDAV verschlüsseln will. Seit Version 1.4 kann alternativ auch Serf anstatt neon für [[WebDAV]] verwendet werden.


Mit dem WebDAV-Modul wird der Apache-HTTP-Server auch direkt zum eigentlichen Serverprozess für Subversion-Repositorien. Die Subversion-Inhalte werden dabei über eine gewöhnliche URL per HTTP oder verschlüsselt per HTTPS adressiert. Mittels eines normalen Web-Browsers kann ein Repositorium durchsucht werden (zumindest die aktuelle Version). Da Subversion damit auch den normalen HTTP-[[Port (Protokoll)|Port]] 80 verwendet, ist oft keine zusätzliche Konfiguration von Firewall o.&nbsp;Ä. notwendig.
Die Einrichtung eines Repositorys besteht – wie bei [[Concurrent Versions System|CVS]] – aus dem Aufruf eines Befehls. Bei lokalem Zugriff kann man nun sofort loslegen. Will man Subversion als Server konfigurieren, hängt der Aufwand stark von der gewählten Methode ab, ist jedoch ähnlich im Vergleich zu anderen Systemen, wie beispielsweise CVS.


Subversion kann auch mit einem eigenen Apache-unabhängigen Serverprozess verwendet werden. Dieser verwendet ein eigenes Netzwerkprotokoll, das – weil für Subversion optimiert – effizienter ist als das Apache-Modul. Der Standard-Port ist 3690, für verschlüsselte Datenübertragungen und eine entsprechend geschützte Authentifizierung kann das SVN-Protokoll mit [[Secure Shell|SSH]] kombiniert werden.
Der Standard-Subversion-[[Port (Protokoll)|Port]] ist 3690.

== Unterschiede zu CVS ==
; Versionsschema
: [[Concurrent Versions System|CVS]] basiert auf dem älteren [[Revision Control System|RCS-System]] und hat hiervon das interne Speicherformat übernommen. Dieses Format ist ausschließlich für die Verwaltung der Versionsgeschichte von einzelnen Dateien ausgelegt. CVS hat für die Verwaltung von Projekten mit mehreren Dateien eine sehr einfache Lösung gewählt: Das Projekt wird als Sammlung von Dateien betrachtet, von denen jede für sich eine eigene Historie hat. Insbesondere in der Softwareentwicklung gehören aber häufig Änderungen an mehreren Dateien in einem logischen Schritt zusammen. So muss beispielsweise in einem [[C (Programmiersprache)|C]]-Projekt bei Anpassung einer Funktionsdeklaration in <code>foo.h</code> immer auch die Implementierung in <code>foo.c</code> angepasst werden. Dass der Schritt von <code>foo.h</code> auf die Version 1.5 mit dem Schritt von <code>foo.c</code> auf die Version 1.9 zusammenhängt, kann in CVS nicht abgebildet werden. Es kann nur durch weiche Kriterien wie zeitliche Nähe oder gleiche Commit-Nachricht gefolgert werden oder durch Vergabe eines Tags explizit angegeben werden.
; Änderungsverfolgung
: CVS berechnet Änderungen Server-seitig und muss somit bei Übertragungen jeweils die gesamte Datei übertragen.
; Umbenennungen und Verschiebungen
: Umbenennungen und Verschiebungen werden in CVS ebenfalls realisiert, indem eine Kopie angelegt und das Original als gelöscht markiert wird. In CVS kommt es dabei aber zu einem Bruch im Versionsverlauf.
; Löschmarkierung von Verzeichnissen
: In CVS können nur leere Verzeichnisse gelöscht werden, sie können nicht ohne Verlust der Historie aller enthaltenen Dateien aus dem Repositorium gelöscht werden.
; Binärdateiverwaltung
: Die Endungen von zu verwaltenden Binärdateitypen müssen in CVS in <code>cvswrapper</code> eingetragen werden, verschiedene Versionen von Dateien dieser Typen müssen aber immer vollständig gespeichert werden.
; Zeichenkodierung für Dateinamen und Logbuch-Einträge im Repositorium
: Wird von CVS nicht selbst kodiert.

== Distributionen ==
Eine größere Anzahl von Freiwilligen pflegt verschiedene Binärdistributionen von Subversion, in der Regel mehrere pro Zielsystem. Ebenfalls werden Binärdistributionen zu unterschiedlichen Konditionen von einschlägigen Unternehmen herausgegeben. Das Apache-Subversion-Projekt gibt keine offiziellen Empfehlungen für bestimmte Distributionen heraus, pflegt aber eine Seite mit Weblinks der ihm bekannten Distributionen.<ref>{{Internetquelle |url=https://subversion.apache.org/packages.html |titel=Apache Subversion Binary Packages |abruf=2020-08-20}}</ref>


== Grafische Benutzeroberflächen ==
== Grafische Benutzeroberflächen ==
Es gibt einige ausgereifte [[Grafische Benutzeroberfläche]]n (GUIs) für Subversion. Sie machen es den Benutzern besonders leicht, auf ein Subversion-Repositorium zuzugreifen. Hier einige Anwendungen:
* [[Cornerstone (Software)|Cornerstone]]: Mac OS X, proprietär
* [[KDEsvn]]: Linux (KDE), Open-Source
* [[RapidSVN]]: Linux (Gnome), Windows, Open-Source
* [[SmartSVN]]: Mac OS X, Windows, Linux, OS/2, proprietär
* [[TkRev]]: Unix/Linux, Windows, und Mac OS X
* [[Versions]]: Mac OS X, proprietär


Integriert in Dateibrowser:
Es gibt einige ausgereifte [[Grafische Benutzeroberfläche|grafische Benutzeroberflächen (GUI)]] für Subversion. Sie machen es den Benutzern besonders leicht, auf ein Subversion-Repository zuzugreifen. Hier einige Anwendungen:
* [[Versions]]: Mac OS X, kommerziell
* [[RabbitVCS]]: Linux (Gnome, XfCE)
* [[Cornerstone (Software)|Cornerstone]]: Mac OS X, kommerziell
* [[SCPlugin]]: Mac OS X (bis Version 10.5), Open-Source
* [[svnX (Software)|svnX]]: Mac OS X, Open Source
* [[SmartSVN]]: Mac OS X, Windows, proprietär
* [[Subcommander]]: Mac OS X, Windows & Linux, Open Source
* [[TortoiseSVN]]: Windows, Open-Source
* [[TortoiseSVN]]: Windows, Open Source
* [[ZigVersion]]: Mac OS X, Open Source


Integriert in Entwicklungsumgebungen:
Weiterhin sind Plugins für [[NetBeans]], [[Eclipse (IDE)|Eclipse]], [[Code::Blocks]], [[Vim]], [[TYPO3]], [[Microsoft Visual Studio]] und [[ASCET]] verfügbar. Die globale Administration (Benutzerrechte, Protokolle,&nbsp;…) erfolgt jedoch weiterhin über spezielle SVN-eigene Konfigurationsdateien.
* [[Android Studio]] von [[Google LLC|Google]]
* [[AnkhSVN]] und [[VisualSVN]] für [[Microsoft Visual Studio]]
* [[Dreamweaver]] ab Version CS4 von [[Adobe Inc.]]
* [[Embarcadero Delphi|Delphi ab XE]] von [[Embarcadero Technologies]]
* [[IntelliJ IDEA]] und PhpStorm von [[JetBrains|JetBrains Inc.]]
* [[Netbeans]] von [[Oracle Corporation]]
* [[PHPEdit]] von Waterproof
* [[Qt Creator]] von [[Qt Development Frameworks]]
* [[Subclipse]] und [[Subversive]] für [[Eclipse (IDE)|Eclipse]]
* [[SQL Developer]] von [[Oracle]]
* [[Xcode]] von [[Apple]]


Integriert in Editoren:
Um ein Subversion-Repository lediglich zu betrachten, bieten viele [[Open Source|Open-Source]]-Projekte einen [[Hyperlink|Link]] auf ihren [[Web Service|Webdienst]] an. Dieser präsentiert in übersichtlicher Form Inhalte von Dateien, Verzeichnissen und Logbüchern, auch Datei-Vergleiche sind möglich.
* [[BBEdit]]: Mac OS X
* CODA Webeditor ab Version 1.5 von [[Panic Inc.]]: Mac OS X
* [[Meld]]: Linux
* [[oXygen (Editor)]]: Mac OS X, Windows, Linux
* [[TextMate]]: Mac OS X

Weiterhin sind Plugins für [[Visual Studio]], [[Visual Studio Code]], [[NetBeans]], [[KDevelop]], [[Code::Blocks]], [[Vim]], [[TYPO3]] und [[ASCET]] verfügbar. Die globale Administration (Benutzerrechte, Protokolle,&nbsp;…) erfolgt anwendungsabhängig über dessen Oberfläche oder weiterhin über spezielle Subversion-eigene Konfigurationsdateien.

Um auf ein Subversion-Repositorium lesend zuzugreifen, bieten viele [[Open Source|Open-Source]]-Projekte einen [[Hyperlink|Link]] auf ihren [[Webservice|Webdienst]] an. Dieser präsentiert in übersichtlicher Form Inhalte von Dateien, Verzeichnissen und Logbüchern; auch Datei-Vergleiche und Downloads sind möglich.
Werden Subversion-Repositorien durch einen [[Apache HTTP Server|Apache-Webserver]] mit den Standard-Modulen mod_dav, mod_dav_svn und mod_authz_svn gehostet, ist neben dem vollen Zugriff über einen klassischen Subversion-Client auch ein Zugriff durch beliebige Browser über das [[WebDAV]]-Protokoll möglich.
Eine komfortablere Browser-Darstellung und -Bedienung mit größerem Funktionsumfang ist über [[ViewVC]], [[Trac]], Web, [[VisualSVN]], [[Beanstalk]] oder [[Atlassian Fisheye]] möglich. Diese bieten teilweise einen wesentlich größeren Funktionsumfang wie ein integriertes [[Bugtracker|Bugtracking]], projektweite Suchfunktionen, Team-Unterstützung für [[Review (Softwaretest)|Code Reviews]], die Integration weiterer Versionsverwaltungssysteme wie Git, [[Kontinuierliche Integration|Continuous Integration]] oder weiterer Team-unterstützende Funktionen Foren, Chatfunktionen und Wikis.


== Literatur ==
== Literatur ==
* C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick: [http://svnbook.red-bean.com/ ''Versionskontrolle mit Subversion''] – Website des freien Buchprojektes.
* C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick, ''Versionskontrolle mit Subversion'', O'Reilly-Verlag, 3. Auflage April 2009, ISBN 978-3-89721-897-0.
* Tobias Wassermann: ''Versionsmanagement mit Subversion'', mitp-Verlag, 1. Auflage Oktober 2006, ISBN 978-3-8266-1662-4.
* Tobias Wassermann: ''Versionsmanagement mit Subversion'', mitp-Verlag, 1. Auflage Oktober 2006, ISBN 978-3-8266-1662-4.
* Frank Budzuhn: ''Subversion'', Galileo Computing, 2. aktualisierte und erweiterte Auflage 2007, ISBN 978-3-89842-879-8.
* Frank Budzuhn: ''Subversion'', Galileo Computing, 2. aktualisierte und erweiterte Auflage 2007, ISBN 978-3-89842-879-8.

== Weblinks ==
* [https://subversion.apache.org/ Offizielle Website] (englisch)
* [https://subversion.apache.org/packages.html Apache-Linkliste für Binärdistributionen] (englisch)
* [http://svnbook.red-bean.com/ Version Control with Subversion] – Website des Online-Buchprojekts
* {{dmoz|Computers/Software/Configuration_Management/Tools/Subversion/|Subversion}}


== Einzelnachweise ==
== Einzelnachweise ==
<references />
<references />


{{Normdaten|TYP=s|GND=4789161-0}}
== Weblinks ==

* [http://subversion.tigris.org/ Offizielle Website] (englisch)
* [http://svnbook.red-bean.com/nightly/de/index.html Subversion-Onlinebuch]
* {{dmoz|Computers/Software/Configuration_Management/Tools/Subversion/|Subversion}}

[[Kategorie:Freies Programmierwerkzeug]]
[[Kategorie:Versionsverwaltung]]


[[af:Subversion]]
[[Kategorie:Apache-Projekt|Subversion]]
[[Kategorie:Freie Versionsverwaltungssoftware|S]]
[[ar:سب فيرجن]]
[[ca:Subversion]]
[[Kategorie:Repository]]
[[cs:Subversion]]
[[da:Subversion]]
[[en:Subversion (software)]]
[[eo:Subversion]]
[[es:Subversion]]
[[eu:Subversion]]
[[fi:Subversion]]
[[fr:Subversion (logiciel)]]
[[gl:Subversion]]
[[hi:सबवर्ज़न]]
[[hu:Subversion]]
[[id:Subversion]]
[[it:Subversion]]
[[ja:Subversion]]
[[ko:서브버전]]
[[lt:Subversion]]
[[nl:Subversion]]
[[no:Subversion]]
[[pl:Subversion]]
[[pt:Subversion]]
[[ru:Subversion]]
[[sk:Subversion]]
[[sr:SVN]]
[[sv:Subversion (versionshanteringssystem)]]
[[uk:Subversion]]
[[vi:Subversion]]
[[zh:Subversion]]

Aktuelle Version vom 18. Februar 2025, 17:11 Uhr

Apache Subversion

Subversion-Logo
Basisdaten

Entwickler CollabNet, Apache Software Foundation
Erscheinungsjahr 2000
Aktuelle Version 1.14.5[1]
(8. Dezember 2024)
Betriebssystem GNU/Linux[2], Microsoft Windows[2], macOS[2], BSD-Betriebssystem[2], Unix-ähnliches System, AIX, HP-UX[3], Solaris[4], BeOS, OS/2
Programmier­sprache C[5][6], Python[5], C++[5], Java[5], Ruby[5], Perl[5]
Kategorie Versionsverwaltung
Lizenz Apache-Lizenz, Version 2.0[7]
deutschsprachig ja
subversion.apache.org
Zentrale Verwaltung eines Repositoriums mit Hilfe von Subversion.

Apache Subversion (SVN) ist eine freie Software zur zentralen Versionsverwaltung von Dateien und Verzeichnissen.

Die Versionierung erfolgt in einem zentralen Repositorium bzw. Projektarchiv (engl. repository) in Form einer einfachen Revisionszählung. Wenn Änderungen an Inhalten verteilt auf den Computern der Bearbeiter ausgeführt werden, werden zwischen dem Projektarchiv und einem Arbeitsplatz jeweils nur die Unterschiede zu bereits vorhandenen Ständen übertragen.

Subversion wird als freie Software unter einer Lizenz im Stil der Apache-Lizenz veröffentlicht.

Die Benennung „Subversion“ setzt sich aus den Worten Sub und Version zusammen und kann so als Unterversion, frühere Version verstanden werden. Der Name wurde von Jim Blandy geprägt, der auch das initiale Design des Subversion-Speichers definierte. Er verstand die Software als eine Weiterentwicklung von CVS, wobei als Reaktion auf weit verbreitete Kritik an CVS insbesondere die Handhabung von Versionshistorien geändert wurde.[9] So ist es mit Subversion – im Gegensatz zu CVS – z. B. möglich, Dateien oder Verzeichnisse zu verschieben oder umzubenennen, ohne die Versionsgeschichte zu verlieren. Details finden sich im Abschnitt Unterschiede zu CVS. In der Bedienung der Kommandozeilenversion ist es dagegen sehr ähnlich gehalten.

Mit cvs2svn gibt es einen Konverter, mit dem ein CVS-Repositorium zu Subversion konvertiert werden kann. Auch für die Migration von anderen Versionsverwaltungs-Systemen (etwa PVCS, Visual Source Safe, ClearCase, MKS, Perforce, StarTeam, …) sind verschiedene kostenfreie Import-Werkzeuge erhältlich.

Subversion wurde seit Anfang 2000 bei CollabNet entwickelt.

Am 4. November 2009 gaben ehemaliger und neuer Hoster in einer gemeinsamen Presseerklärung bekannt, dass das Projekt auf Entschluss von CollabNet zur Apache Software Foundation wechseln werde.[10] Am 7. November 2009 startete Apache Subversion im Apache Incubator, seit 17. Februar 2010 ist Apache Subversion ein Top-Level-Apache-Projekt.

Veröffentlichungen

[Bearbeiten | Quelltext bearbeiten]
Version Erscheinungsdatum Bemerkungen
Ältere Version; nicht mehr unterstützt: - 5. Juni 2000 CVS-Repositorium zur gemeinsamen Entwicklung eingerichtet.
Ältere Version; nicht mehr unterstützt: 0.9 15. Februar 2002 Große Fortschritte beim Repositoriums-Konverter cvs2svn, Kommando svn switch eingeführt, Quelltext reorganisiert und aufgeräumt, Build-System erneuert.
Ältere Version; nicht mehr unterstützt: 0.14.0 23. Juli 2002 Erste Alpha-Version veröffentlicht.
Ältere Version; nicht mehr unterstützt: 0.35.1 19. Dezember 2003 Erste Beta-Version veröffentlicht.
Ältere Version; nicht mehr unterstützt: 1.0 23. Februar 2004 Version 1.0 fertiggestellt.
Ältere Version; nicht mehr unterstützt: 1.1 29. September 2004 Projektarchive (Repositorien) können nicht mehr nur in einer Berkeley-Datenbank verwaltet werden, sondern auch direkt im Dateisystem. Internationalisierte Programmausgaben.
Ältere Version; nicht mehr unterstützt: 1.2 21. Mai 2005 Bearbeitungssperren für Dateien, was für binäre Dateien von Vorteil sein kann.
Ältere Version; nicht mehr unterstützt: 1.3 30. Dezember 2005 Verbesserungen in den Bereichen Server-Logging, Autorisierung, Programmiersprachen-Anbindungen, Kommando-Optionen und Performance.
Ältere Version; nicht mehr unterstützt: 1.4 10. September 2006 Neues Programm svnsync, welches das Spiegeln von Projektarchiven (Repositorien) ermöglicht.
Ältere Version; nicht mehr unterstützt: 1.5 19. Juni 2008 Neue Funktionalität Merge-Tracking, das dokumentierte Zusammenführen verschiedener Teilbäume.
Ältere Version; nicht mehr unterstützt: 1.6 20. März 2009 Verbesserungen des Merge-Tracking und der Sicherheitsfunktionen.
Ältere Version; nicht mehr unterstützt: 1.7 11. Oktober 2011 Änderung der Metadatenverwaltung: Anstatt Metadaten in .svn-Ordnern in jedem Unterverzeichnis zu speichern, werden diese jetzt zentral in einem einzigen .svn-Ordner im Hauptverzeichnis der Arbeitskopie in einer SQLite-Datenbank gespeichert.
Ältere Version; nicht mehr unterstützt: 1.8 18. Juni 2013 Lokales (Working copy) Verschieben/Umbenennen von Dateien wird transparent unterstützt, Vereinfachungen des Re-Integrierens von Teilbäumen, vererbte Eigenschaften und Einstellungen direkt im Projektarchiv.
Ältere Version; nicht mehr unterstützt: 1.8.18 7. Juli 2017 Kleinere Fehlerbehebungen, unter anderem für mögliche SHA1-Kollisionen[11][12]
Ältere Version; nicht mehr unterstützt: 1.8.19 10. August 2017 Sicherheitsupdate um Client-seitige Ausführung von beliebigem Code zu verhindern (CVE-2017-9800).[13][14]
Ältere Version; nicht mehr unterstützt: 1.9 5. August 2015 Neues, verbessertes FSFS-Dateiformat Version 7, neues Tool svnfsfs, experimentelles FSX-Dateiformat, neues svn-Unterkommando auth, Server-seitige Performance-Verbesserungen, Erweiterung der Tools svnadmin und svnbench, 3-Wege-Konflikt- und diff3-Verbesserungen, vorausschauendes blame.
Ältere Version; nicht mehr unterstützt: 1.9.6 6. Juli 2017 Speicherbedarf bei Verwendung großer Mengen an Merge-Metadaten reduziert, einzelne Fehlermeldungen verbessert, Konsistenzprüfung nun unabhängig von Hash-Algorithmen um beispielsweise SHA1-Kollisionen zu entgehen, weitere kleine Fehlerbehebungen.[15][16]
Ältere Version; nicht mehr unterstützt: 1.9.10 11. Januar 2019 Sicherheitsupdate um Client-seitige Ausführung von beliebigem Code zu verhindern (CVE-2017-9800).[17][18]
Ältere Version; nicht mehr unterstützt: 1.10.4 11. Januar 2019 Improved path-based authz, new interactive conflict resolver, LZ4 compression, FSFS format 8, shelving.[19]
Ältere Version; nicht mehr unterstützt: 1.10.8 12. April 2022 Letzte Version des 1.10.x-Astes mit Langzeitunterstützung (LTS), mit Erscheinen des 1.14.x-LTS-Asts wurde dieser Ast zum aktuellen „Old-Stable“. Die Unterstützung endete am 24. September 2023. Anwender- und entwicklungsseitige Verbesserungen siehe Änderungshistorie.[20] Enthält weiterhin Patches gegen CVE-2021-28544 SVN authz protected copyfrom paths regression und CVE-2022-24070 Subversion's mod_dav_svn is vulnerable to memory corruption, siehe Beschreibung in Release Announcement for Apache Subversion 1.10.8 sowie dort verlinkte Schwachstellenmeldungen.[21]
Ältere Version; nicht mehr unterstützt: 1.11.1 11. Januar 2019 Improved shelving, checkpointing, improved tree conflict resolution.[22]
Ältere Version; nicht mehr unterstützt: 1.12.0 24. April 2019 Improved shelving, improved checkpointing, improvements to the interactive conflict resolver.[23]
Ältere Version; nicht mehr unterstützt: 1.13.0 30. November 2019 [24]
Ältere Version; nicht mehr unterstützt: 1.14.0 27. Mai 2020 [25]
Ältere Version; nicht mehr unterstützt: 1.14.2 12. April 2022[26] Vorherige stabile Version des 1.14.x-Astes mit Langzeitunterstützung (LTS).

Anwender- und entwicklungsseitige Verbesserungen siehe Änderungshistorie.[27]

Enthält weiterhin Patches gegen CVE-2021-28544 SVN authz protected copyfrom paths regression und CVE-2022-24070 Subversion's mod_dav_svn is vulnerable to memory corruption, siehe Beschreibung in Release Announcement for Apache Subversion 1.14.2 sowie dort verlinkte Schwachstellenmeldungen.[28]

Aktuelle Version: 1.14.3 28. Dezember 2023[29] Aktuelle geplante stabile Version des 1.14.x-Astes mit Langzeitunterstützung (LTS).
Vorabversion: 1.14.4 28. Dezember 2023[30] Nächste geplante stabile Version des 1.14.x-Astes mit Langzeitunterstützung (LTS).

Unterstützung für Windows auf ARM64.

Zukünftige Version: 1.15.0 2024[31] Zukünftige stabile Hauptversion (neuer 1.15.x-Ast).

Geplante Client-seitige Verbesserungen: Gleichzeitige Unterstützung mehrerer Arbeitskopieformate in einem Projekt (ab 1.8 bis 1.15). Geschwindigkeitssteigerung.

Legende:
Ältere Version; nicht mehr unterstützt
Ältere Version; noch unterstützt
Aktuelle Version
Aktuelle Vorabversion
Zukünftige Version

Das Versionsschema von Subversion bezieht sich nicht auf einzelne Dateien, sondern auf das ganze Projektarchiv. Dieses bekommt bei jeder Änderung eine neue „Revisionsnummer“ zugeordnet. Somit kann einfach und konsistent eine exakte Version des Projektarchivs beschrieben werden (z. B. „Revision 2841“ statt „Version vom 23. März 2004 20:56:31 UTC“). Die Revisionsnummer einer Datei entspricht dabei der Revisionsnummer des Projektarchivs zum Zeitpunkt der letzten Änderung der Datei. Die Revisionsnummer eines Verzeichnisses entspricht der höchsten Revisionsnummer aller enthaltenen Dateien und Verzeichnisse. Die Abfolge der Revisionsnummern einer einzelnen Datei kann also durchaus lückenhaft sein, wenn die Datei nicht bei jeder Änderung (Commit) am Repositorium geändert wurde. Beispielsweise könnte eine Datei bei der Revision 40 zum Projektarchiv hinzugefügt und jeweils einmal in der Revision 48 und der Revision 52 verändert worden sein. Beim Abrufen (Checkout) einer Datei wird die größte Revisionsnummer abgerufen, die kleiner oder gleich der angeforderten ist. Wird in dem Beispiel die Revision 52 angefordert, so wird die Revision 52 der Datei abgerufen; wird hingegen die Revision 51 angefordert, liefert Subversion die Inhalte von Revision 48.

Änderungsverfolgung

[Bearbeiten | Quelltext bearbeiten]

Subversion speichert Client-seitig bei jedem Checkout, Update und Commit einer Datei eine Kopie, welche im .svn-Verzeichnis abgelegt wird. Dadurch verdoppelt sich der Speicherbedarf einer Arbeitskopie, allerdings bietet dies bei entfernten Projektarchiven auch einige Vorteile. So können einige Aktionen, wie Anzeige der lokalen Änderungen, ganz ohne Netzwerkzugriff erfolgen, und Subversion muss beim Übertragen nur die geänderten Teile einer Datei übertragen. Auch ist es möglich, jederzeit die Änderungen einer Datei gegenüber ihrer Basisversion zu ermitteln oder zurückzunehmen, ohne das Projektarchiv zu konsultieren.

Export-Kommando

[Bearbeiten | Quelltext bearbeiten]

Da die im .svn-Ordner enthaltenen Metadaten etwa auf einem Produktivsystem nicht erwünscht sind, gibt es in Subversion das export-Kommando, welches die Dateien ohne die Metadaten des .svn-Ordners ins Dateisystem schreibt. Dies unterscheidet einen Export von einem Checkout.

Atomare Commits

[Bearbeiten | Quelltext bearbeiten]

Commits geschehen in Subversion atomar, das heißt, eine Änderung – auch mehrerer Dateien – wird entweder ganz oder gar nicht ins Repositorium gespeichert. Verbindungsabbrüche und mehrere gleichzeitige Zugriffe können somit nicht zu inkonsistenten Zuständen führen.

„Billige Kopien“

[Bearbeiten | Quelltext bearbeiten]

Subversion ist in der Lage, Kopien von Dateien so zu verwalten, dass den Kopien derselbe Bearbeitungsverlauf gemeinsam ist. Dieser Umstand ist besonders dann nützlich, wenn Änderungen an einer der Dateien in die andere portiert werden sollen. Zur Erstellung einer Kopie werden die Dateien auch nicht dupliziert, sondern es wird eine Datenbank-interne Verknüpfung angelegt, die im weiteren Verlauf genauso weiterverwendet werden kann wie das Original. Von dieser Technik wird häufig als billige Kopie[32] gesprochen.

Umbenennungs- und Verschiebungskonzept

[Bearbeiten | Quelltext bearbeiten]

Das Kopie-Konzept wird bei der Umbenennung und Verschiebung von Dateien eingesetzt: Subversion realisiert diese, indem es eine Kopie anlegt und das Original als gelöscht markiert, dabei kommt es zu keinem Bruch im Versionsverlauf.

Eine native Unterstützung für Verschiebung und Umbenennung ist auf der Entwicklerseite als mittelfristiges Ziel genannt.[33]

Tag- und Branchkonzept

[Bearbeiten | Quelltext bearbeiten]

Neben dem geänderten Datenbank-Modell sticht das zu anderen Versionsverwaltungssystemen völlig unterschiedliche Konzept im Bereich der Benennung von Dateiversionen (sogenanntes Tagging) und der Verzweigung in Varianten (sogenanntes Branching) hervor. Während die Benennung von Tags und Branches in den meisten anderen Versionsverwaltungssystemen wie Git, Mercurial oder auch CVS eine klare semantische Bedeutung hat, kennt Subversion nur das Konzept der „billigen Kopie“, die je nach Nutzungsart „Tag-“ oder „Branch-Charakter“ haben kann. Jede Kopie in Subversion ist demnach automatisch eine Variante dieser Datei oder des Verzeichnisses. Namentliche Kennzeichnungen entstehen in Subversion durch eine Kopie, die später nicht mehr verändert werden sollte. Wegen des Fehlens einer Tag- oder Branch-Semantik obliegt die Strukturierung und Verwaltung von Kennzeichnungen und Verzweigungen dem Benutzer und Administrator. Dabei hat es sich bewährt, für Projekte die Basisverzeichnisse trunk (dt. „Stamm“), branches (dt. „Verzweigungen“) und tags (dt. „Markierungen“) anzulegen. Das Verzeichnis trunk enthält dabei die Hauptentwicklungslinie des Projekts, in branches werden weitere Unterverzeichnisse mit alternativen Entwicklungspfaden verwaltet und in tags eine Kopie von trunk oder einem der branches als Unterverzeichnis angelegt. Zur besseren Übersicht werden je nach Projektanforderungen tags und branches noch in weitere Unterverzeichnisse unterteilt. Als HEAD bezeichnet man die neueste Version (engl. „top revision“) innerhalb einer Verzweigung.

Visualisierung eines Subversion-Projektes

Da branches und tags nur Kopien im Dateisystem sind, entsteht bei deren Erstellung zwangsläufig ein neuer Commit. Zudem muss sich jeder Entwickler an die vorgegebene Semantik halten. So ist es etwa möglich, tags und branches von Teilen des Dateisystems oder gar vom ganzen Dateisystem inklusive aller bisherigen tags und branches zu erstellen, in einen tag nachträglich Änderungen zu committen oder Dateien oder Verzeichnisse außerhalb der vorgesehenen Dateistruktur anzulegen. So ein regelwidriges Verhalten kann durch serverseitige Skripte unterbunden werden.

Da Dateien in Subversion auch versionskontrolliert umbenannt werden können, kann die Projektstruktur jederzeit gestiegenen oder gesunkenen Anforderungen angepasst werden.

Verzeichnisse und Metadaten

[Bearbeiten | Quelltext bearbeiten]

In CVS und anderen Versionskontrollsystemen wie SCCS, RCS oder Git werden nur die Dateien verwaltet. Die Verzeichnisstruktur existiert, entsteht und verschwindet implizit – gemäß der Pfade der verwalteten Dateien. Im Gegensatz dazu gehören in Subversion auch die Verzeichnisse zu den verwalteten Inhalten. Insbesondere verschwindet ein geleertes Verzeichnis nicht automatisch, sondern müsste dazu explizit als gelöscht markiert werden. Hierdurch können in Subversion auch leere Verzeichnisse ein- und ausgecheckt werden.

Weiterhin können in Subversion Metadaten verwaltet werden. Sie werden nicht wie die Inhalte im Verzeichnisbaum abgelegt, sondern direkt in der internen Datenbank gespeichert, und daher bei Verwendung des Export-Befehls auch nicht mit exportiert. Änderungen an den Metadaten werden wie Inhaltsänderungen eingecheckt und erhöhen die Revisionsnummer der annotierten Inhalte.

Subversion bietet einen verbesserten Umgang mit Binärdaten. Es erkennt solche Dateien (beispielsweise Bilder oder Audiodateien) weitgehend automatisch, und es werden (wie bei Textdateien) nur die Differenzen zwischen den geänderten Versionen gespeichert.

Dateien, die bereits durch einen Commit im Repositorium gespeichert wurden, können als gelöscht markiert werden, sind dann aber immer noch mit ihrer gesamten Historie vorhanden. Ein vollständiges Entfernen von Dateien (mitsamt Versionshistorie) entspricht nicht den Grundsätzen von Subversion und lässt sich nur mit großem Aufwand als Administrator durchführen.

Die Metadaten erlauben die Speicherung von Attributen wie etwa Dateien, die ignoriert werden sollen, oder solche, die auf Systemen, die dies unterstützen, als ausführbar markiert werden sollen. Neben den von SVN vordefinierten Werten, zu denen etwa auch Merge-Informationen gehören, können hier auch beliebige andere Werte hinterlegt werden. Allerdings werden diese Metadaten teilweise als intransparent kritisiert, da sie je nach Client gut versteckt sind und teils von Subversion selbst gesetzt werden.

Wie CVS bietet Subversion den Netzwerkzugriff über einen eigenen Server, auf den mit SSH auch verschlüsselt zugegriffen werden kann. Zusätzlich hierzu und der Speicherung im lokalen Dateisystem, gibt es auch ein Modul für den Apache-2-Webserver, mit dem die Daten auch mit der HTTP/HTTPS-Erweiterung WebDAV übertragen werden können. Somit kann die aktuelle Revision einer Datei auch mit einem gewöhnlichen Webbrowser abgerufen werden.

Subversion verwaltet das gesamte Repositorium in einer Datenbank, deren Dateien nicht die Struktur des Repositoriums-Inhalts widerspiegeln. Die Integrität der Datenbank lässt sich so verzeichnisübergreifend überprüfen. Es stehen dabei aktuell zwei Backends zur Verfügung. Das in der Version 1.1 hinzugefügte fsfs-Backend verwendet ein eigenes Format. Das andere Backend verwendet das Berkeley-Datenbanksystem, dies hat jedoch den Nachteil, dass die Daten einerseits – abhängig von der verwendeten Version – dessen binären Inkompatibilitäten unterliegen, und andererseits den damit eingebrachten Stabilitätsproblemen. Dies kann zur Folge haben, dass ein mit einer älteren Version erstelltes Repositorium an die neue Version angepasst werden muss. Zudem ist der Zugriff über NFS und Windows-Netzwerkfreigaben dann nicht möglich.

Subversion definiert selbst die Zeichenkodierung, welche für Dateinamen und Logbuch-Einträge im Repositorium benutzt wird. Damit können beispielsweise auch Dateien mit Umlauten im Namen auf Systemen mit verschiedenen Zeichen-Codierungen (beispielsweise CP1252 (deutschsprachiges Windows), UTF-8 (Linux)) benutzt werden. Allerdings ergeben sich bei Zeichen in Dateinamen, die in UTF-8 sowohl composed als auch decomposed gespeichert werden können, Probleme auf macOS-basierten Systemen. Dies betrifft etwa Umlaute, die in UTF-8 als ein Zeichen (Ä, composed) und als zwei Zeichen (A und ¨, decomposed) gespeichert werden können.[34]

Abhängigkeiten von Subversion

[Bearbeiten | Quelltext bearbeiten]

Für eine Installation der Basisfunktionen muss ab Version 1.1.0 nur die Apache Portable Runtime-Bibliothek vorhanden sein. Zuvor war auch noch eine Berkeley-DB in einer Version 4.0 oder höher notwendig, was aber hinfällig ist, seit das Repositorium mit Hilfe des FSFS-Backend optional auch direkt im Dateisystem gespeichert werden kann.

Apache 2 und Neon sind für die WebDAV-Nutzung erforderlich, Python 2.x für einige mitgelieferte Test-Skripte, eine SSL-Implementierung, wenn man WebDAV verschlüsseln will. Ab Version 1.4 kann alternativ auch Serf anstatt Neon für WebDAV verwendet werden.

Repositorien werden – wie bei CVS – mit dem Aufruf eines Befehls eingerichtet. Damit kann bei lokalem Zugriff sofort gearbeitet werden. Eine Server-Konfiguration verläuft abhängig von der gewählten Methode unterschiedlich, gleicht aber derjenigen anderer Systeme, CVS eingeschlossen.

Mit dem WebDAV-Modul wird der Apache-HTTP-Server auch direkt zum eigentlichen Serverprozess für Subversion-Repositorien. Die Subversion-Inhalte werden dabei über eine gewöhnliche URL per HTTP oder verschlüsselt per HTTPS adressiert. Mittels eines normalen Web-Browsers kann ein Repositorium durchsucht werden (zumindest die aktuelle Version). Da Subversion damit auch den normalen HTTP-Port 80 verwendet, ist oft keine zusätzliche Konfiguration von Firewall o. Ä. notwendig.

Subversion kann auch mit einem eigenen Apache-unabhängigen Serverprozess verwendet werden. Dieser verwendet ein eigenes Netzwerkprotokoll, das – weil für Subversion optimiert – effizienter ist als das Apache-Modul. Der Standard-Port ist 3690, für verschlüsselte Datenübertragungen und eine entsprechend geschützte Authentifizierung kann das SVN-Protokoll mit SSH kombiniert werden.

Unterschiede zu CVS

[Bearbeiten | Quelltext bearbeiten]
Versionsschema
CVS basiert auf dem älteren RCS-System und hat hiervon das interne Speicherformat übernommen. Dieses Format ist ausschließlich für die Verwaltung der Versionsgeschichte von einzelnen Dateien ausgelegt. CVS hat für die Verwaltung von Projekten mit mehreren Dateien eine sehr einfache Lösung gewählt: Das Projekt wird als Sammlung von Dateien betrachtet, von denen jede für sich eine eigene Historie hat. Insbesondere in der Softwareentwicklung gehören aber häufig Änderungen an mehreren Dateien in einem logischen Schritt zusammen. So muss beispielsweise in einem C-Projekt bei Anpassung einer Funktionsdeklaration in foo.h immer auch die Implementierung in foo.c angepasst werden. Dass der Schritt von foo.h auf die Version 1.5 mit dem Schritt von foo.c auf die Version 1.9 zusammenhängt, kann in CVS nicht abgebildet werden. Es kann nur durch weiche Kriterien wie zeitliche Nähe oder gleiche Commit-Nachricht gefolgert werden oder durch Vergabe eines Tags explizit angegeben werden.
Änderungsverfolgung
CVS berechnet Änderungen Server-seitig und muss somit bei Übertragungen jeweils die gesamte Datei übertragen.
Umbenennungen und Verschiebungen
Umbenennungen und Verschiebungen werden in CVS ebenfalls realisiert, indem eine Kopie angelegt und das Original als gelöscht markiert wird. In CVS kommt es dabei aber zu einem Bruch im Versionsverlauf.
Löschmarkierung von Verzeichnissen
In CVS können nur leere Verzeichnisse gelöscht werden, sie können nicht ohne Verlust der Historie aller enthaltenen Dateien aus dem Repositorium gelöscht werden.
Binärdateiverwaltung
Die Endungen von zu verwaltenden Binärdateitypen müssen in CVS in cvswrapper eingetragen werden, verschiedene Versionen von Dateien dieser Typen müssen aber immer vollständig gespeichert werden.
Zeichenkodierung für Dateinamen und Logbuch-Einträge im Repositorium
Wird von CVS nicht selbst kodiert.

Eine größere Anzahl von Freiwilligen pflegt verschiedene Binärdistributionen von Subversion, in der Regel mehrere pro Zielsystem. Ebenfalls werden Binärdistributionen zu unterschiedlichen Konditionen von einschlägigen Unternehmen herausgegeben. Das Apache-Subversion-Projekt gibt keine offiziellen Empfehlungen für bestimmte Distributionen heraus, pflegt aber eine Seite mit Weblinks der ihm bekannten Distributionen.[35]

Grafische Benutzeroberflächen

[Bearbeiten | Quelltext bearbeiten]

Es gibt einige ausgereifte Grafische Benutzeroberflächen (GUIs) für Subversion. Sie machen es den Benutzern besonders leicht, auf ein Subversion-Repositorium zuzugreifen. Hier einige Anwendungen:

  • Cornerstone: Mac OS X, proprietär
  • KDEsvn: Linux (KDE), Open-Source
  • RapidSVN: Linux (Gnome), Windows, Open-Source
  • SmartSVN: Mac OS X, Windows, Linux, OS/2, proprietär
  • TkRev: Unix/Linux, Windows, und Mac OS X
  • Versions: Mac OS X, proprietär

Integriert in Dateibrowser:

Integriert in Entwicklungsumgebungen:

Integriert in Editoren:

Weiterhin sind Plugins für Visual Studio, Visual Studio Code, NetBeans, KDevelop, Code::Blocks, Vim, TYPO3 und ASCET verfügbar. Die globale Administration (Benutzerrechte, Protokolle, …) erfolgt anwendungsabhängig über dessen Oberfläche oder weiterhin über spezielle Subversion-eigene Konfigurationsdateien.

Um auf ein Subversion-Repositorium lesend zuzugreifen, bieten viele Open-Source-Projekte einen Link auf ihren Webdienst an. Dieser präsentiert in übersichtlicher Form Inhalte von Dateien, Verzeichnissen und Logbüchern; auch Datei-Vergleiche und Downloads sind möglich. Werden Subversion-Repositorien durch einen Apache-Webserver mit den Standard-Modulen mod_dav, mod_dav_svn und mod_authz_svn gehostet, ist neben dem vollen Zugriff über einen klassischen Subversion-Client auch ein Zugriff durch beliebige Browser über das WebDAV-Protokoll möglich. Eine komfortablere Browser-Darstellung und -Bedienung mit größerem Funktionsumfang ist über ViewVC, Trac, Web, VisualSVN, Beanstalk oder Atlassian Fisheye möglich. Diese bieten teilweise einen wesentlich größeren Funktionsumfang wie ein integriertes Bugtracking, projektweite Suchfunktionen, Team-Unterstützung für Code Reviews, die Integration weiterer Versionsverwaltungssysteme wie Git, Continuous Integration oder weiterer Team-unterstützende Funktionen Foren, Chatfunktionen und Wikis.

  • C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick: Versionskontrolle mit Subversion – Website des freien Buchprojektes.
  • C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick, Versionskontrolle mit Subversion, O'Reilly-Verlag, 3. Auflage April 2009, ISBN 978-3-89721-897-0.
  • Tobias Wassermann: Versionsmanagement mit Subversion, mitp-Verlag, 1. Auflage Oktober 2006, ISBN 978-3-8266-1662-4.
  • Frank Budzuhn: Subversion, Galileo Computing, 2. aktualisierte und erweiterte Auflage 2007, ISBN 978-3-89842-879-8.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Daniel Sahlberg: Apache Subversion 1.14.5 released. 9. Dezember 2024 (englisch, abgerufen am 9. Dezember 2024).
  2. a b c d In: Free Software Directory.
  3. subversion.apache.org.
  4. www.opencsw.org.
  5. a b c d e f The subversion Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 29. Dezember 2023).
  6. projects.apache.org. (abgerufen am 8. April 2020).
  7. subversion.tigris.org.
  8. falls bei der Erstellung des Installationspaketes die Internationalisierung berücksichtigt wurde, wie dies zum Beispiel bei alagazam.net der Fall ist. Die Ausgabesprache wird anhand der Systemvariablen LC_ALL automatisch bestimmt; alle Meldungen erscheinen auf Deutsch, falls (Beispiel für Windows:) LC_ALL = de_DE.CP1252 gesetzt ist. Pakete zur späteren Nachinstallation einer Sprache stehen beim Kommandozeilenclient nicht zur Verfügung. Diese Situation ist nicht zu verwechseln mit zu Subversion passenden graphischen Oberflächen wie TortoiseSVN, wo deutschsprachige Meldungen erst nach Installation eines Sprachpaketes zur Verfügung stehen.
  9. Subversion Buch Subversion’s History
  10. Celebrating a Decade of Open Source Leadership. Abgerufen am 20. August 2020.
  11. Apache Subversion Change Log Version 1.8.18. Apache Software Foundation, 10. Juli 2017, abgerufen am 8. August 2017 (englisch).
  12. Stefan Sperling: Release Announcement for Apache Subversion 1.8.18. Subversion Dev: [ANNOUNCE] Apache Subversion 1.8.18 released. Apache Software Foundation, abgerufen am 8. August 2017 (englisch).
  13. Apache Subversion Change Log Version 1.8.19. Apache Software Foundation, 10. August 2017, abgerufen am 20. November 2017 (englisch).
  14. Philip Martin: Release Announcement for Apache Subversion 1.8.19. [SECURITY][ANNOUNCE] Apache Subversion 1.8.19 released. Apache Software Foundation, 10. August 2017, abgerufen am 20. November 2017 (englisch).
  15. Apache Subversion Change Log Version 1.9.6. Apache Software Foundation, 5. Juli 2017, abgerufen am 8. August 2017 (englisch).
  16. Daniel Shahaf: Release Announcement for Apache Subversion 1.9.6. [ANNOUNCE] Apache Subversion 1.9.6 released. Apache Software Foundation, 6. Juli 2017, abgerufen am 8. August 2017 (englisch).
  17. Apache Subversion Change Log Version 1.9.7. Apache Software Foundation, 10. August 2017, abgerufen am 20. November 2017 (englisch).
  18. Daniel Shahaf: Release Announcement for Apache Subversion 1.9.7. [SECURITY][ANNOUNCE] Apache Subversion 1.9.7 released. Apache Software Foundation, 10. August 2017, abgerufen am 20. November 2017 (englisch).
  19. Apache Subversion 1.10 Release Notes. Apache Software Foundation, abgerufen am 19. Januar 2019 (englisch).
  20. CHANGES - Change log from /branches/1.10.x up to Version 1.10.8 with User-visible changes (Client-side bugfixes & Server-side bugfixes) and Developer-visible changes. Apache Software Foundation / The Subversion Team, 12. April 2022, abgerufen am 12. Mai 2022 (englisch).
  21. Mark Phippard: Release Announcement for Apache Subversion 1.10.8. [SECURITY][ANNOUNCE] Apache Subversion 1.10.8 released. Apache Software Foundation / The Subversion Team, 12. April 2022, abgerufen am 13. Mai 2022 (englisch).
  22. Apache Subversion 1.11 Release Notes. Apache Software Foundation, abgerufen am 19. Januar 2019 (englisch).
  23. Apache Subversion 1.12 Release Notes. Apache Software Foundation, abgerufen am 26. April 2019 (englisch).
  24. Apache Subversion 1.13 Release Notes. Apache Software Foundation, abgerufen am 11. Dezember 2019 (englisch).
  25. Apache Subversion 1.14 Release Notes. Apache Software Foundation, abgerufen am 28. Mai 2020 (englisch).
  26. CHANGES - Change log from /branches/1.14.x up to Version 1.14.2 with User-visible changes (Client-side bugfixes & Server-side bugfixes) and Developer-visible changes. Apache Software Foundation / The Subversion Team, 12. April 2022, abgerufen am 12. Mai 2022 (englisch).
  27. CHANGES - Change log from /branches/1.14.x up to Version 1.14.2 with User-visible changes (Client-side bugfixes & Server-side bugfixes) and Developer-visible changes. Apache Software Foundation / The Subversion Team, 12. April 2022, abgerufen am 12. Mai 2022 (englisch).
  28. Mark Phippard: Release Announcement for Apache Subversion 1.14.2. [SECURITY][ANNOUNCE] Apache Subversion 1.14.2 released. Apache Software Foundation / The Subversion Team, 12. April 2022, abgerufen am 13. Mai 2022 (englisch).
  29. STATUS - Status of Version 1.14.3: Candidate changes, Veto-blocked changes, and Approved changes. Apache Software Foundation / The Subversion Team, 12. Mai 2022, abgerufen am 12. Mai 2022 (englisch).
  30. STATUS - Status of Version 1.14.4: Candidate changes, Veto-blocked changes, and Approved changes. Apache Software Foundation / The Subversion Team, abgerufen am 24. März 2024.
  31. CHANGES - Change log from /branches/1.15.x up to Version 1.15.0 with User-visible changes (Client-side bugfixes & Server-side bugfixes) and Developer-visible changes. Apache Software Foundation / The Subversion Team, 12. Mai 2022, abgerufen am 12. Mai 2022 (englisch).
  32. Erläuterung der Bubble-Up-Methode als Grundlage „billiger Kopien“ in SVN (englisch)
  33. Subversion-Bugtracker: Issue 898 (Memento des Originals vom 1. Dezember 2002 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/subversion.tigris.org
  34. Problems with umlauts in file names on Mac OS X (Memento vom 31. August 2012 im Internet Archive)
  35. Apache Subversion Binary Packages. Abgerufen am 20. August 2020.