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 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 loaded in Putty's PAGENT. The original Plink.exe from Putty asks only via STDIN/STDOUT, which are redirected with SVN and therefore can not be answered.

If you use the SVN console client or another 3rd party tool (e.g. pysvnWorkbench), then download the 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 the SVN console command or a 3rd party tool, enter it (incl. path) in %APPDATA%/Subversion/config in the tunnels paragraph.
Example:
[tunnels]
ssh = C:/Program Files/Putty/plink_gui_062.exe -gui

Attention!!! For the path you have to use normal slashes (/), not backslashes (\).

To use a different user than the current Windows user with a svn+ssh URL a session in Putty is needed, which has the exact name as the host of the URL. So for the URL svn+ssh://svn.code.sf.net/p/<projectname>/code/trunk the Putty session must be named svn.code.sf.net.
For the host of the Putty session you should use the same host. 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 ein 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 in Putty's PAGENT geladen ist. Das Original Plink.exe von Putty fragt nur auf STDIN/STDOUT danach, welche aber bei SVN umgeleitet sind und daher nicht beantwortet werden kann.

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

Zum Verwenden des Plink mit GUI-Support mit dem SVN Kommandozeilen-Programm oder einem anderen Tool muss man es (inkl. Pfad) in %APPDATA%/Subversion/config im tunnels-Paragraphen eintragen.
Beispiel:
[tunnels]
ssh = C:/Program Files/Putty/plink_gui_062.exe -gui

Achtung!!! Bei dem Pfad müssen normale Schrägstriche (/) verwendet werden, also keine Backslashe (\).

Damit bei einer svn+ssh URL ein anderer Benutzer als der aktuelle Windows-Benutzer verwendet wird, muss man eine Session in Putty speichern, welche genau den Namen des Hosts der URL trägt. Also bei der URL svn+ssh://svn.code.sf.net/p/<projektname>/code/trunk muss die Putty-Session svn.code.sf.net heissen.
Als Host für die Putty-Session sollte man natürlich den selben Host 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