|
Inhaltsverzeichnis
VersionsverwaltungDie Versionsverwaltung des Quellcodes von DSAo-Md übernimmt ein Versionskontrollsystem. Aktuell nutzen wir Subversion (SVN) dafuer. Warum wird SVN und nicht CVS genutzt?Die Gründe hierfür liegen klar auf der Hand:
Die wesentlichen UnterschiedeDieser Abschnitt stammt aus der Homepage von Thomas Dohmke und unterliegt dessen Lizenz.
Anwendung auf *nix-SystemenEine Arbeitskopie erstellenDazu wird in ein Verzeichnis deiner Wahl (hier im Beispiel das home) ein Unterverzeichnis angelegt. Ein Beispiel wäre svn: mkdir /home/username/svn/ Danach durch folgenden Befehl eine Arbeitskopie 'auschecken' (den gesamten Quelltext vollständig neu Herunterladen): svn co https://dsao-md.svn.sourceforge.net/svnroot/dsao-md . Unter /home/username/svn/dsao-md/ befindet sich nun eine lokale Kopie des Projektes. Beim Commit einer Datei, wir werden später darauf eingehen, wird beim ersten Mal der Benutzername sowie das Passwort abgefragt. Das Subversion-Repository hat einen generellen Lesezugriff, jedoch einen beschränkten Schreibzugriff. Das heisst, wenn jemand in das Repository schreiben will, braucht er/sie Schreibrechte, jene er/sie wiederum vom Projektleiter bzw. beim Maintainer erhalten kann. Mit den dann erhaltenen Login-Daten meldet man sich sodann am Server an und kann, ohne weiteren Passworteingabe bei einem späteren Commit, seine Daten in das Repository hochladen. Typische Befehle im Umgang mit SubversionHinzufügen einer Datei: Als erstes Legen wir eine Testdatei an: cd /home/username/svn/dsao-md/test/ echo "Dies ist die README-Datei." > README Hinzugefügt wird sie mittels: svn add README
Es können weitere beliebige dateien hinzugefügt werden: svn add DATEINAME
Oder auch gelöscht: svn remove DATEINAME
Ist man irgendwann mit seiner Arbeit fertig, müssen die Änderungen noch an den Server übermittelt werden. Dies erledigt folgender Befehl: svn commit
Es öffnet sich der eingestellte Editor, in dem man seine Änderungen ausreichend kommentiert. Den Standardeditor legt man wie folgt fest: export SVN_EDITOR=nano Alternativ kann man auch direkt den Kommentar zu dem Commit mit in der Befehlszeile angeben: svn commit -m 'Kommentar zu der Datei' datei.php Die aktuelle Version seiner lokalen Kopie erhält man mittels: svn update
Wenn eine Datei nun umbenannt wird, dann geschieht das mittels: svn move README readme.txt svn commit Dabei wird im gegensatz zum CVS die History der Datei beibehalten, wie der Befehl svn log readme.txt
zeigt. Wenn man nun aus der 'readme.txt' mehrere Sprachen erzeugen will, dann geschieht das am einfachsten mit dem 'copy'-Befehl: svn copy readme.txt readme.en.txt svn copy readme.txt readme.de.txt svn commit Nun ist die Urdatei readme.txt in zwei neue kopiert worden; somit stehen nun drei 'readme'-Dateien zur Verfügung, die wohlgemerkt alle die gleiche History haben! Alle bisher beschriebenen Kommandos lassen sich genauso auf Verzeichnisse und Binärdateien anwenden. Weitere Hilfe gibt es bislang mit „svn help“ Anwendung auf Windows-SystemenClient installierenInstallationsdateien für TortoiseSVN (der Windows-Client für SVN, auf den sich diese Anleitung bezieht) kann hier heruntergeladen werden, Sprachpakete gibt es auf der gleichen Seite (Ich verwende englische begriffe und stelle die deutschen Begriffe in eckigen Klammern dahinter). Nach der Installation und einem Neustart des Systems sollten im Kontextmenü einige weitere Punkte ersichtlich sein (rechten Maustaste). Eine Arbeitskopie erstellenIm Ordner, in dem das Repository liegen soll, wählt man im Kontextmenü 'SVN checkout' [SVN Auschecken] an. Im erscheinenden Fenster gibt man die URL des Projektarchivs an (https://dsao-md.svn.sourceforge.net/svnroot/dsao-md), der Zielordner ist bereits vorgegeben. Desweiteren muss beim ersten Auschecken die Revision 'HEAD' ausgewählt sein! Nach Bestätigung wird eine Kopie des Repository heruntergeladen. Arbeitskopie aktualisierenIm Kontextmenü 'SVN Update' [SVN Aktualisieren] auswählen, neuere Versionen werden dann automatisch heruntergeladen. KonflikteKonflikte entstehen wenn eine lokal bearbeitete Datei durch eine neuere auf dem Server ersetzt wird. In diesem Fall werden vom Server zwei Versionen heruntergeladen
Lokal werden die Dateien mit der Version als Dateiendung versehen, die lokale, bearbeitete Datei mit der Endung '.mine' und in der eigentlichen Datei werden die Unterschiede der Dateien zusammenkopiert und vermerkt. In so einem Fall müssen die Dateien 'merged' (zusammengeführt) werden. Dies kann manuell (durch Auswählen der entsprechenden Passagen im TortoiseSVN-eigenen Editor) oder automatisch (nicht zu empfehlen) geschehen. Wurde der Konflikt behoben, so kann im Kontextmenü 'TortoiseSVN' und in dessen Untermenü 'Resolved' [Konflikt aufgelöst] gewählt werden, um die Konflikte zu löschen. (Solange ein Konflikt besteht, kann die Datei nicht übertragen werden; Konflikte vorbeugen!) Lokale Änderung an default.php, wird durch eine neuere Version ersetzt. Folgende Dateien sind hinzugekommen:
- default.php.mine (Änderungen lokal)
- default.php.r394 (Originalversion lokal)
- default.php.r395 (neueste Version)
Inhalt der default.php:
weiterer Code...
<<<<<<< .mine
Inhalt der Änderungen Lokal
=======
Inhalt der Änderungen in der neueren Version
>>>>>>> .r395
...weiterer Code
Dateien sperrenUm sichergehen zu können, dass während lokaler Änderungen an einer Datei keine weitere Person eine Änderung an derselben Datei hochlädt, kann diese gesperrt werden (dies ist die einzige Möglichkeit um Konflikte sicher zu vermeiden). Die zu sperrenden Dateien werden markiert, danach im Kontextmenü 'Get lock' [Sperre holen] auswählen. Die markierten Dateien werden nochmals aufgelistet und eine Notiz kann an den Server übermittelt werden. Übertragen von ÄnderungenWenn eine Änderung vorgenommen wurde, kann diese übermittelt werden wenn im Kontextmenü 'SVN Commit' [SVN Übertragen] ausgewählt wird. Die im aktuellen Ordner befindlichen Dateien (inkl. Unterverzeichnisse), die verändert wurden, werden aufgelistet. Bei Bedarf können auch einzelne Dateien übertragen werden. Ebenfalls sollte man eine Änderungsmeldung angeben. Wenn eine Datei gesperrt oder neuer ist, wird die gesammte Übertragung abgebrochen. In einem solchen Fall gibt es nichts anderes als die aktuelle Datei herunterzuladen und gemäß Punkt 3.3.1 zu verfahren. Sperren behaltenBeim Übertragen kann unten links im Meldefenster 'Keep locks' [Sperren behalten] ausgewählt werden, wenn gesperrte Dateien gesperrt bleiben sollen (normalerweise werden gesperrte Dateien bei einer Übertragung wieder freigegeben). Dateien lokal ignorierenDateien, die im Repository liegen, aber nie übertragen werden sollen, können ignoriert werden. So stehen sie bei einer Übertragung nicht mehr weiter zur Auswahl. Herfür müssen die zu ignorierenden Dateien markiert werden, danach im Kontextmenü unter 'TortoiseSVN' in dessen Untermenü 'Add to ignorelist' [Ignorieren] auswählen. Wenn lediglich eine Datei ausgewählt wird, kann man zusätzlich auswählen, ob man lediglich diese Datei ignorieren will, oder alle Dateien mit dieser Dateiendung. UmbenennenEine Datei, die registriert ist, muss über TortoiseSVN umbenannt werden, sonst wird lediglich eine neue Datei die noch nicht registriert wurde erstellt, und die Originaldatei ist auf dem Server immer noch vorhanden. Dafür die Datei markieren und im Mausmenü unter 'TortoiseSVN' in dessen Untermenü 'Rename' [Umbenennen] auswählen und den neuen Namen eingeben. LöschenEine Datei, die registriert ist, muss über TortoiseSVN gelöscht werden, sonst wird lediglich die lokale Datei gelöscht und sie taucht bei der nächsten Aktualisierung wieder auf. Dafür die Datei markieren und im Mausmenü unter 'TortoiseSVN' in dessen Untermenü 'Delete' [Löschen] auswählen. SymboleAuf der Windowsoberfläche stehen besondere Markierungssymbole zur Verfügung, um den Status einer Datei zu kennzeichnen
Sprache umstellenIm Kontextmenü 'TortoiseSVN' → 'Settings' [Optionen] und dann unter 'General' [Allgemein] die Sprache auswählen Verzeichnisstruktur/Release/Bei einem neuen Release wird der devel-Ast in ein Archiv gepackt und dort der Versionsnummer entsprechend abgelegt. /devel/Das Entwicklungsverzeichnis, hier wird aktuell gearbeitet und aus diesem Verzeichnis werden auch neue Releases erzeugt. /install/Darin werden spaeter die Installationsdateien abgelegt (install.php) /sql/MySQL Spezifische Dateien. Patches, Updates und auch die install.sql ist dort zu finden Die Verzeichnisstruktur ist an den Richtlinien vom Zend Framework, der MCV sowie der Libs wie Smarty ausgerichtet. |