| Version 7 (modified by , 17 years ago) ( diff ) |
|---|
Subversion-Anleitung
Dieser Artikel beschreibt den Umgang mit dem Subversion-Kommandozeilenclient.
Voraussetzung
Welche Software brauche ich?
Benötigt wird das Programm subversion für die Kommandozeile:
- Download: http://svn.tigris.org
Alternativ liegen auch komfortable SVN-Clients vor:
- Für Windows: http://www.tortoisesvn.net/
- Für Linux (und Windows?): KDEsvn (siehe Paketmanagment)
Die weiteren Erläuterung beziehen sich auf den Kommandozeilen-Client, können aber sinngemäß auf einen graphischen Client übertragen werden.
Dateien im SVN ändern
Will man auch Dateien im Repostiory ändern, braucht man einen Schreibzugang mit Namen und Passwort. Dazu eine Mail an Ben (bekannt von der Mailingliste) schicken.
Wenn es voraussichtlich bei einer einzigen Änderung bleiben wird, kann alternativ auch auf der Mailingliste Unterstützung für ein einmaliges »Einchecken« erbeten werden.
Terminologie
$REPOSITORY_HOME – Das Verzeichnis in dem das ausgecheckte Repository liegt
Was will ich machen?
Das Repository lokal auf meinem Rechner haben
Angenommen ich möchte Neo in das Verzeichnis $VERZEICHNIS/$NEO runterladen:
cd $VERZEICHNIS svn checkout https://svn.neo-layout.org $NEO
$REPOSITORY_HOME ist dann $VERZEICHNIS/$NEO
Das Repository auf meinem Rechner auf den neuesten Stand bringen
cd $REPOSITORY_HOME svn update
Dateien im Repository ändern
Einfach die Datei ändern und weiter geht’s mit dem Abschnitt Änderungen ins Repository hochladen. Allerdings bitte die Stilregeln für das Editieren von Dateien beachten.
Dem Repository neue Dateien hinzufügen
Nachdem man die Datei in der lokalen Repositorykopie erstellt hat:
svn add $DATEI
Weiter mit dem Abschnitt Änderungen ins Repository hochladen.
Dateien im Repository umbenennen
svn mv $DATEI_ALT $DATEI_NEU
Weiter mit dem Abschnitt Änderungen ins Repository hochladen.
Dateien aus dem Repository löschen
svn rm $DATEI
Weiter mit dem Abschnitt Änderungen ins Repository hochladen.
Änderungen ins Repository hochladen
cd $REPOSITORY_HOME svn commit -m "$ÄNDERUNGSBESCHREIBUNG" --username $USER
Wenn man das Repository mit seinem Nutzernamen ausgecheckt hat, kann »--username $USER« weggelassen werden. Statt auszuchecken wie im Abschnitt Das Repository lokal auf meinem Rechner haben beschrieben, dann dies hier:
cd $VERZEICHNIS_WO_NEO_REIN_SOLL svn checkout https://$USER@svn.neo-layout.org neo
Ratschläge / »best practice«
In diesem Abschnitt geht es weniger um technische Fragen, sondern eher darum, wie man sinnvoll/empfohlenerweise mit einem SVN arbeiten sollte. Diese Ratschläge haben sich in der Praxis als sinnvoll erwiesen:
- Bevor man beginnt, die eigene SVN-Kopie zu bearbeiten, sollte immer erst ein Update durchgeführt werden (insbesondere, wenn das letzte Aus-checken schon länger her liegt). Dies vermeidet mögliche Konflikte.
- Es ist vorteilhaft, inhaltlich Zusammengehörendes auch gemeinsam zu committen (hochzuladen), und Dinge, die voneinander unabhängig sind, auch einzeln einzuchecken.
- Die Änderungsbeschreibung sollte immer eingegeben werden und möglichst genau sein.
- Längere Änderungsbeschreibungen sollten mit einer kurzen Zusammenfassung der Form »[Adjektiv] Subjekt Prädikat: …« begonnen werden, etwa »Neues Feature: …«, »Caps-Lock-Fehler behoben: …«, »Dokumentation ergänzt: …«
- Inhaltliche (bzw. »programmiertechnische«) Änderungen (oder Fehlerkorrekturen) sollten unabhängig von ästhetischen Korrekturen (wie Einrückungen oder der Korrektur von Rechtschreibfehlern) eingecheckt werden. Mögliche Änderungsbeschreibungen wären etwa: [Revision 698:] »Doku erweitert: Wie man NEO auf dem C64 installieren kann«, [Revision 699:] »Formatierung korrigiert: Leere Zeilen entfernt, Einrückung angeglichen (r698)«
- Größere Commits können auch aufgeteilt werden, wenn die Intention dazu aus den Änderungsbeschreibungen hervor geht.
- Wenn man Angst um kostbare Änderungen durch einen Headcrash während einer intensiven Change-Session hat, muss man einen Branch für den Zeitraum der Änderungen eröffnen.
- Änderungen an der Referenz sollten unbedingt vorher auf der Mailingliste besprochen bzw. ausdiskutiert werden. Unwesentliche Änderungen sollten zumindestens auf der Liste erwähnt werden.
Subversion-Properties setzen
Jede Datei in SVN sollte den richtigen Mime-Type gesetzt haben. Damit ergeben sich bessere Möglichkeiten beim Auschecken von Dateien oder beim direkten Runterladen aus dem Subversion. In Verbindung mit Trac könnten sich auch Vorteile ergeben, die aber von Trac abhängen: Es könnte z.B. Bilddateien, die sich über den Mime-Type als solche zu erkennen geben, auch als eingebettete Bilder behandeln und nicht wie Binärdateien.
Über den Mime-type hinaus gibt es weitere für Subversion wichtige Properties wie beispielsweise «svn:eol-style» zum korrekten Setzen von CR/LF je nach Client-Plattform und «svn:keywords» zum automatischen Updaten von Revision-Informationen. Darüber hinaus kann man für Verzeichnisse mit «svn:ignore» Dateien angeben, die für Subversion immer als „unsichtbar“ gelten sollen, damit er sich nicht über deren Existenz aufregt, wie beispielsweise temporäre Dateien oder Compile-Output. Und seit Kurzem verwaltet Subversion in Properties auch Informationen über den bisherigen Merge-Ablauf für Merge-Tracking. Weiters gibt es vordefinierte Properties zum Setzen der Dateiattribute, was aber nur unter Linux sinnvoll ist (z.B. das „Ausführbar“-Attribut).
Darüber hinaus kann man beliebige eigene Properties angeben und eintragen, die wie Meta-Informationen an den Dateien „haften“, aber nur für Subversion und die entsprechenden Tools sichtbar sind.
