Wie ich im vorherigen Blogeintrag geschrieben habe, kann es bei der Verwendung von Berkeley Datenbanken im Zusammenhang mit TortoiseSVN bei den 32-Bit bzw. 64-Bit Windows Betriebssystemen Probleme geben. Es gibt eine weitere Möglichkeit, neben der im vorherigen Blogeintrag beschriebenen Methode, diese Probleme zu vermeiden: Das native Dateisystem FSFS. Es ist unempfindlich gegenüber der beschriebenen Problematik und hat ein paar weitere Vorteile wie:
- das FSFS kann von Nur-Lese-Datenträgern gemountet werden,
- das Repository ist kleiner gegenüber einer Berkeley Datenbank,
- beim Einchecken von großen Dateien ist es schneller als mit einer Berkeley Datenbank,
- hat keine binäre Inkompatibilitäten in Abhängigkeit von der verwendeten Version,
- oder z. B.: The most important distinction, however, is FSFS's imperviousness to "wedging" when something goes wrong. If a process using a Berkeley DB database runs into a permissions problem or suddenly crashes, the database can be left in an unusable state until an administrator recovers it. If the same scenarios happen to a process using an FSFS repository, the repository isn't affected at all. At worst, some transaction data is left behind.
Quelle: svnbook.red-bean.com, Version Control with Subversion - in Subversion 1.5 gibt es für FSFS ein neues Leistungsmerkmal, genannt "sharding", bei welchem die vielen kleineren Dateien in wenige grössere gepackt werden; um dieses jedoch zu nutzen, ist erneut die unten beschriebene Prozedur notwendig (aber gerade bei NTFS lohnt sich es, gerade auch wegen der Geschwindigkeit, nicht nur vom Platzbedarf her)¹
und bei einigen wenigen Nachteilen wie:
- bei älteren Dateisystemen mit tausenden Dateien in pro Verzeichnis können Skalierungsprobleme auftreten.
Daher habe ich Berkeley Datenbanken eines aktuellen Projektes dazu einfach nach FSFS konvertiert. Jetzt kann sowohl per TortoiseSVN 32- oder TortoiseSVN 64-Bit mittels svnserve bzw. Apache als auch direkt auf FSFS² zugegriffen werden.
Folgende Schritte sind für die Konvertierung zu erledigen:
- sehr viel Zeit mitbringen und Backup der Berkeley Datenbanken anlegen ;)
- Subversion ist herunterzuladen, dabei reichen die "Binaries", der "Installer" ist nicht nötig
- der Inhalt ist zu entpacken, z. B. nach
C:\Program Files (x86)\Subversion - Start anklicken, Eingabeaufforderung aufrufen (siehe z. B. hier für Vista)
- nur einmalig eingeben:
mk d:\dump
cd C:\Program Files (x86)\Subversion\bin
und danach für jede Berkeley Datenbank eingeben (bilder steht für die Berkeley Datenbank):
svnadmin dump d:\repositories\svn\bilder > d:\dumps\repo.dump
rmdir d:\repositories\svn\bilder /q /s
mkdir d:\repositories\svn\bilder
svnadmin create d:\repositories\svn\bilder --fs-type fsfs
svnadmin load d:\repositories\svn\bilder < d:\dumps\repo.dump
del d:\dumps\repo.dump
¹ vielen Dank an Stefan Küng für den Hinweis, siehe auch Implement sharding for FSFS
² FSFS ist genau genommen keine Datenbank, sondern nur ein natives Dateisystem