Verzeichnisversionen

Subversion verfolgt Baumstrukturen, nicht nur Dateiinhalte. Dies ist einer der Hauptgründe, warum Subversion geschrieben wurde, um CVS zu ersetzen.

Für Sie als ehemaligen CVS-Benutzer bedeutet das:

Lassen Sie uns den letzten Punkt etwas genauer erörtern. Die Versionierung von Verzeichnissen ist ein ernstes Problem; da wir Arbeitskopien aus gemischten Revisionen zulassen möchten, gibt es einige Einschränkungen beim Ausreizen dieses Modells.

Vom theoretischen Standpunkt definieren wir Revision 5 des Verzeichnisses foo als eine bestimmte Ansammlung von Verzeichniseinträgen und Eigenschaften. Angenommen, wir beginnen nun damit, Dateien dem Verzeichnis foo hinzuzufügen und wegzunehmen und diese Änderungen dann zu übergeben. Es wäre eine Lüge, zu behaupten, dass wir immer noch Revision 5 von foo hätten. Wenn wir allerdings die Revisionsnummer von foo nach der Übergabe erhöht hätten, wäre das auch eine Lüge; es könnten noch weitere Änderungen an foo vorliegen, die wir aber nicht mitbekommen haben, da wir noch nicht aktualisiert haben.

Subversion behandelt dieses Problem, indem es stillschweigend übergebene Hinzufügungen sowie Löschungen im .svn-Bereich mitverfolgt. Wenn Sie schließlich svn update aufrufen, wird alles in Bezug auf das Projektarchiv glattgezogen und die neue Revisionsnummer des Verzeichnisses korrekt vergeben. Daher kann erst nach einer Aktualisierung gesagt werden, dass es eine vollständige Verzeichnisrevision gibt. Meist wird Ihre Arbeitskopie unvollständige Verzeichnisrevisionen enthalten.

Auf ähnliche Art ergibt sich ein Problem, wenn Sie versuchen, Eigenschafts-Änderungen an einem Verzeichnis zu übergeben. Normalerweise würde die Übergabe die lokale Revisionsnummer erhöhen, was jedoch eine Lüge wäre, da Hinzufügungen oder Löschungen vorhanden sein könnten, die das Verzeichnis noch nicht mitbekommen hat, da es nicht aktualisiert worden ist. Deshalb dürfen Sie Änderungen an Verzeichnis-Eigenschaften nicht übergeben, bevor Sie das Verzeichnis aktualisiert haben.

Für eine weitergehende Erörterung der Einschränkungen der Verzeichnisversionierung, siehe „Arbeitskopien mit gemischten Revisionen“.