Subversion im CS-Netz: Unterschied zwischen den Versionen
(→Schritt 1: Login und Einrichten der Gruppe: Anermkung für keine Gruppe angefügt) |
(Subversion wird als Dienst nicht mehr angeboten (Feb 2024)) |
||
(18 dazwischenliegende Versionen von 12 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Dieser Guide beschreibt, wie man eine Software zur [[WikiPedia:Versionskontrolle|Versionskontrolle]] namens [http://subversion.tigris.org/ Subversion (SVN)] einsetzt. [[WikiPedia:Subversion (Software)|Subversion]] ermöglicht mehreren Nutzern, | + | {{ historisch }} |
+ | |||
+ | Dieser Guide beschreibt, wie man eine Software zur [[WikiPedia:Versionskontrolle|Versionskontrolle]] namens [http://subversion.tigris.org/ Subversion (SVN)] einsetzt. [[WikiPedia:Subversion (Software)|Subversion]] ermöglicht mehreren Nutzern, gleichzeitig 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 [[IRB|CS-Netz]] eingerichtet wird. Grundlagen in der Software werden nicht gelegt, dafür sollte weitere Literatur dienen. | Diese Anleitung beschreibt allerdings nur die Grundlagen, wie ein SVN Repository im [[IRB|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). | + | Für das Repository braucht man nur Speicher im Home-Verzeichnis, die SVN-Software auf dem Server (ist installiert) und zu Hause (siehe unten). Sollen mehrere Benutzer auf das Repository zugreifen können, muss außerdem eine Gruppe im CS-Netz existieren oder angelegt werden. Am Ende steht optional die Einrichtung von Commit-E-Mails. |
+ | |||
+ | <span style="color:red;"><strong>ACHTUNG:</strong> Das Anlegen der Gruppe und die Rechtevergabe funktioniert so nur mit den klassischen CS-Accounts. Nutzer der TubIT-Konten können sich unter Umständen durch Konfiguration ihres AFS-Verzeichnisses behelfen. Derzeit liegen uns jedoch noch keine Erfahrungsberichte vor. Eine kleine Einführung in die Rechtevergabe siehe [[Tubit-AFS]]. Auch die [[Diskussion:Subversion_im_CS-Netz|Diskussion]] zu diesem Artikel enthält einige Hinweise.</span> | ||
== Konventionen == | == Konventionen == | ||
$USER ist der Benutzername desjenigen, der das Repository einrichtet, z.B. '''buchholz'''. <br /> | $USER ist der Benutzername desjenigen, der das Repository einrichtet, z.B. '''buchholz'''. <br /> | ||
− | $HOME ist das Home-Verzeichnis des Benutzers, z.B. '''/home | + | $HOME ist das Home-Verzeichnis des Benutzers, z.B. '''/home/buchholz''' (bekommt man mit '''pwd''' raus). <br /> |
+ | Falls jedoch andere Benutzer auf das Repo-Verzeichnis zugreifen können sollen, sollte man den tatsächlichen Pfad '''/pool/user/buchholz''' benutzen. <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'''. <br /> | $GROUP ist die Gruppe, die Zugriff auf das SVN haben soll, z.B. '''mycoolsvngroup'''. <br /> | ||
− | $MYREPO ist der | + | $MYREPO ist der Name des Repositorys, das eingerichtet werden soll, z.B. '''mpgi1'''. |
− | '''Fettdruck''' bedeutet immer, dass eine Ersetzung durch einen konkreten Wert nötig | + | '''Fettdruck''' bedeutet immer, dass eine Ersetzung durch einen konkreten Wert nötig ist. |
== Über die SVN-Installation im CS-Netz == | == Über die SVN-Installation im CS-Netz == | ||
− | Stand September 2007: Wir nutzen hier die Version 1.4.3 installiert in '''/opt/csw/bin'''. ( | + | Stand September 2007: Wir nutzen hier die Version 1.4.3 installiert in '''/opt/csw/bin'''. (Standardmäßig in $PATH eingetragen) |
== Schritt 1: Login und Einrichten der Gruppe == | == Schritt 1: Login und Einrichten der Gruppe == | ||
Zeile 27: | Zeile 32: | ||
Die Nutzer bekommen daraufhin eine E-Mail und müssen der Gruppe [[SSH|via Terminal]] beitreten. Die Aktualisierung der Gruppendatenbank dauert eine Weile (etwa 1 Stunde). | Die Nutzer bekommen daraufhin eine E-Mail und müssen der Gruppe [[SSH|via Terminal]] beitreten. Die Aktualisierung der Gruppendatenbank dauert eine Weile (etwa 1 Stunde). | ||
− | + | '''Anmerkung''': Es ist auch denkbar, das gesamte SVN für die Allgemeinheit freizugeben, | |
− | + | dann müssen wir keine Gruppe erstellen und es ist auch nicht nötig, nacher die Gruppenberechtigungen | |
− | + | mittels chgrp zu ändert. Aufgrund einer erhöhten Sicherheit (Nicht jeder | |
− | + | kann in das Repository schreiben, sondern nur Gruppenmitglieder) sollten wir jedoch | |
− | + | eine Gruppe einrichten. | |
== Schritt 2: Einrichten des SVNs == | == Schritt 2: Einrichten des SVNs == | ||
Zeile 40: | Zeile 45: | ||
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. |
+ | Dies funktioniert aber erst, wenn mindestens ein Mitglied, welches mit grp -invite eingeladen wurde der Gruppe beigetreten ist: | ||
* Execute für jeden, damit er in das Home-Verzeichnis wechseln kann. | * Execute für jeden, damit er in das Home-Verzeichnis wechseln kann. | ||
* Group-Read und -Write, wo nötig. | * Group-Read und -Write, wo nötig. | ||
Zeile 48: | Zeile 54: | ||
chmod -R g+rX '''$MYREPO''' | chmod -R g+rX '''$MYREPO''' | ||
chmod -R g+u '''$MYREPO'''/db | chmod -R g+u '''$MYREPO'''/db | ||
+ | chmod g+s '''$MYREPO''' | ||
+ | == Schritt 3: Checkout des Repositorys == | ||
− | + | Die URL des Repositorys lautet: | |
− | |||
− | Die URL des | ||
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 | + | svn+ssh://post@condesa.cs.tu-berlin.de/home/buchholz/svn-repo/mpgi1 |
=== Clients === | === Clients === | ||
Zeile 68: | Zeile 74: | ||
== Schritt 4: Einrichten von Commit-Mails (optional) == | == Schritt 4: Einrichten von Commit-Mails (optional) == | ||
− | Commit- | + | Commit-E-Mails 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 | ||
Zeile 80: | Zeile 86: | ||
--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 E-Mail-Adressen die Empfänger der E-Mail sind, durch | + | Wobei die letzten E-Mail-Adressen die Empfänger der E-Mail sind, durch Kommata getrennt. Die \ sollen hier nur andeuten, dass es sich eigentlich um eine einzige Zeile handelt, also die \ weglassen und alles als eine Zeile eingeben. |
− | |||
== Schritt 5: Und nun? == | == Schritt 5: Und nun? == | ||
Zeile 92: | Zeile 97: | ||
Neue Fragen bitte [http://wiki.freitagsrunde.org/index.php?title=Diskussion:Subversion_im_CS-Netz&action=edit§ion=new auf der Diskussionsseite stellen]. Danke. | Neue Fragen bitte [http://wiki.freitagsrunde.org/index.php?title=Diskussion:Subversion_im_CS-Netz&action=edit§ion=new auf der Diskussionsseite stellen]. Danke. | ||
+ | |||
+ | == Alternativen == | ||
+ | [[Git_im_CS-Netz]] | ||
[[Kategorie: Fakultäts-ABC]] | [[Kategorie: Fakultäts-ABC]] | ||
[[Kategorie: Überleben im Fakultätsnetz]] | [[Kategorie: Überleben im Fakultätsnetz]] |
Aktuelle Version vom 29. Februar 2024, 17:55 Uhr
Dieser Artikel spiegelt sehr wahrscheinlich nicht mehr den aktuellen Stand wider, könnte aber trotzdem von Interesse sein.
Dieser Guide beschreibt, wie man eine Software zur Versionskontrolle namens Subversion (SVN) einsetzt. Subversion ermöglicht mehreren Nutzern, gleichzeitig 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). Sollen mehrere Benutzer auf das Repository zugreifen können, muss außerdem eine Gruppe im CS-Netz existieren oder angelegt werden. Am Ende steht optional die Einrichtung von Commit-E-Mails.
ACHTUNG: Das Anlegen der Gruppe und die Rechtevergabe funktioniert so nur mit den klassischen CS-Accounts. Nutzer der TubIT-Konten können sich unter Umständen durch Konfiguration ihres AFS-Verzeichnisses behelfen. Derzeit liegen uns jedoch noch keine Erfahrungsberichte vor. Eine kleine Einführung in die Rechtevergabe siehe Tubit-AFS. Auch die Diskussion zu diesem Artikel enthält einige Hinweise.
Inhaltsverzeichnis
Konventionen
$USER ist der Benutzername desjenigen, der das Repository einrichtet, z.B. buchholz.
$HOME ist das Home-Verzeichnis des Benutzers, z.B. /home/buchholz (bekommt man mit pwd raus).
Falls jedoch andere Benutzer auf das Repo-Verzeichnis zugreifen können sollen, sollte man den tatsächlichen Pfad /pool/user/buchholz benutzen.
$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 Name des Repositorys, das eingerichtet werden soll, z.B. mpgi1.
Fettdruck bedeutet immer, dass eine Ersetzung durch einen konkreten Wert nötig ist.
Über die SVN-Installation im CS-Netz
Stand September 2007: Wir nutzen hier die Version 1.4.3 installiert in /opt/csw/bin. (Standardmäßig in $PATH eingetragen)
Schritt 1: Login und Einrichten der Gruppe
Wir verbinden 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 E-Mail und müssen der Gruppe via Terminal beitreten. Die Aktualisierung der Gruppendatenbank dauert eine Weile (etwa 1 Stunde).
Anmerkung: Es ist auch denkbar, das gesamte SVN für die Allgemeinheit freizugeben, dann müssen wir keine Gruppe erstellen und es ist auch nicht nötig, nacher die Gruppenberechtigungen mittels chgrp zu ändert. Aufgrund einer erhöhten Sicherheit (Nicht jeder kann in das Repository schreiben, sondern nur Gruppenmitglieder) sollten wir jedoch eine Gruppe einrichten.
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. Dies funktioniert aber erst, wenn mindestens ein Mitglied, welches mit grp -invite eingeladen wurde der Gruppe beigetreten ist:
- 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 chmod g+s $MYREPO
Schritt 3: Checkout des Repositorys
Die URL des Repositorys lautet:
svn+ssh://$MEINCSNAME@$HOST/$HOME/svn-repo/$MYREPO
z.B.
svn+ssh://post@condesa.cs.tu-berlin.de/home/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-E-Mails 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 E-Mail-Adressen die Empfänger der E-Mail sind, durch Kommata getrennt. Die \ sollen hier nur andeuten, dass es sich eigentlich um eine einzige Zeile handelt, also die \ weglassen und alles als eine Zeile eingeben.
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.