Start Kontakt

Subversion / CVS

Allgemeines

Als Versions-Kontrolle ist Subversion sehr empfehlenswert. Das kostenlose Online-Buch Version Control with Subversion ist eine hervorragende Einführung und Referenz.
Als Clients gibt es Win32Svn (ZIP-Paket ohne Installation), pysvn Workbench, RapidSVN oder auch TortoiseSVN.
Das Windows-Tool SubWCRev von TortoiseSVN hilft die aktuelle Revision der Working Copy mit in den Quellcode aufzunehmen. Leider gibt es keinen separaten Download, so dass man das Tool entweder durch Installation von TortoiseSVN erhält oder man extrahiert es aus den MSI-Installern mit msiexec /a TortoiseSVN-<version>-win[32|64]-svn-<version>.msi TARGETDIR=%TEMP%\TSVN[32|64] /qb.
Auch svnrev erledigt dies, aber auf leicht andere Weise über das Repository selbst. Ausserdem erlaubt es die Revision einer Gruppe von Dateien zu ermitteln.

Subversion ist ein Nachfolger von CVS. Für Windows gibt es das ursprüngliche Konsolenprogramm CVS (ohne cvsgui-Support) und das weiterentwickelte Paket CVSNT mit cvsgui-Support (ältere Version 2.5.03.2382 verwenden, um unerwünschten Werbetext in Commits zu vermeiden), plus optionale GUIs wie WinCVS (alle Downloads, z.B. 2.1.1) oder auch TortoiseCVS.
Zu CVS gibt es das kostenlose Online-Buch Open Source Development with CVS. Weitere gute Information gibt es bei SoureForge und dem CVS Wiki.

Seit 2007 entwickeln sich auch immer mehr dezentrale Versionierungs-Systeme (DVCS) wie z.B. git und Mercurial (deutsch Quecksilber, daher kurz nur Hg (chem. Symbol)) (Windows-Client TortoiseHg). Eine gute Übersicht liefert der Artikel Distributed Version Control Systems: A Not-So-Quick Guide Through, zwar schon älter aus 2008 aber lesenswert.
Für git gibt es zwei kostenlose Online-Bücher The Git Community Book und Pro Git. Zu Mercurial/Hg gibt es auch ein kostenloses Online-Buch.
Wer von Subversion auf git oder Mercurial/Hg umsteigen will, muss den wichtigsten Unterschied 3 Operationen (svn) gegen 5 Operationen (hg) verstehen.
Es gibt auch die Hg-Wiki-Seite Working with Subversion Repositories die sich damit beschäftigt wie man Mercurial/Hg mit einem Subversion-Repository nutzen kann. Dabei scheint die Variante "With MQ only" die einfachste zu sein, da man Hg nur für die eigenen lokalen Änderungen verwendet und dann wieder mit Subversion ins Repository überträgt.

Subversion clients: svn+ssh with different users / svn+ssh mit anderen Benutzern

english With Linux/Unix
Read the OpenSSH manual section for the client configuration file ssh_config. Create a host section for the host of the svn+ssh URL and include the directives User and IdentityFile in it.

english With Windows
Needed are Putty and a Plink version with GUI support, e.g. TortoiseSVN's TortoisePlink or try my older Plink with GUI support.
A Plink with GUI support is needed as it asks for the key's password in a separate window, e.g. if the key is not already loaded in Putty's PAGENT. The original Plink.exe from Putty asks only via STDIN/STDOUT, which are redirected with SVN and therefore cannot be seen nor answered.

If you use the SVN console client or another 3rd party tool (e.g. pysvnWorkbench), then use TortoiseSVN's TortoisePlink or try my older Plink with GUI support and place it in its final destination, e.g. into Putty's directory.

To use the Plink with GUI support for those tools, enter its full path in the tunnels paragraph of %APPDATA%/Subversion/config.
Examples:
[tunnels]
ssh = "C:/Program Files/TortoiseSVN/bin/TortoisePlink.exe"
ssh = "C:/Program Files/Putty/plink_gui_062.exe" -gui

Attention!!! For the path you have to use normal slashes (/), not backslashes (\). Also you cannot use environment variables like %ProgramFiles%.

To use a different user than the current Windows user with a svn+ssh URL either add it to the URL itself or add a Putty session which defines the exact same host name. So for the URL svn+ssh://svn.code.sf.net/p/<projectname>/code/trunk the Putty session must use the host name svn.code.sf.net.
The correct user has to be entered under Connection → Data. Furthermore the private key for this connection should be entered under Connection → SSH → Auth.

german Mit Windows
Benötigt werden Putty und eine Plink Version mit GUI-Support, z.B. TortoiseSVNs TortoisePlink oder mein älteres Plink mit GUI-Support.
Ein Plink mit GUI-Support wird benötigt, weil dieses nach dem Schlüssel-Passwort in einem eigenen Fenster fragt, z.B. falls der Schlüssel nicht bereits in Putty's PAGENT geladen ist. Das Original Plink.exe von Putty fragt nur auf STDIN/STDOUT nach, welche aber bei SVN umgeleitet sind und daher weder gesehen noch beantwortet werden können.

Falls man das SVN Kommandozeilen-Programm oder ein anderes Tool benutzt, dann TortoiseSVNs TortoisePlink oder mein älteres Plink mit GUI-Support herunterladen und im endgültigen Zielverzeichnis platzieren, z.B. ins Putty Verzeichnis.

Zum Verwenden des Plink mit GUI-Support zusammen mit dem SVN Kommandozeilen-Programm oder einem anderen Tool muss man dessen vollen Pfad im tunnels-Paragraphen von %APPDATA%/Subversion/config eintragen.
Beispiele:
[tunnels]
ssh = "C:/Program Files/TortoiseSVN/bin/TortoisePlink.exe"
ssh = "C:/Program Files/Putty/plink_gui_062.exe" -gui

Achtung!!! Bei dem Pfad müssen normale Schrägstriche (/) verwendet werden, also keine Backslashe (\). Außerdem kann man keine Umgebungsvariablen verwenden wie %ProgramFiles%.

Damit bei einer svn+ssh URL ein anderer Benutzer als der aktuelle Windows-Benutzer verwendet wird, muss man entweder den Benutzernamen den URL hinzufügen oder eine Session in Putty speichern, welche genau denselben Namen des Hosts aus der URL verwendet. Also bei der URL svn+ssh://svn.code.sf.net/p/<projektname>/code/trunk muss die Putty-Session den Hostnamen svn.code.sf.net verwenden.
Den korrekten Benutzer trägt man unter Connection → Data ein. Ausserdem sollte man den dazugehörigen privaten Schlüssel unter Connection → SSH → Auth eintragen.

Subversion server: svn+ssh

Siehe Kapitel 6 im Online-Buch "Version Control with Subversion".
Ausserdem habe ich selbst eine kleine Doku zu Subversion auf Debian geschrieben.

CVS clients: cvs+ssh

english Defining SSH private key to use with CVS
To use CVS with SSH you have two ways to do it:
The first way is recommended, just use a key agent (like Putty's Pageant) and load the corresponding key before connecting to the server. This way you can easily replace SSH keys without any changes to the CVSROOT of the working copy.
The second way is to hardcode a private key by specifying it in the CVSROOT, e.g. :ssh;privatekey='C:\Keys\mykey.pkk':user@module.cvs.sourceforge.net:/... (tested with CVSNT 2.5.03.2382).

In WinCVS 1.3 and later you can also define the SSH key for a new working copy in the Checkout Settings by clicking on the dots ("...") beside the CVSROOT string. Enter your normal user password (2x), then you can change the Privatekey property to the full path of your key file. This will generate the corresponding CVSROOT.
To change existing CVSROOT see WinCVS FAQ.


Top Start Kontakt