Subversion
Versionsverwaltung für Sourcecode.
Update: Inzwischen verwende ich nur noch git
Binaries für OSX
Erhältlich waren diese von open.collab.net - inzwischen nicht mehr erreichbar.
Setup
Eine gute Schritt für Schritt Anleitung gab es unter: www.bombaydigital.com/arenared/2005/10/27/1
svnadmin create /xxx/Repository/
svnadmin create /xxx/Repository/rsys_fields
svn import /xxx/htdocs/dev/typo3conf/ext/rsys_fields/ file:///xxx/Repository/rsys_fields/ -m "Initial import"
Update
Ich habe von 1.4 auf 1.55 geupdated. Beim Aufruf von svn wurde jedoch das eingebaute svn 1.4 gestartet. Ich habe die Dateien verschoben, dass sie nicht mehr im Pfad sind:
cd /usr/bin/
mv svn* _MOVED/
Die installierten sind nun unter /usr/local/bin/svn
Subversion Clients
Webbasierte Clients
Apache
Apache ermöglicht den Zugriff auf Repositories via http, was viele Clients benötigen. In die Apache Konfiguration folgendes:
# svn applications
<Location /svn/applications>
AllowOverride All
Options +Includes Indexes FollowSymLinks
DAV svn
SVNPath /rsys-repositories/rsys-applications
SVNAutoversioning off
AuthType Basic
AuthName "Rootsystem Subversion Repository"
AuthUserFile xxx.passwd
Require valid-user
# Make it look nicer
SVNIndexXSLT "/repos-web/view/repos.xsl
</Location>
ViewVC
Ich musste die Python Skripte austauschen:
# von
/opt/subversion/lib/svn-python
# nach
/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/libsvn
Die alten sind im Verzeichniss _MOVED gesichert. Das bin/cgi/viewvc.cgi wurde bei mir eingebunden mit einem Eintrag in httpd.conf:
ScriptAlias /viewvc /usr/local/viewvc-1.0.7/bin/cgi/viewvc.cgi
Konfiguration in /usr/local/viewvc-1.0.7/viewvc.conf und Styles anpassen in templates/docroot/styles.css
OSX Clients
SvnX
Ein mässig nützliches Frontend: http://www.apple.com/downloads/macosx/development_tools/svnx.html
rapidsvn
Schon etwas besser: http://rapidsvn.tigris.org
Eclipse
SVN Projekt anlegen
New->Project: Use existing repository location: http://localhost/svn/typo3
Browse: projectname/trunk
Check out as project with the name specified
SVN Header Informationen in Source file schreiben
In den Header des Sourcefiles folgendes schreiben:
/* SVN FILE: $Id$ */
/**
* Project Name : Project Description
*
* @package className
* @subpackage subclassName
* @author $Author$
* @copyright $Copyright$
* @version $Revision$
* @lastrevision $Date$
* @modifiedby $LastChangedBy$
* @lastmodified $LastChangedDate$
* @license $License$
* @filesource $URL$
*/
Eclipse: Preferences->Team->SVN->Properties Configuration->Automatic Properties
Filename: *.*
svn:keywords=Date Author Id Copyright Revision LastChangedBy LastChangedDate URL
copyright="(C) 2009 Rootsystem"
SVN Kommandozeile
Um dasselbe für die Kommandozeile zu erreichen folgendes in die Konfigurationsdatei ~/.subversion/config schreiben:
[miscellany]
enable-auto-props = yes
[auto-props]
*.php = svn:keywords=Date Author Id Copyright Revision LastChangedBy LastChangedDate License URL
Vorher folgende Kommandos ausführen:
svn propset copyright “(c)2007 My Company. All Rights Reserved.” ./*
svn propset license -F /path/to/LICENSE ./
Mehrere Dateien umbenennen
Um mehrere Dateien umzubenennen (im SVN und im Filesystem) kann folgendes bash kommando verwendet werden:
// rename files (svn) real
for name in `find ./* ! -regex .*.svn.*`; do newname=`echo $name | sed 's/archive/gallery/g'`;if [ "$name" != "$newname" ]; then svn rename "$name" "$newname"; fi; done
Um den Inhalt auch noch umzubenennen folgendes (hat zwar nichts mehr mit Subversion zu tun, aber Dateien umbenennen und Texte ändern bracht man um aus einer Extension eine Andere abzuzweigen):
# replace content
find ./ -iname '*.*' -type f -exec sed -i '' 's/archive/gallery/g' {} \;
SVN Buch
Hier das Buch zu Subversion Version 1.5. Ich habe 2 Versionen bei mir hier abgelegt - beide als einseitiges HTML:
Version Control with Subversion (Englisch)
Versionskontrolle mit Subversion (Deutsch)
Das Buch ist unter der Creative Commons Attribution License