TortoiseSVN ist als 64-Bit Version verfügbar. Was den 64-Bit Neuling Alex oder 64-Bit-Abstinenzler Marci durchaus mit mir zu einigen Diskussionen führen lassen hat. Argumente gegen 64-Bit sind unter anderem, das stimmt auch, eine derzeit schlechtere Unterstützung durch Treiber aber auch, dass nicht alle Anwendungen auch für 64-Bit verfügbar sind. Doch das letztere Argument ist im Prinzip keines, weil unter einem 64-Bit Windows Betriebssystem in der Regel alle 32-Bit Anwendungen auch ausführbar sind. Das liegt auch an dem Erfolg von AMD64 von AMD, deren Ansatz in eben Richtung Kompatibilität cleverer war, als der von Intel mit IA-64 und dazu geführt hat, dass Intel diese Technologie als Intel 64 (EMT64, IA-32e) von AMD lizensiert hat.
Also, eo ipso, sollte ein TortoiseSVN 32-Bit auch unter einem 64-Bit Windows Betriebssystem ausgeführt werden können und kann es auch. Doch hier gibt es einige Besonderheiten zu beachten, gerade auch im Hinblick auf die Konsistenz der Projektarchive (Repositories). Als grundsätzliche Vorgehensweise lässt hier festhalten, dass hinsichtlich 32-Bit oder 64-Bit
Berkeley Datenbanken mit der TortoiseSVN-Variante angesprochen werden sollten, mit dem diese erstellt wurden.
Ein x-Bit Prozess, braucht ein x-Bit TortoiseSVN
Das heißt, dass eine mit TortoiseSVN 32-Bit erstellte Datenbank auch mit TortoiseSVN 32-Bit aufgerufen werden sollte. Eine mit TortoiseSVN 64-Bit erstellte Datenbank demzufolge mit einem TortoiseSVN 64-Bit. Doch so einfach ist es nicht, da TortoiseSVN sich in den Windows Explorer einklinkt und darüber die Funktionalität wie Auschecken oder Einchecken zur Verfügung stellt. Der Windows Explorer ist ein 64-Bit-Prozess und kann dort eben nicht TortoiseSVN 32-Bit (x86) Funktionalität wie z. B. die Icons zu Ordnern mit Projektarchiven nutzen. Das kann der Windows Explorer nur in Verbindung mit einem TortoiseSVN, das ebenfalls ein 64-Bit Prozess ist. Kurz um, wer eine Integration von TortoiseSVN mit dem Windows Explorer wünscht, muss TortoiseSVN in der 64-Bit Variante installieren.
Doch nicht alle Anwendungen sind 32-Bit Prozesse, eben wegen der oben erwähnten Kompatibilität und so wären diese Anwendungen von der Funktionalität von TortoiseSVN 64-Bit wiederum ausgeschlossen. Alex, der Total Commander gerne mit Schweizer Taschenmesser für den PC bezeichnet, war genau hier in diese Problematik gekommen. Meine Empfehlung, einfach TortoiseSVN 32-Bit ebenfalls zu installieren hat erstaunt, aber ist genau die Lösung. So werden im Windows Explorer als auch im Total Commander entsprechende Icons angezeigt. Die Vorgehensweise für Windows x64 Betriebssysteme stellt sich also so dar, einfacherhalber immer beide Varianten von TortoiseSVN zu installieren.
So kann sowohl der Windows Explorer als auch Total Commander Icons anzeigen.
Berkeley Datenbanken sind nicht x-Bit kompatibel
Im Prinzip fängt hier die eigentliche Problematik gerade erst an. Denn es geht nicht nur um die lokalen Projektverzeichnisse, sondern auch um die Berkeley Datenbanken (BDB). Hier gilt die obige Empfehlung, dass Projektarchive mit dem TortoiseSVN angesprochen werden sollten, mit dem sie erstellt wurden. Es heißt nun aber, dass ein Windows Explorer 64-Bit auch ein TortoiseSVN 64-Bit aufrufen wird und so die Berkeley Datenbank ansprechen wird. Ist diese Datenbank mit einem TortoiseSVN 32-Bit erstellt worden, stützt TortoiseSVN 64-Bit dann im besten Fall einfach ab, im schlimmsten Fall wird vielleicht die Berkeley Datenbank inkonsistent und kann nicht mit entsprechenden Werkzeugen repariert werden. Eine Lösung ist hier, einen 32-Bit Prozess dazwischen zu schalten.
Am unkompliziertesten ist dabei Apache oder svnserve, die je als ein 32-Bit Prozess laufen. TortoiseSVN 64-Bit selbst greift nun über ein von der Prozessorarchitektur (Wortbreite) unabhängiges Protokoll über Apache bzw. svnserve auf Berkeley Datenbanken zu. Ein TortoiseSVN 32-Bit wiederum kann auf Apache, svnserve oder direkt auf die Berkeley Datenbank zugreifen.

Problematisch daran ist, dass derzeit Projektverzeichnisse mit TortoiseSVN erstellt werden können, ohne dass Hinweise bzw. Warnungen auf die Problematik kommen. Eine Berkeley Datenbank, die mit Hilfe des Windows Explorers über das Kontextmenü von TortoiseSVN erstellt wird, ist dann also folglich auch für 64-Bit gedacht und mit 32-Bit nicht mehr kompatibel¹. Es sind leicht mehr als eine Konstellation denkbar, bei dem dieser Sachverhalt zu Komplikationen führen kann. Sei es, dass mit einem 32-Bit Apache bzw. svnserve auf eine mit TortoiseSVN 64-Bit erstellte Berkeley Datenbank zugegriffen wird. Sei es, dass eine mit einem TortoiseSVN 64-Bit erstellte Berkeley Datenbank vielleicht irgendwann später von einem 64-Bit Windows Betriebssystem auf ein 32-Bit Windows Betriebssystem transferiert wird.

TortoiseSVN unter 64-Bit Windows Betriebssystemen – ein Vorschlag
Der Vorschlag ist prinzipiell oben schon erläutert:
- Berkeley Datenbanken sind immer mit einem 32-Bit TortoiseSVN zu erstellen²
- unter 64-Bit Betriebssystemen ist die 32- und 64-Bit Variante von TortoiseSVN zu installieren
- auf Berkeley Datenbanken ist nicht per file:///, sondern per Apache oder svnserve zuzugreifen
Die beiden ersten Punkte sind leicht umsetzbar, ein wenig kompliziert wird es aber beim dritten Punkt: Dem Zugriff auf die Berkeley Datenbanken per Apache oder svnserve. Während die erste Möglichkeit in der TortoiseSVN-Dokumentation gut beschrieben ist, ist es meiner Meinung nach nicht bei der zweiten.
Eine weitere Lösung ist übrigens Subversion – Konvertierung BDB (Berkeley) nach FSFS.
Folgende Schritte sind für einen Zugriff per svnserve durchzuführen:
- 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 - die Eingabeaufforderung ist als Administrator zu starten (siehe z. B. hier für Vista)
- auf der Eingabeaufforderung ist mit
cd C:\Program Files (x86)\Subversion in dieses Verzeichnis zu wechseln - jetzt ist in der Eingabeaufforderung
svnserve.exe --daemon einzugeben - wenn auch andere Rechner Zugriff erhalten sollen, muss die Frage einer Firewall, ob Port 3690 freigegeben werden soll, bestätigt bzw. der Port manuell freigegeben werden
- svnserve ist nun mit der Eingabe von "STRG + C" in der Eingabeaufforderung zu beenden
- dann ist in der Eingabeaufforderung
sc create SVNServer binPath= "c:\program files (x86)\subversion\bin\svnserve.exe --service --root d:\\repositories\\svn" start= auto error= normal depend= tcpip DisplayName= "Subversion Server" einzugeben - dabei steht c:\program files... für das Verzeichnis, in das Subversion extrahiert wurde
- und d:\\repositories\\svn für das Verzeichnis, in dem die Berkeley Datenbanken liegen
- und SVNServer für den Namen des Dienstes
- und DisplayName= "Subversion Server" für die Beschreibung des Dienstes
- der Dienst kann mit
sc delete SVNServer wieder gelöscht werden - vorher ist dafür
sc stop SVNServer einzugeben
- es müssen Zugriffsrechte eingerichtet werden in d:\\repositories\\svn
- in jedem conf-Verzeichnis und dort bei der Datei svnserve.conf
- unter dem Punkt [general] ist z. B. für die Zugriffsrechte
"Anonym: kein Zugriff" und
"Autorisiert: Schreibzugriff"
folgendes zu schreiben:
anon-access = none
auth-access = write
password-db = ../../passwd - die Datei mit den Kennwörtern muss in diesem Beispiel bei z. B.
D:\Repositories\SVN\Bilder\conf
in D:\Repositories\SVN liegen
und bei obiger Eingabe "sc create..." ist als Verzeichnis d:\\repositories\\svn zu verwenden - in der Datei passwd steht dann etwas wie
[users]
Richard Keep = WRHGX7DXQFTQ9TDS
und Richard Keep stellt dabei den Benutzer und WRHGX7DXQFTQ9TDS sein Kennwort dar
- svnserve kann durchaus bei dem Aufruf einer nicht existenten Berkeley Datenbank abstürzen und sollte auch daher automatisch neu gestartet werden (Beschreibung für Vista)
- auf Start klicken
- auf Systemsteuerung klicken
- "Dienste" eingeben (klassische Ansicht)
- Lokale Dienste anzeigen anklicken
- Subversion Server doppelt anklicken und auf den Reiter Wiederherstellung klicken
- dort bei Erster Fehler, Zweiter Fehler und Weitere Fehler alles auf Dienst neu starten stellen
- OK anklicken
- nun können die Projektverzeichnisse ausgecheckt werden mit
svn://[Rechnername oder IP]/Berkeley Datenbankname also z. B.
¹ Konvertierungen der BDB sind möglich, aber enthalten auch eben Risikopotential
² Vorlagen, nur umzubenennen: BDB_Vorlage x86.zip (89,71 KB), BDB_Vorlage x64.zip (44,96 KB)