FreeXP-Quelltexte (Sourcen)


Home
News
FAQ
Features
Bugs
Changelogs
Download
Tools
Über FreeXP / Kontakt
XP-Links
Menü ausblenden
 

Allgemeines

Die Quelltexte von FreeXP werden mit dem Versionsmanagementsystem CVS verwaltet. Der Zugriff auf den CVS-Server von FreeXP ist für jeden Interessierten über einen öffentlichen Gastzugang mit Lesezugriff möglich. Entwickler benötigen einen Zugang mit Schreibzugriff, um eigene Änderungen auf den CVS-Server übertragen zu können.

Die "Master"-Kopie der Quelltexte, die sich auf dem CVS-Server befindet, wird "Repository" genannt; die Kopie davon auf dem eigenen Rechner heißt "Working Directory". CVS sorgt dafür, daß beide Versionen synchron gehalten werden.

Umfassende Informationen zur CVS-Bedienung - speziell für Entwickler - sind der CVS-Dokumentation ("Cederqvist") zu entnehmen, die im HTML-Format (mit eigens angepaßten Links für lokale Verwendung) ebenso wie die derzeit aktuelle CVS-Version auf dem FTP-Server von FreeXP zum Download zur Verfügung steht:


Erstbezug und laufende Aktualisierung der Quelltexte

Es folgt eine allgemeine, praxisorientierte Step-by-Step-Anleitung, wie man eine Kopie der aktuellen Quelltexte im CVS-Repository in einem lokalen Verzeichnis auf der eigenen Festplatte ablegt und regelmäßig aktualisiert.

Der Einfachheit halber geht diese Anleitung von folgender Umgebung aus:

  • Betriebssystem Windows 9x/Me/NT/2000/XP
  • CVS ist im Verzeichnis C:\CVS installiert und liegt im Pfad
  • Lokales Source-Verzeichnis ist C:\SRC
  • Es besteht eine TCP/IP-Verbindung zum Internet (DFÜ-Netzwerk)
  • Für die Authentifizierung wird die "pserver"-Methode verwendet

    Wenn die tatsächlichen Verzeichnisnamen von den o.g. abweichen, müssen diese natürlich bei allen folgenden Befehlen entsprechend angepaßt werden.

Folgende Daten gelten für den Zugang zum CVS-Server von FreeXP:

  • Der "Repository Host" ist cvs.freexp.de
  • Der Pfad zum Repository lautet /home/server/cvs
  • Der Name des CVS-Projekts lautet freexp
  • Username und Paßwort des öffentlichen Gastzugangs lauten jeweils ebenfalls freexp (Entwickler müssen hier ihren eigenen Usernamen und ihr Paßwort verwenden)

Die Schritte zum Bezug der Quelltexte und Erläuterungen zu einigen CVS-Befehlen im einzelnen:

(Alle aufgeführten Befehle sind Kommandozeilenbefehle und werden am Prompt einer DOS-Box von Windows 9x/Me bzw. der NTVDM-Konsole von Windows NT/2000/XP eingegeben.)

  1. Aktuelle CVS-Version (derzeit v1.11.5) downloaden, ins Verzeichnis C:\CVS entpacken, und die im Archiv enthaltene EXE-Datei (z.B. cvs-1.11.5.exe) in CVS.EXE umbenennen. Ggf. Verzeichnis C:\CVS in den Pfad aufnehmen (und danach Rechner neu starten).

  2. Home-Verzeichnis für CVS mit folgendem Befehl setzen:

       set HOME=C:\CVS

    Dieser Befehl muß einmalig vor jeder ersten CVS-Session ausgeführt werden (alternativ kann das Verzeichnis auch schon beim Systemstart gesetzt werden).

  3. Vor dem Erstbezug der Quelltexte ein Login ausführen und das Paßwort angeben. Dazu zunächst folgenden Befehl ausführen:

       set CVSROOT=:pserver:freexp@cvs.freexp.de:/home/server/cvs

    freexp ist dabei der Username (Entwickler mit Schreibzugriff müssen hier ihren eigenen Usernamen einsetzen). Die Umgebungsvariable %CVSROOT% setzen wir hier aus Gründen der Übersichtlichkeit; man könnte Login-Methode, Username, Repository Host und den Pfad zum Repository auch bei jedem der nachfolgenden CVS-Befehle einzeln mit der globalen CVS-Option -d angeben, aber eben das wollen wir uns ersparen. Nun erfolgt das Login mit:

       cvs login

    Danach erscheint:

       Logging in to :pserver:freexp@cvs.freexp.de:2401/home/server/cvs
       CVS password:


    Paßwort freexp eingeben (Entwickler verwenden hier ihr eigenes Paßwort). Es wird dann die Datei .cvspass im CVS-Verzeichnis erzeugt und das Paßwort darin (verschlüsselt) abgelegt - kein cvs logout danach ausführen, sonst wird das Paßwort aus der Datei entfernt und man muß sich beim nächsten Mal wieder neu einloggen.

    Da die Datei .cvspass beim ersten Login i.d.R. noch nicht existiert, wird nach der Paßworteingabe die möglicherweise irritierende Warnmeldung ...

       CVS.EXE login: warning: failed to open C:\CVS\.cvspass for reading: No such file
        or directory


    ... ausgegeben werden - diese kann ignoriert werden, das Paßwort wurde trotzdem korrekt in .cvspass abgelegt.

    Nach diesem ersten (und einmaligen) Login ist auch bei zukünftigen CVS-Sessions nie wieder ein Login oder das Setzen der Umgebungsvariable %CVSROOT% erforderlich; Login-Methode, Username, Host, Pfad zum Repository, ggf. Branch sowie der Projektname werden nach dem Bezug der Quelltexte (siehe Schritt 4.) in den CVS-Unterverzeichnissen des Working Directory abgelegt, das Paßwort bleibt in .cvspass gespeichert (solange man kein cvs logout ausführt).

  4. Nun wird das Working Directory angelegt und die aktuellen Quelltexte vom CVS-Repository dorthin übertragen. Zunächst wechselt man dazu ins lokale Source-Verzeichnis C:\SRC:

       C:
       CD \SRC


    Dann führt man folgenden Befehl aus:

       cvs [-z9] co -d FXP340 freexp

    Dabei ist co (Kurzform für checkout) der eigentliche CVS-Befehl, FXP340 gibt das lokale Unterverzeichnis an, in dem die Quelltexte letztendlich abgelegt werden (dieser Verzeichnisname ist natürlich frei wählbar) und freexp ist der Projektname.

    Damit werden die Quelltexte der aktuellen FreeXP-Version v3.40 übertragen und im lokalen Verzeichnis C:\SRC\FXP340 abgelegt.

    Der globale Parameter -z9 ist optional und speziell für Modem-Benutzer von Bedeutung: Damit wird der Kompressionslevel 9 definiert, der die Datenübertragung um ca. 30% beschleunigen kann (im konkreten Test mit einer 56k-Verbindung dauerte der Bezug der kompletten Quelltexte der v3.40 RC3 mit Option -z9 dann 8:47 min. - statt 12:46 min. ohne Kompression). Es sind Werte von -z1 (niedrige Kompression) bis -z9 (hohe Kompression) möglich.

    Wer möchte, kann jetzt z.B. noch die Quelltexte der FreeXP-Version v3.2x, die sich in einem sog. "Branch" des CVS-Repository befinden, in einem weiteren Unterverzeichnis FXP320 wie folgt ablegen:

       cvs [-z9] co -d FXP320 -r Branch_3_20_Release freexp

    Dabei bezeichnet Branch_3_20_Release hinter der Befehlsoption -r den Namen des Branches.

    Nach Ausführung dieses Befehls lägen die Quelltexte der FreeXP-Version v3.2x im lokalen Verzeichnis C:\SRC\FXP320.

  5. Nachdem die Quelltexte einmal wie oben beschrieben bezogen und im Working Directory abgelegt wurden, gestalten sich alle zukünftigen CVS-Sessions erheblich einfacher:

    • TCP/IP-Verbindung aufbauen
    • Ins jeweilige Source-Verzeichnis (z.B. C:\SRC\FXP340) wechseln
    • Gewünschte CVS-Befehle ausführen (Angabe von Login-Methode, Username, Repository Host, Pfad zum Repository, Branch und Projektname sowie Setzen der Umgebungsvariable %CVSROOT% dabei nicht mehr erforderlich!)

    Der wichtigste und für die Allgemeinheit interessanteste CVS-Befehl ist dabei:

       cvs up

    up ist die Kurzform für update und bringt das lokale Working Directory auf den Stand des Repository. Selbst wenn man in lokalen Quelltext-Dateien mittlerweile eigene Änderungen vorgenommen haben sollte, werden Änderungen, die andere Entwickler in denselben Dateien vorgenommen und "eingecheckt" haben, automatisch synchronisiert oder "gemerged" (sofern diese nicht zufällig exakt dieselbe Stelle im Source betreffen, dann gibt es natürlich Merge-Konflikte, die manuell aufgelöst werden müssen).

    Da permanent Änderungen an den Quelltexten stattfinden (oft mehrmals täglich), bietet ein regelmäßig ausgeführtes cvs up die Möglichkeit, die Entwicklung Schritt für Schritt und quasi in Echtzeit mitzuverfolgen.

    Hin und wieder kommt es vor, daß nach dem Erstbezug der Quelltexte neue Unterverzeichnisse im CVS-Repository angelegt wurden. Will man sicherstellen, daß bei einem Update auch diese Unterverzeichnisse samt der darin enthaltenen Dateien automatisch berücksichtigt und im Working Directory abgelegt werden, verwendet man die Befehlsoption -d:

       cvs up -d

    Als letzter und nur für Entwickler relevante CVS-Befehl sei an dieser Stelle noch ...

       cvs ci [file.ext]

    ... erwähnt, mit dem Änderungen in das Repository "eingecheckt" oder "committet" werden (ci ist der Kurzbefehl für commit; die Angabe eines Dateinamens file.ext ist optional).

    ACHTUNG: Ein cvs up vor jedem cvs ci ist absolute Pflicht (sonst werden u.U. Änderungen anderer Entwickler überschrieben)!!

    Sobald eine Änderung eingecheckt ist, ist sie sofort überall verfügbar, d.h. sie schlägt bei jedem danach ausgeführten cvs up unmittelbar auf das jeweilige lokale Working Directory jedes beliebigen anderen Systems durch.

  6. Zum Abschluß noch der Hinweis auf die Möglichkeit, auch gezielt auf einen bestimmten Revisionsstand zugreifen zu können. Dies kann auf unterschiedliche Art und Weise geschehen; eine Möglichkeit sind sog. "symbolic tags". Z.B. wurde für den ersten FreeXP-Snapshot der v3.40 RC3 vom 31.08.2003 der Tag "Snapshot_31082003" gesetzt, so daß man mit ...

       cvs up -r Snapshot_31082003

    ... im Verzeichnis C:\SRC\FXP340 exakt den Stand dieses Snapshots erhält, auch wenn man bereits einen aktuelleren auf der Platte hatte. Bei der Angabe von symbolischen Tags ist zu beachten, daß die Schreibweise des Tags exakt eingehalten werden muß ("cvs up -r snapshot_31082003" würde wegen des kleingeschriebenen "s" hier z.B. nicht funktionieren).

    Zurück zum aktuellen Stand kommt man wieder mit:

       cvs up -A

    Die Befehlsoption -A (in genau dieser Schreibweise!) entfernt alle revisionsspezifischen Informationen im Working Directory und synchronisiert dieses wieder mit dem Repository.

Weitere Hinweise und Informationen zur Bedienung von CVS siehe CVS-Dokumentation.

Alle hier beschriebenen Befehle beziehen sich auf die Kommandozeilen-Version von CVS. Weitere Informationen zu GUI-Frontends für CVS folgen evtl. bei Gelegenheit an dieser Stelle.


CVS-Mailingliste/Newsgroup

Bei jeder auf dem CVS erfolgten Änderung erfolgt eine Nachricht in eine miteinander gespiegelte Mailingliste bzw. Newsgroup. Am Ende des Tages werden die Änderungen im Detail in einem "daily diff" zusammengefaßt. Die CVS-Foren von FreeXP sind gegen Schreibzugriffe von außen gesperrt. Einzelheiten über den Bezug von Mailingliste oder Newsgroup sind auf der Kontaktseite ersichtlich.


Web-Interface

Lesezugriff auf das CVS-Repository besteht auch über ein Web-Interface.

Valid CSS!
Valid HTML 4.01!