Apache Subversion

Apache Subversion ist ein Versionsnummer und Versionskontrollsystem als freie Software unter der Apache License. Entwickler verwenden Subversion auf aktuelle und historische Versionen von Dateien wie Quellcode, Webseiten und Dokumentationen zu halten. Ziel ist es, ein weitgehend kompatibler Nachfolger des weit verbreiteten Concurrent Versions System sein.

Die Free Software Community hat Subversion verwendet, weit verbreitet: zum Beispiel in Projekten wie Apache Software Foundation, Free Pascal, FreeBSD, GCC, Mono und Sourceforge. Google-Entwickler stellt auch Subversion Hosting für ihre freie Software-Projekte. CodePlex bietet Zugriff auf Subversion als auch auf andere Arten von Kunden.

Die Unternehmenswelt hat auch begonnen, Subversion erlassen. Ein Bericht 2007 von Forrester Research erkannt Subversion als alleiniger Marktführer in der Kategorie Standalone Software Configuration Management und als eine starke Darsteller in der Software-Konfiguration und Change Management Kategorie.

Subversion wurde von CollabNet Inc. im Jahr 2000 gegründet und ist heute ein Top-Level-Apache-Projekt gebaut und durch eine globale Gemeinschaft von Künstlern, verwendet.

Geschichte

CollabNet gründete das Subversion-Projekt im Jahr 2000 als ein Versuch, eine Open-Source-Version-Kontrollsystem, das ähnlich wie CVS betrieben, aber die fest die Bugs und versorgt einige Funktionen fehlen in CVS zu schreiben. Bis 2001 hatte Subversion ausreichend vorgeschoben, um einen eigenen Quellcode zu hosten, und im Februar 2004, Version 1.0 veröffentlicht wurde. Im November 2009 wurde in Subversion Apache Incubator akzeptiert: Dies war der Beginn des Prozesses, um eine Standard-Top-Level-Apache-Projekt geworden. Es wurde zu einem Top-Level-Apache-Projekt am 17. Februar 2010.

Eigenschaften

  • Verpflichtet sich als echte atomare Operationen.
  • Umbenannt / kopiert / verschoben / entfernt Dateien behalten die volle Versionsgeschichte.
  • Das System hält die Versionierung für Verzeichnisse, benennt, und Datei-Metadaten. Benutzer können zu bewegen und / oder ganze Verzeichnisbäume sehr schnell zu kopieren, bei voller Revisionsgeschichte.
  • Versionierung von symbolischen Links.
  • Native Unterstützung für binäre Dateien, mit platzsparenden binären diff Lagerung.
  • Apache Server als Netzwerk-Server, WebDAV / Delta-V zum Protokoll. Es gibt auch eine eigenständige Server-Prozess genannt svnserve, der ein eigenes Protokoll über TCP / IP verwendet.
  • Verzweigung ist eine billige Bedienung, unabhängig von Dateigröße
  • Nativ Client-Server, geschichteten Bibliotheksdesign.
  • Client / Server-Protokoll sendet diffs in beide Richtungen.
  • Kosten proportional zur Größe ändern, um nicht zu Datengröße.
  • Parsable Ausgang, einschließlich XML-Protokollausgabe.
  • Kostenlose Software lizenziert - Apache-Lizenz seit dem Release 1.7; frühere Versionen verwenden ein Derivat der Apache Software License 1.1.
  • Internationalized Programmmeldungen.
  • Sperren von Dateien für nicht zusammenführbaren Dateien.
  • Pfadbasierte Autorisierung.
  • Sprachbindungen für C #, PHP, Python, Perl, Ruby und Java.
  • Voll MIME-Unterstützung - Benutzer können Anzeigen oder Ändern der MIME-Typ für jede Datei, die mit der Software zu wissen, welche MIME-Typen können ihre Unterschiede zu früheren Versionen gezeigt haben.
  • Merge Tracking - Führt zwischen Zweigen nachgeführt, ermöglicht dies automatisch Verschmelzung zwischen Zweigen, ohne zu sagen, was Subversion müssen zusammengeführt werden.
  • Änderungslisten, um Commits zu begehen Gruppen zu organisieren.

Repository-Typen

Subversion bietet zwei Arten von Repository-Lagerung.

Berkeley DB

Die ursprüngliche Entwicklung von Subversion verwendet die Berkeley DB-Paket. Subversion hat einige Einschränkungen mit Berkeley DB-Auslastung, wenn ein Programm, das die Datenbankzugriffe abstürzt oder beendet gewaltsam. Kein Datenverlust oder Beschädigung auftritt, aber das Repository bleibt offline, während Berkeley DB Replays die Zeitschrift und bereinigt ausstehende Sperren. Der sicherste Weg, um Subversion mit einer Berkeley-DB-Repository verwenden, umfasst einen einzelnen Server-Prozess ausgeführt als ein Benutzer.

FSFS

Im Jahr 2004 wurde eine neue Speicheruntersystem entwickelt und benannt FSFS. Es arbeitet schneller als die Berkeley DB-Backend auf Verzeichnisse mit einer großen Anzahl von Dateien und benötigt weniger Speicherplatz, da weniger Protokollierung.

Beginnend mit Subversion 1.2, wurde FSFS die Standarddatenspeicher für neue Repositories.

Die Etymologie von "FSFS" auf die Verwendung des Begriffs "Dateisystem" für die Repository-Speichersystem von Subversion basiert. FSFS speichert seinen Inhalt direkt in das Dateisystem des Betriebssystems, anstatt ein strukturiertes System wie Berkeley DB. Somit ist es ein "Filesystem oben auf dem Filesystem".

Repository-Zugriff

Zugriff auf Subversion-Repositorys Ort durch finden kann:

  • Lokalen Dateisystem oder Netzwerkdateisystem, indem Client direkt abgerufen. Dieser Modus verwendet den file: /// Pfad Zugriffsschema.
  • WebDAV / Delta-V mit der mod_dav_svn Modul für Apache 2 Dieser Modus verwendet die Zugriffsregelung bzw. für sichere Verbindungen mit SSL.
  • Custom "svn" Protokoll, mit Klartext oder über TCP / IP. Dieser Modus verwendet entweder die svn: // host / path Zugriffsregelung für unverschlüsselte Transport oder svn + ssh: // host / path Schema für Tunneling über ssh.

Alle drei Mittel können sowohl FSFS und Berkeley DB-Repositories zugreifen.

Alle 1.x-Version von einem Client kann mit jedem 1.x-Server zu arbeiten. Neuere Clients und Server verfügen über zusätzliche Funktionen und Leistungsfähigkeit, sondern müssen Fallback-Unterstützung für ältere Clients / Servern.

Schichten

Intern besteht aus einem Subversion-System mehrere Bibliotheken als Schichten angeordnet sind. Jede eine bestimmte Aufgabe und ermöglicht Entwicklern, ihre eigenen Werkzeuge auf dem gewünschten Niveau an Komplexität und Spezifität erzeugen.

Dateisystem

Man kann die Subversion-Dateisystem als "zweidimensionale" anzuzeigen. Zwei Koordinaten werden verwendet, um Dateisystem-Produkte eindeutig zu adressieren:

  • Weg
  • Überarbeitung

Jede Revision in einem Subversion-Dateisystem hat seine eigene Wurzel, die verwendet wird, um den Inhalt zu dieser Revision zuzugreifen. Dateien werden als Links auf der letzten Änderung gespeichert werden; also ein Subversion-Repository ist sehr kompakt. Verbraucht das System Speicherplatz proportional zu der Anzahl von Änderungen, soweit sie nicht auf die Anzahl der Revisionen.

Der Subversion-Dateisystem verwendet Transaktionen, Änderungen Atom halten. Eine Transaktion arbeitet auf einer bestimmten Revision des Dateisystems, die nicht unbedingt das neueste. Die Transaktion hat einen eigenen Wurzel, wo Änderungen vorgenommen werden. Es ist dann entweder engagiert und wird die neueste Version oder abgebrochen wird. Die Transaktion ist eigentlich eine langlebige Dateisystemobjekt; ein Kunde braucht nicht zu begehen oder Abbruch einer Transaktion selbst, sondern es kann auch beginnen, eine Transaktion, den Ausgang, und dann kann wieder öffnen Sie die Transaktion und weiter zu verwenden. Mehrere Clients können die gleiche Transaktion zusammen auf atomarer Änderung zugreifen und damit arbeiten, wenn auch keine bestehenden Kunden aussetzen diese Fähigkeit.

Immobilien

Ein wichtiges Merkmal des Subversion-Dateisystem ist Eigenschaften: einfache Name = Wert-Paare von Text. Eigenschaften treten auf Dateisystem-Einträge. Diese werden ebenso wie andere Änderungen am Dateisystem versioniert. Benutzer können beliebige Eigenschaft, die sie zu legen, und der Subversion-Client verwendet eine Reihe von Eigenschaften, die sie mit Vorwahlen 'svn:'.

Subversion nutzt auch Objekte Revisionen selbst. Wie die oben genannten Eigenschaften auf Dateisystem-Einträgen die Namen sind völlig willkürlich, mit dem Subversion-Client mit bestimmten Eigenschaften mit dem Präfix 'svn:'. Allerdings sind diese Eigenschaften nicht versioniert und können später geändert werden.

Verzweigen und Markieren

Subversion verwendet das Inter-File Branching-Modell von Perforce, um Niederlassungen und Tagging implementieren. Ein Zweig ist eine separate Leitung der Entwicklung. Tagging bezieht sich auf die Kennzeichnung des Repository an einem bestimmten Punkt in der Zeit, so dass es leicht in der Zukunft gefunden werden. In Subversion, ist der einzige Unterschied zwischen den Zweigen und Tags, wie sie verwendet werden.

Ein neuer Zweig oder ein Tag wird mit Hilfe der "svn copy" -Befehl, der anstelle des nativen Betriebssystem-Mechanismus verwendet werden soll, eingestellt. Das kopierte Verzeichnis wird auf die ursprüngliche im Repository verknüpft, um seine Geschichte zu bewahren, und die Kopie dauert sehr wenig zusätzlichen Platz im Projektarchiv.

Alle Fassungen in jedem Zweig halten die Geschichte der Datei bis zu dem Punkt der Kopie, sowie alle Änderungen seit. Man kann "merge" Änderungen zurück in den Kofferraum oder zwischen den Zweigen.

Einschränkungen und Probleme

Ein bekanntes Problem in Subversion wirkt sich auf die Implementierung der Datei- und Verzeichnis-Umbenennungsvorgang. Ab 2014 führt Subversion die Umbenennung von Dateien und Verzeichnissen als "Kopieren", um den neuen Namen, gefolgt von einem "löschen" des alten Namens. Nur die Namen ändern, werden alle Daten im Zusammenhang mit der Versionsgeschichte bleibt gleich, und Subversion immer noch den alten Namen in älteren Versionen der "Baum". Jedoch kann Subversion verwirrt werden, wenn ein Umzug Konflikte mit Änderungen an anderer Stelle gemacht, sowohl für regelmäßige Commits und beim Zusammenführen von Zweigen. Die Subversion 1.5 Versionen behoben einige dieser Szenarien während andere blieb problematisch. Die Subversion 1.8 Versionen behoben, einige dieser Probleme, indem sie bewegt sich einen erstklassigen Betrieb auf dem Client, aber es wird immer noch als Kopie behandelt + im Repository löschen.

Ab 2013 fehlen einige Subversion-Repository-Administration und Management-Funktionen. Zum Beispiel kann jemand wünschen, das Repository zu bearbeiten, um alle historischen Aufzeichnungen bestimmter Daten dauerhaft zu entfernen. Subversion verfügt nicht über eine integrierte Unterstützung, um dies einfach zu erreichen.

Subversion speichert zusätzliche Kopien von Daten auf der lokalen Maschine, die ein Problem mit sehr großen Projekten oder Dateien werden können, oder wenn die Entwickler arbeiten an mehreren Niederlassungen gleichzeitig. In Versionen vor 1.7 these.svn Verzeichnisse auf der Client-Seite könnte durch unkluge Benutzeraktivitäten wie globale Suchen / Ersetzen-Vorgänge beschädigt werden. Ab Version 1.7 von Subversion verwendet eine einzelne centralized.svn Ordner pro Arbeitsbereich.

Subversion nicht die Änderungszeiten von Dateien zu speichern. Als solcher, eine Datei aus einem Subversion-Repository überprüft die "aktuellen" Datum haben und eine Datei in das Repository eingecheckt wird das Datum des Check-in haben. Dies ist vielleicht nicht immer, was gewünscht wird. Um diese Tools von Drittanbietern vorhanden, die für die Erhaltung der Änderungszeit und anderen Dateisystem-Metadaten ermöglichen mildern. Allerdings geben checkten Dateien ein aktuelles Datum ist ebenso wichtig dies ist, wie Tools wie make wird Bekanntmachung eines geänderte Datei für den Wiederaufbau zu nehmen.

Subversion verwendet eine zentralisierte Versionskontrolle-Modell. Ben Collins-Sussman, einer der Designer von Subversion, glaubt, dass ein zentralisiertes Modell würde helfen, zu verhindern "unsicher Programmierer" vom Verstecken ihrer Arbeit von anderen Teammitgliedern. Einige Benutzer von Versionskontrollsystemen finden Sie in der zentralisierten Modells als nachteilig; berühmt, angegriffen Linus Torvalds Modell Subversion und seine Entwickler.

Während Subversion speichert Dateinamen im Unicode-Format, ist es nicht an, ob Unterkomposition oder Zersetzung ist für bestimmte Sonderzeichen verwendet. Damit Dateien im SVN-Clients auf einigen Betriebssystemen laufen hinzugefügt verwenden Zersetzungs Kodierung, während Clients auf anderen Betriebssystemen verwenden Komposition Kodierung, mit der Folge, dass diese Zeichen mit Akzent nicht korrekt, wenn die lokale SVN-Client wird nicht mit der gleichen Kodierung wie angezeigt der Client verwendet, um die Dateien hinzuzufügen.

Subversion-Tags und Zweigen

Revisionsnummern lassen sich nur schwer in jedem Versionskontrollsystem zu erinnern. Aus diesem Grund bieten die meisten Systeme symbolischen Schlagwörter als benutzerfreundliche Verweise auf sie. Subversion verfügt nicht über eine solche Funktion und welche Dokumentation empfiehlt stattdessen zu verwenden ist ganz anders als in der Natur. Anstelle der Umsetzung Tags als Bezugnahmen auf die Punkte in der Geschichte, Subversion empfiehlt, Snapshot-Kopien in einem bekannten Unterverzeichnis in dem Raum des Repository-Baum. Nur wenige vordefinierte Referenzen stehen zur Verfügung: HEAD, BASE, PREV und engagiert.

Diese Geschichte-Pausenvorsprung verfügt über mehrere Probleme:

1. Wenn ein Snapshot erstellt wird, das System benötigt keine spezielle Bedeutung für den Namen des Tags / snapshot zuweisen. Dies ist der Unterschied zwischen einer Kopie und eine Referenz. Die Revision wird aufgezeichnet und die Momentaufnahme kann durch URL zugegriffen werden. Dies macht einige Operationen weniger bequem und andere unmöglich. Zum Beispiel hat ein naiver nicht funktionieren; es ist etwas komplizierter als das, um zu erreichen, dass der Benutzer zu kennen und Eingangs URL / Pfade zu den Snapshots, anstatt nur den Namen :. Andere Operationen, wie zum Beispiel sind einfach unmöglich.

2. Wenn zwei Objekttypen leben in der Repository-Baum, ein "Kampf an die Spitze" erfolgen kann. Mit anderen Worten, ist es oft schwierig, zu entscheiden, auf welcher Ebene, um die "" Unterverzeichnis zu erstellen:

3. Stichworte, von ihren konventionellen Definition sind beide nur lesbar und leicht, auf dem Repository und Client. Subversion Kopien werden nicht schreibgeschützt ist, und während sie sind leicht auf dem Repository, sind sie unglaublich schwere auf dem Client.

Um solche Probleme zu lösen, wurden Poster an den Subversion-Mailinglisten ein neues Feature namens "Etiketten" oder "Aliasnamen" vorgeschlagen. SVN Etiketten würden stärker ähneln die "Tags" von anderen Systemen wie CVS oder Git. Die Tatsache, dass Subversion hat globalen Revisionsnummern öffnet den Weg zu einer sehr einfachen Label- & gt; Umsetzung Revision. Doch ab 2013, keine Fortschritte erzielt worden sind und symbolischen Tags sind nicht in der Liste der meistgesuchten Funktionen.

Entwicklung und Umsetzung

CollabNet hat sein Engagement mit Subversion fort, aber das Projekt läuft als eigenständige Open Source Community. Im November 2009 wurde das Projekt in den Apache Incubator angenommen, mit dem Ziel, einen Teil der Bemühungen der Apache Software Foundation zu werden. Seit März 2010 wird das Projekt offiziell als Apache Subversion bekannt, wobei ein Teil der Apache Top-Level-Projekte.

Im Oktober 2009 kündigte WANdisco die Einstellung von Kern Subversion-Committer als der Umzug in eine große Unternehmenssponsor des Projektes zu werden. Dazu gehörten Hyrum Wright, Präsident der Subversion Corporation und Release-Manager für das Subversion-Projekt seit Anfang 2008, der das Unternehmen verbunden, um ihre Open-Source-Team zu führen.

Die Subversion Open Source Community bietet keine Binärdateien, aber potenzielle Nutzer können Programme von Freiwilligen herunterladen. Während das Subversion-Projekt beinhaltet nicht eine offizielle grafische Benutzeroberfläche für die Verwendung mit Subversion, haben Dritte eine Reihe von verschiedenen GUIs zusammen mit einer Vielzahl von zusätzlichen Zusatzsoftware entwickelt.

Arbeiten im Jahr 2009 angekündigt, enthalten SubversionJ und Umsetzung des 'Auslöschen' Befehl, ähnlich dem von Perforce zur Verfügung gestellt. Beide Erweiterungen wurden von WANdisco gesponsert.

Die Subversion-Committer haben in der Regel zumindest ein oder zwei neue Funktionen in aktiver Entwicklung zu einem beliebigen Zeitpunkt. Die 1.7 Version von Subversion im Oktober 2011 enthalten einen stromlinienförmigen Transport zur Verbesserung der Leistung und eine umgeschrieben Arbeitskopie-Bibliothek.

(0)
(0)
Kommentare - 0
Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha