Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Subversion im CS-Netz: Unterschied zwischen den Versionen

Zeile 4: Zeile 4:
  
 
Für das Repository braucht man nur Speicher im Home-Verzeichnis, die SVN-Software auf dem Server (ist installiert) und zu Hause (siehe unten). Weiterhin muss eine Gruppe im CS-Netz existieren oder angelegt werden. Am Ende steht optional die Einrichtung von Commit-Emails.
 
Für das Repository braucht man nur Speicher im Home-Verzeichnis, die SVN-Software auf dem Server (ist installiert) und zu Hause (siehe unten). Weiterhin muss eine Gruppe im CS-Netz existieren oder angelegt werden. Am Ende steht optional die Einrichtung von Commit-Emails.
 
  
 
== Konventionen ==
 
== Konventionen ==
Zeile 10: Zeile 9:
 
$HOME ist das Home-Verzeichnis des Benutzers, z.B. '''/home/b/buchholz''' (bekommt man mit '''pwd''' raus). <br />
 
$HOME ist das Home-Verzeichnis des Benutzers, z.B. '''/home/b/buchholz''' (bekommt man mit '''pwd''' raus). <br />
 
$HOST ist der Server, auf dem das SVN laufen soll, z.B. '''condesa.cs.tu-berlin.de'''. <br />
 
$HOST ist der Server, auf dem das SVN laufen soll, z.B. '''condesa.cs.tu-berlin.de'''. <br />
$GROUP ist die Gruppe, die Zugriff auf das SVN haben soll, z.B. '''mycoolsvngroup'''.
+
$GROUP ist die Gruppe, die Zugriff auf das SVN haben soll, z.B. '''mycoolsvngroup'''. <br />
 +
$MYREPO ist der Namen des Repositories, das eingerichtet werden soll, z.B. '''mpgi1'''.
 +
'''Fettdruck''' bedeutet immer, dass eine Ersetzung durch einen konkreten Wert nötig wird.
 +
 
  
'''Fettdruck''' bedeutet immer, dass eine Ersetzung durch einen konkreten Wert nötig wird.
 
  
 
== Über die SVN-Installation im CS-Netz ==
 
== Über die SVN-Installation im CS-Netz ==
Zeile 36: Zeile 37:
 
  mkdir '''$HOME'''/svn-repo
 
  mkdir '''$HOME'''/svn-repo
 
  cd '''$HOME'''/svn-repo
 
  cd '''$HOME'''/svn-repo
  svnadmin create '''myrepo'''
+
  svnadmin create '''$MYREPO'''
  
 
Es müssen entsprechende Rechte für das neue Verzeichnis gesetzt werden:
 
Es müssen entsprechende Rechte für das neue Verzeichnis gesetzt werden:
Zeile 42: Zeile 43:
 
* Group-Read und -Write, wo nötig.
 
* Group-Read und -Write, wo nötig.
 
  chmod o+x . ..
 
  chmod o+x . ..
  chgrp -R '''$GROUP''' '''myrepo'''
+
  chgrp -R '''$GROUP''' '''$MYREPO'''
  chmod -R o-rwx '''myrepo'''
+
  chmod -R o-rwx '''$MYREPO'''
  chmod -R g+rX '''myrepo'''
+
  chmod -R g+rX '''$MYREPO'''
  chmod -R g+u '''myrepo'''/db
+
  chmod -R g+u '''$MYREPO'''/db
  
  
Zeile 51: Zeile 52:
  
 
Die URL des Repositories lautet:
 
Die URL des Repositories lautet:
  svn+ssh://'''$MEINCSNAME'''@'''$HOST'''/'''$HOME'''/svn-repo/myrepo
+
  svn+ssh://'''$MEINCSNAME'''@'''$HOST'''/'''$HOME'''/svn-repo/$MYREPO
 
z.B.
 
z.B.
  svn+ssh://post@condesa.cs.tu-berlin.de/home/b/buchholz/svn-repo/myrepo
+
  svn+ssh://post@condesa.cs.tu-berlin.de/home/b/buchholz/svn-repo/mpgi1
  
 
=== Clients ===
 
=== Clients ===
Zeile 69: Zeile 70:
 
Commit-Emails bieten die Möglichkeit, über Commits aller Nutzer benachrichtigt zu werden. Sie enthalten neben der Commit-Log-Nachricht und einer Liste aller veränderten Dateien auch eine genaue Übersicht der Änderungen als Unified Diff.
 
Commit-Emails bieten die Möglichkeit, über Commits aller Nutzer benachrichtigt zu werden. Sie enthalten neben der Commit-Log-Nachricht und einer Liste aller veränderten Dateien auch eine genaue Übersicht der Änderungen als Unified Diff.
  
  cd '''myrepo'''/hooks
+
  cd '''$MYREPO'''/hooks
 
  cp post-commit{.tmpl,}
 
  cp post-commit{.tmpl,}
 
  chmod ug+x post-commit
 
  chmod ug+x post-commit
Zeile 77: Zeile 78:
 
Sie sollte etwa so aussehen:
 
Sie sollte etwa so aussehen:
 
  /home/pub/bin/svn-commit-email.pl "$REPOS" "$REV" \
 
  /home/pub/bin/svn-commit-email.pl "$REPOS" "$REV" \
     --from "'''$USER'''@cs.tu-berlin.de" -s "['''myrepo'''] SVN-Commit:" \
+
     --from "'''$USER'''@cs.tu-berlin.de" -s "['''$MYREPO'''] SVN-Commit:" \
 
     email1@cs.tu-berlin.de,gruppenmitglied2@web.de,emerge_moo@yahoo.com
 
     email1@cs.tu-berlin.de,gruppenmitglied2@web.de,emerge_moo@yahoo.com
 
Wobei die letzten Emailadressen die Empfänger der Email sind, durch Komma getrennt.
 
Wobei die letzten Emailadressen die Empfänger der Email sind, durch Komma getrennt.

Version vom 19. November 2006, 04:30 Uhr

Dieser Guide beschreibt, wie man eine Software zur Versionskontrolle namens Subversion (SVN) einsetzt. Subversion ermöglicht mehreren Nutzern, gleichzeit an den gleichen Dateien zu arbeiten und so vor allem Quellcode und Textdateien zentral zu organisieren und zu speichern.

Diese Anleitung beschreibt allerdings nur die Grundlagen, wie ein SVN Repository im CS-Netz eingerichtet wird. Grundlagen in der Software werden nicht gelegt, dafür sollte weitere Literatur dienen.

Für das Repository braucht man nur Speicher im Home-Verzeichnis, die SVN-Software auf dem Server (ist installiert) und zu Hause (siehe unten). Weiterhin muss eine Gruppe im CS-Netz existieren oder angelegt werden. Am Ende steht optional die Einrichtung von Commit-Emails.

Konventionen

$USER ist der Benutzername desjenigen, der das Repository einrichtet, z.B. buchholz.
$HOME ist das Home-Verzeichnis des Benutzers, z.B. /home/b/buchholz (bekommt man mit pwd raus).
$HOST ist der Server, auf dem das SVN laufen soll, z.B. condesa.cs.tu-berlin.de.
$GROUP ist die Gruppe, die Zugriff auf das SVN haben soll, z.B. mycoolsvngroup.
$MYREPO ist der Namen des Repositories, das eingerichtet werden soll, z.B. mpgi1. Fettdruck bedeutet immer, dass eine Ersetzung durch einen konkreten Wert nötig wird.


Über die SVN-Installation im CS-Netz

Zuerst muss man sich einen Server aussuchen, auf dem Subversion installiert ist.

Stand November 2006 ist, dass auf verschiedenen Servern unterschiedliche SVN-Versionen laufen. Wir nutzen hier die Version 1.4.0 auf condesa (Solaris 10), installiert in /opt/csw/bin.


Schritt 1: Login und Einrichten der Gruppe

Wir connecten uns zum gewählten Host und richten die Gruppe und die Nutzer ein.

ssh $HOST
grp -setup $GROUP
grp -invite $GROUP user1 user2 user3... # Einladen der Nutzer ($USER selbst ist schon drin)

Die Nutzer bekommen daraufhin eine Email und müssen der Gruppe via Terminal beitreten. Die Aktualisierung der Gruppendatenbank dauert eine Weile (etwa 1 Stunde).


Schritt 2: Einrichten des SVNs

Nun erstellen wir die nötigen Verzeichnisse und ein Repository.

mkdir $HOME/svn-repo
cd $HOME/svn-repo
svnadmin create $MYREPO

Es müssen entsprechende Rechte für das neue Verzeichnis gesetzt werden:

  • Execute für jeden, damit er in das Home-Verzeichnis wechseln kann.
  • Group-Read und -Write, wo nötig.
chmod o+x . ..
chgrp -R $GROUP $MYREPO
chmod -R o-rwx $MYREPO
chmod -R g+rX $MYREPO
chmod -R g+u $MYREPO/db


Schritt 3: Checkout des Repositories

Die URL des Repositories lautet:

svn+ssh://$MEINCSNAME@$HOST/$HOME/svn-repo/$MYREPO

z.B.

svn+ssh://post@condesa.cs.tu-berlin.de/home/b/buchholz/svn-repo/mpgi1

Clients

Das Repo kann unter Linux/Solaris ausgecheckt werden mittels

svn co $REPO_URL

Unter Windows empfehle ich TortoiseSVN als Explorer-Plugin.

Es gibt für Windows, Linux und Solaris auch ein Eclipse-Plugin dafür: Subclipse.


Schritt 4: Einrichten von Commit-Mails (optional)

Commit-Emails bieten die Möglichkeit, über Commits aller Nutzer benachrichtigt zu werden. Sie enthalten neben der Commit-Log-Nachricht und einer Liste aller veränderten Dateien auch eine genaue Übersicht der Änderungen als Unified Diff.

cd $MYREPO/hooks
cp post-commit{.tmpl,}
chmod ug+x post-commit

Die Datei post-commit dann in einem Text-Editor öffnen (z.B. pico) und folgende Zeile editieren:

commit-email.pl "$REPOS" "$REV" commit-watchers@example.org

Sie sollte etwa so aussehen:

/home/pub/bin/svn-commit-email.pl "$REPOS" "$REV" \
   --from "$USER@cs.tu-berlin.de" -s "[$MYREPO] SVN-Commit:" \
   email1@cs.tu-berlin.de,gruppenmitglied2@web.de,emerge_moo@yahoo.com

Wobei die letzten Emailadressen die Empfänger der Email sind, durch Komma getrennt.


Schritt 5: Und nun?

Ich empfehle als Einstieg und zur Vertiefung sehr das SVNBook (auch in verschiedenen Formaten, Versionen und Sprachen zum Download). Insbesondere die ersten Kapitel sollte man verstanden haben.


Schritt zurück: Ich brauche Hilfe!

Vielleicht hat jemand schon deine Frage beantwortet? Schau doch mal auf der Diskussions-Seite nach.

Neue Fragen bitte auf der Diskussionsseite stellen. Danke.