Peter Rehm's Blog

apple,development,life & more

$Id Zeilen mit Subversion

Mit 1 Kommentar

In den meisten Quellcodes die man so liest ist eine Id Zeile am Dateianfang zu finden,
die ungefähr so aussieht:

CODE:
/* $Id: test.cpp 3 2007-07-08 12:28:37Z peterrehm $ */


Dies bedeutet dass man die datei test.cpp sieht, zuletzt geändert in Revision 3 um 12:28 am 08.07.2007 von dem Benutzer peterrehm.
Dies ermöglicht einen schnellen Überblick über die Datei.
Die Information wird von Subversion selbst verwaltet.
Damit Subversion das tut, sind ein paar kleine Einstellungen notwendig.

1. Aktivieren der Keywors für die gewünschten Dateien

CODE:
svn propset svn:keywords "Id" test.cpp 


2. Definieren eines Platzhalters in der Quelldatei

Dazu einfach einen Code wie folgt in die Datei einfügen, je nach
Programmiersprache eben in entsprechender Kommentierung.

CODE:
/* $Id$ */


3. Datei committen

Mit dem nächsten Commit wird dann automatisch die eingefügt Zeile ersetzt.
Dies wird auch bei jedem weiteren Commit passieren. Die Id Zeile ist aber nicht
für SVN diffs relevant, auch wenn man selbst versuchen sollte die zu ändern,
also wenn man das Datum ändert, wird das nicht mit übertragen.

Die Dateiinformation bleibt solange bestehen bis man eine neuere Version committet,
oder ein anderer Benutzer des SVN Repositorys das übernimmt. Allerdings wird die
Zeile dann auch erst mit dem nächsten update aktualisiert.

Als letzte Information bleibt vielleicht noch zu nennen, dass ein $Log$ Keyword von
den SVN Entwicklern ausdrücklich nicht implementiert werden. Darauf wird in der
FAQ verwiesen.

Update: Fehler wurde behoben, Danke Sebastian!

Geschrieben von Peter Rehm

08.07.2007 um 16:44:04

Abgelegt in Programmierung

Tags für diesen Artikel:

Subversion Repository sichern und wieder einrichten

Mit 1 Kommentar

Irgendwann kommt man immer mal in die Situation seinen Rechner neuzuinstallieren.
Als Mac User meist dann, wenn man etwas zuviel im System gespielt hat. Und daher
ist die Frequenz entscheidend geringer als bei den Windows Maschinen.

Man will auch möglichst wenig Daten zurück lassen, und daher muss man alles möglich
sichern. Unter anderem auch Subversion.

Als erstes erzeugt Ihr einen Dump eures Repositories

CODE:
svnadmin dump /Users/peterrehm/Library/svn/cms/ > 
/Volumes/Backup/backup_sync/svn_cms.dump


Wobei "/Users/peterrehm/Library/svn/cms/" der Pfad zum Repository ist.
Mit der erstellten Dump Datei kann man das Repository wiederherstellen. Und zwar genau so.

Auf dem neu installierten System erzeugt Ihr ein neues Repository

CODE:
svnadmin create /path/to/new/repos


Nun kann man die Daten wieder einspielen

CODE:
svnadmin load /path/to/new/repos < /Volumes/Backup/backup_sync/svn_cms.dump


Danach solltet Ihr wieder wie gewohnt arbeiten können. Zumindest wenn man es mit meiner
Installationsanleitung installiert hat. :-)

Evtl. muss man noch Permissions setzen, auf den Benutzer/Group der das Repository verwaltet.
Das habe ich aber bisher noch nie gebraucht.

CODE:
chown -R svn:svnusers /path/to/new/repos 
chmod -R g+w /path/to/new/repos/db/


Nähere Informationen findet man hier.

Geschrieben von Peter Rehm

07.01.2007 um 17:30:08

Abgelegt in Verschiedenes

Tags für diesen Artikel: ,

SVN Tags von Projekten

Ohne Kommentare

SVN Tags von den Projekten sind ganz einfach:

CODE:
svn cp -m "0.2 release of the cms" 
file:///Users/peterrehm/Library/svn/cms/trunk/ 
file:///Users/peterrehm/Library/svn/cms/tags/0.2


In meinem Fall handelt es sich um ein lokales Projekt, daher auch file:///.
Es wird einfach die aktuelle Version als "trunk" in einen tag kopiert, und kann dann immer von da ausgecheckt werden.

Geschrieben von Peter Rehm

18.11.2006 um 21:51:43

Tags für diesen Artikel:

Subversion Dateien ignorieren

Ohne Kommentare

Beim arbeiten an einem Projekt hat man immer wieder Verzeichnisse, die man nicht zwingend in seinem Repository braucht.

Diese kann man ganz einfach auf die ignore List setzen, und hat damit nie wieder etwas damit zu tun. Dies ist z.b. interessant
für Cache Verzeichnisse, Temporäre Dateien,...

CODE:
svn propset svn:ignore "cache" .

Geschrieben von Peter Rehm

16.07.2006 um 09:02:51

Abgelegt in Verschiedenes

Tags für diesen Artikel:

.svn Files entfernen...

Mit 2 Kommentaren

Immmer mal wieder hat man einen Ordner kopiert und dummerweise war der in einem Subversion Repository.

Handelt es sich bei dem besagten um einen einzelnen Ordner, so stellt dies kein Problem dar, da man einfach per
Konsole das Verzeichnis entfernen kann.

Wenn man es aber auch aus allen Unterverzeichnissen herausbekommen möchte könnte dies weiterhelfen...

CODE:
find . -type d -name ".svn" -print0 | xargs -0 rm -rdf


Wenn man aber schon im Vorfeld sich des Problemes bewusst ist könnte svn export helfen.

Geschrieben von Peter Rehm

01.06.2006 um 15:25:32

Abgelegt in Verschiedenes

Tags für diesen Artikel:

Subversion unter OSX

Mit 2 Kommentaren

So, jetzt wird es mal wieder Zeit für einen etwas ausführlicheren Artikel, da ich mich gerade mit Subversion beschäftige. Leider habe ich keinen Artikel gefunden der mir all das brachte was ich benötigte.

1. Subversion installieren

Dieser Schritt ist sehr einfach, da es von Martin Ott Installationspackages zum Download gibt. Diese einfach installieren.

Sollten Sie Subversion auf der Konsole bedienen, was wir in den nächsten Schritten tun werden, dann sollten Sie die Pfade im .profile File in Ihrem Homeverzeichnis (/Users/username/.profile) wie folgt anpassen:

CODE:
export PATH=$PATH:/usr/local/bin
export SVN_EDITOR=/usr/bin/nano


Diese Anpassung dient rein dazu, dass die Binary Files von Subversion auch bequem gefunden werden.

2. Einrichten

Nachdem Sie dies nun erledigt haben, können Sie sich Gedanken über das Einrichten machen. Dazu benötigen Sie ein Repository, das sie wie folgt anlegen.

CODE:
svnadmin create /Users/peterrehm/Library/subversion


Dann ist schon einmal das Repository angeleget. Subversion verwendet dazu die Berkely DB. Sollte es Sie interessieren schauen Sie sich doch einfach einmal den Inhalt des Verzeichnisses an, wobei das alles andere als Spektakulär ist.

CODE:
total 16
drwxr-xr-x    9 peterreh  peterreh  306 Apr 27 01:20 .
drwxr-xr-x    3 peterreh  peterreh  102 Apr 27 01:20 ..
-rw-r--r--    1 peterreh  peterreh  229 Apr 27 01:20 README.txt
drwxr-xr-x    5 peterreh  peterreh  170 Apr 27 01:20 conf
drwxr-xr-x    2 peterreh  peterreh   68 Apr 27 01:20 dav
drwxr-sr-x   10 peterreh  peterreh  340 Apr 27 01:22 db
-r--r--r--    1 peterreh  peterreh    2 Apr 27 01:20 format
drwxr-xr-x   11 peterreh  peterreh  374 Apr 27 01:20 hooks
drwxr-xr-x    4 peterreh  peterreh  136 Apr 27 01:20 locks


So sollte es bei Ihnen nun auch aussehen.

Um mit Subversion arbeiten zu können müssen wir erstmal eine Dateistruktur anlegen, dazu empfiehlt sich bei Subversion folgende Dateistruktur. Diese können Sie auch in dem sehr umfangreichen Handbuch nachlesen.

Ich habe folgende Dateistruktur im verzeichnis /tmpdir erstellt:

CODE:
dagobert:~ peterrehm$ du -ch  /tmpdir/
0B    /tmpdir//cms/branches
0B    /tmpdir//cms/tags
0B    /tmpdir//cms/trunk
0B    /tmpdir//cms
0B    /tmpdir/
0B    total


Dies ist wie bereits erwähnt die von Subversion empfohlene Dateistruktur.

Diese müssen wir nun in das Repository 'importieren'.

CODE:
cd /tmpdir
svn import . file:///Users/peterrehm/Library/subversion/ --message 'inital import of the file structure'


Danach erscheint folgende Meldung und wir befinden uns in Revisionsstand 1
CODE:
Adding         cms
Adding         cms/trunk
Adding         cms/branches
Adding         cms/tags

Committed revision 1.


Sie können dann auch z.b. ganz einfach Files Ihres bestehenden Projektes importieren.
CODE:
svn import /Library/WebServer/Documents/cms/ file:///Users/peterrehm/Library/subversion/cms/trunk/ --message 'import of the current files'


Dann sind Sie bereits in Revisionsstand 2. Und nun können wir loslegen.

3. Working Copy

Nun müssen Sie um loszulegen sich eine Arbeitskopie aus dem Repository laden.
Dies wird mit dem Befehl checkout gemacht.

CODE:
svn checkout file:///Users/peterrehm/Library/subversion/cms/trunk/ cms


Nun wird in das Verzeichnis CMS die Aktuelle Version des vorher in trunk importieren Projekts geladen, in diesem Fall ein CMS.

4. Los gehts

Nun sind Sie voll ausgestattet und können Loslegen. Sie senden Ihre Äbnderungen mit svn commit und gleichen Ihre 'Working Copy' mit dem Repository per svn update ab.

5. Hilfe

Im Handbuch finden Sie weitere Hilfe!

6. Ende

Ich hoffe diese Kurzanleitung hat Ihnen geholfen. Auf Richtigkeit keine Gewähr.

Geschrieben von Peter Rehm

27.04.2006 um 00:59:15

Abgelegt in Apple, Programmierung

Tags für diesen Artikel: ,