m (Corected some spelling mistakes.) |
m (Added a Link) |
||
Line 278: | Line 278: | ||
sieht, besteht kein Anlass das zu ändern. | sieht, besteht kein Anlass das zu ändern. | ||
− | == | + | == Weitere Links == |
− | + | * [[Development/Tools/svnmerge.py|Merge tracking mit svnmerge.py]] | |
− | + | * Für mehr Informationen über Subversion in KDE siehe [http://wiki.kde.org/tiki-index.php?page=KDE%20Subversion%20HOWTO the KDE wiki] |
Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | Eesti | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenčina | Slovenščina | српски | Türkçe | Tiếng Việt | Українська | 简体中文 | 繁體中文
Anleitungsserie | Anfang |
Voriges Kapitel | None |
Nächstes Kapitel | n/a |
Weiterführende Texte | n/a |
Navigation | Deutsche Startseite |
Der folgende Text ist eine schnelle KDE-spezifische Einführung, wie man Subversion benutzt, um auf Dateien und Software im KDE-Repository zuzugreifen. Für einen vollständigen Überblick über die Fähigkeiten von Subversion verweisen wir auf das Buch "Version Control with Subversion (englisch)".
Um das KDE Subversion Repository benutzen zu können, benötigen Sie zwei Dinge:
Beachte: Für einen anonymen nur-lesen Zugriff benutzen Sie das Protokoll "svn", kein "yourname@" und Server "anonsvn.kde.org" anstatt dem unten genannten.
Subversion installieren: Eine Anleitung zur Installtion des Client Programms wird hier nicht gegeben. Sehen Sie in den Installtionsanleitungen Ihres Systems nach, um herauszufinden, wie man Subversion installiert. Sie benötigen mindesten Version 1.1. Wenn Sie Subversion selber compilieren und Sie auf das Repository per https (und nicht über svn+ssh) zugreifen wollen, benötigen Sie SSL und ZLIB Unterstützung und müssen daher die --with-ssl --with-zlib Option übergeben.
Alternativ können Sie auch einen der zahlreich vefügbaren graphischen Clients installieren. Diese Anleitung wendet sich an personen, die nur das svn Programm benutzen und bezieht sich dabei auf Dinge die mit dem alten cvs Programm erledigt wurden.
Ein Benutzerkonto bekommen: Hatten Sie vorher ein CVS Benutzerkonto, wurde dieses zum neuen Subversion Client migriert. Wenn nicht, sehen Sie in der entsprechenden Anleitung nach, wie man eines bekommt.
Wenn Sie ihr CVS Passwort verloren haben, gibt es einfache Wege, dieses zu ermitteln. Benutzen Sie cvspwd.c pder cvs-unscramble (Perl). |
---|
Anmerkung |
svn.kde.org/home/kde
ist die Adresse des KDE Subversion Repositorys. Das Repository wird über das HTTPS oder SVN-SSH Protokoll angesrochen, was bedeutet, dass Ihr Passwort sicher gegenüber Abhörversuche dritter ist.
Der SSL certificate md5 fingerprint für die Repositorys ist:
F6BF EDE2 D016 D1B2 4F18 742E 2C8F B7EF
Der SSL certificate sha1 fingerprint für die Repositorys ist:
e1:e6:41:96:3c:eb:ae:78:e2:73:0d:a2:32:2f:6b:21:13:bf:3d:0f
Für Personen, die svn+ssh benutzen ist hier der Fingerprint des RSA Schlüssels des Servers:
86:f3:66:06:20:74:81:d0:1b:b4:2f:25:03:f7:8e:fb
Das Repository ist in Hauptverzeichnisse organisiert:
Man kann das Repository über http://websvn.kde.org/ durchforsten.
Das /trunk Hauptunterverzeichnis ist dasjenige, in dem die Hauptentwicklung an KDE stattfindet. Was Sie hier finden, wird als nächste KDE Version und dessen assoziierte Programme veröffentlicht. Hier finden Sie auch das www Modul, welches die Webpages rund um KDE beinhaltet.
/trunk ist unterteilt in folgende Unterverzeichnisse:
Dieses Verzeichnis beinhaltet die offiziellen Veröffentlichung von den Programmen die im KDE Repository verwaltet und entwickelt werden. Jede einzelne Applikation hat hier ein Unterverzeichnis, innerhalb von diesem finden Sie die Release-Nummern.
So kann zum Beispiel der Code für KDE 3.4.0 unter /tags/KDE/3.4.0/ gefunden werden.
Dieses Verzeichnis beinhaltet die Zweig-Versionen von Applikationen nach einer Hauptveröffentlichung.
Die meisten KDE Applikationen halten sich an die Philosophie, dass neue Features (ebenso wie neue Zeichneketten für den Benutzer) erst im nächsten Veröffentlichungszyklus — derjenige der in /trunk/ entwickelt wird — einfließen. Fehlerbereinigungen werden jedoch auf alle Applikationen angewandt, auch nach einer Veröffentlichung.
Um das zu bewerkstelligen, wird ein Zweig (Branch) im Moment der Veröffentlichung erzeugt und zeigt damit den Status dieser Dateien zu diesem Zeitpunkt an. Fehlerbereinigungen werden dann in diese Dateien eingepflegt. Diese Zweige sind dann diejenigen die unter /branches/ zu finden sind.
So kann zum Beispiel der KDE 3.4.x Zweig unter /branches/KDE/3.4/ gefunden werden.
Die Unterverzeichnisse die Sie in /branches finden, sie z.B. die Unterverzeichnisse der Aplikationen akregator/, amarok/, arts/, k3b/, etc. Sie finden hier auch ein KDE/ Unterverzeichnis, welches die offiziellen KDE Veröffentlichung beinhalten.
Es gibt ein spezielles Unterverzeichnis in /branches namens work/. Dieses Unterverzeichnis wird als "Arbeitszweig" bezeichnet und beinhaltet Zweige bei denen an neuen Features gearbeitet wird. Manchmal sind diese sehr experimentell. Arbeitszweige für mehrere Applikationen finden sich in /branches/work/, doch für einzelne Applikationen finden sich Arbeitszweige im jeweiligen Unterverzeichnis. Diese Entscheidung liegt bei den Entwicklern.
Um entwas aus Subversion auszuchecken benutzt man das Unterkommando checkout:
Wenn Sie trunk/KDE oder branches/KDE/foo auschecken, werden Sie auch die komplette kde-i18n herunterladen, welche sehr groß ist! |
---|
Warnung |
Angenommen Sie wollen nur KDevelop aus dem KDE Repository auschecken, würden Sie folgende Kommandos eingeben:
CVS Kommando:
cvs -d :pserver:yourname@cvs.kde.org:/home/kde login cvs -d :pserver:yourname@cvs.kde.org:/home/kde checkout kdevelop
Subversion Kommando:
CVS Benutzer die einen ssh Zugang besitzen, sollten das Protokoll svn+ssh, CVS Benutzer, die einen Passwortzugang benutzen sollten das Protokoll https im folgenden benutzen.
svn checkout <protocol>://<username>@svn.kde.org/home/kde/trunk/KDE/kdevelop
Um zu aktualisieren, benutzen Sie das update Unterkommando.
Hier gibt es keinen Unterschied zu CVS: Sie wechseln in ihre ausgecheckte lokale Kopie (für diejenigen, für die das alles neu ist: die ausgecheckte Kopie sollte sich in Ihrem Heimatordner befinden) und geben ein svn update Kommando (oder kürzer svn up).
Um herauszufinden welche lokalen Dateien verändert wurden, haben die meisten unter CVS das Kommando cvs up aufgerufen und dann diejenigen Dateien gesucht, die mit einem M markiert waren. Das funktioniert unter svn nicht, daher müssen Sie das Kommando svn status aufrufen, um den Status der Dateien zu ermitteln.
Um Änderungen hochzuladen ruft man, ähnlich wie bei CVS, die Unterkommandos commit oder checkin (Kurzversion davon ci) auf.
CVS Kommando:
cvs commit # oder cvs ci # oder cvs ci filename.cpp
Subversion Kommando:
svn commit # oder svn ci # oder svn ci filename.cpp
Auf diese Weise wird svn den in $SVN_EDITOR eingetragenen Texteditor aufrufen, damit Sie das Änderungsprotokoll ausfüllen können. Wenn Sie es vorziehen, können Sie svn auch über die -m Option eine vollständige Mitteilung übergeben:
svn ci -m "Updating protocol to conform to HTTP/1.1"
Subversion speichert die zu ignorierenden Dateien für jedes Verzeichnis. Um diese Liste für das aktuelle Verzeichnis zu bearbeiten, rufen Sie einfach
svn propedit svn:ignore .
auf. Damit wird der eingestellte Editor aufgerufen, in dem Sie die Namen der Dateien eintragen können, die ignoriert werden sollen, eine Datei pro Zeile. Wenn Sie fertig sind, einfach ein commit ausführen, damit die Dateien auf dem Server aktualisiert werden.
Eine Menge Dateien wurden bei CVS mit Hilfe der globalen Ignorierliste ignoriert, diese Liste wird von SVN nicht unterstützt. Sie können auf svn 1.3 warten oder Sie müssen die Ignorierliste in die Sammelgruppe in ihrer ~/.subversion/config einfügen (alle in einer Zeile):
global-ignores = *.o *.lo *.la .*.rej *.rej .*~ *~ .#* #*# .DS_Store *.moc *.moc.cc *.moc.cpp config.log config.status config.cache *.gmo .deps .libs SunWS_cache *.lo *.la *.rpo *.la.closure *_la_closure.cpp *_la_closure.cc *_la_closure.cxx *.all_cc.cc *.all_cpp.cpp *.all_C.C *.all_cxx.cxx *_meta_unload.cc *_meta_unload.h *_meta_unload.cpp *_meta_unload.C *_meta_unload.cxx index.cache.bz2 .memdump Makefile.rules.in Makefile.calls.in Makefile.rules Makefile.calls autom4te.cache *.kidl
Anders als CVS erzeugt Subversion keine Revisions-Nummer für jede veränderte Datei. Statt dessen wird das gesamte Repository als ganzes mit einer Revisions-Nummer versehen. Auf diese Art bezeichnet eine Revisions-Nummer einen bestimmten Status, den das Repository zu einem bestimmten Zeitpunkt hatte. In anderen Worten: Die Revisions-Nummer ist wie ein Zeitstempel (tatsächlich benutzt der Subversion-Server diesen Umstand, um schneller nach Daten im Repository zu suchen)
Wenn Sie also einen Check-out machen, teilt Ihnen Subversion das folgende (als Beispiel) mit:
Updated to revision 403821.
Das bedeutet, dass die letzte verfügbare Revision zu dem Zeitpunkt der Operation die Nummer 403821 ist. Wenn Sie eine Änderung vornehmen und abschicken (per commit), wird Subversion serverseitig die Revision aktualisieren und Sie davon in Kenntnis setzen. Wie in CVS werden nur die veränderten Dateien aktualisiert: Sie müssen cvs up aufrufen um den Rest der Dateien zu aktualisieren.
Möchten Sie eine bestimmte Revsision einer Datei haben, können Sie den -r Schalter benutzen. Neben der Revisions-Nummer akzeptiert -r eine Anzahl von weiteren Möglichkeiten:
Das folgende dient der Darstellung der verschiedenen Bedeutungen der Schlüsselworte:
Diese Schlüsselworte sind auch nützlich um logs und diffs für Aktualisieirungen des Repositorys zu erhalten.
Wenn man sich den Unterschied zwischen der Arbeitskopie und BASE ansehen möchte, kann man
svn diff
aufrufen. Das ist eine sehr schnelle Operation, da Subversion eine lokale Kopie von BASE bereithält. Man benötigt keine Netzwerkverbindung um diese Operation durchzuführen.
Möchte man den Unterschied zwischen der lokalen Kopie und der letzten verfügbaren Version auf dem Server betrachten, ruft man
svn diff -r HEAD
auf. Möchte man sehen, was sich seit dem letzten Update am Repository geändert hat, ruft man
svn diff -r BASE:HEAD
auf. Möchte man die letzte Änderung an einer Datei vor BASE sehen, kann man
svn diff -r PREV:BASE # oder svn diff -r PREV:COMMITTED
aufrufen. Das gleiche gilt auch für das svn log Kommando.
Es kann vorkommen, dass man eine Kopie eines Unterverzeichnisses von einem anderen Ort einfügen möchte. Das geschieht dann aus Bequemlichkeit und nicht um in diesem Verzeichnis Code zu schreiben. Natürlich sollte dieses Verzeichnis automatisch aktualisiert werden wann immer das Original sich ändert. Subversion kann einem dabei helfen. Man muss die Eigenschaft svn:external des Verzeichnisses bearbeiten und das Verzeichniss sollte hinzugefügt werden. Für das aktuelle Verzeichnisse benutzt man den Befehl
svn propedit svn:externals .
und gibt die Zeile
libkhalkhi svn://anonsvn.kde.org/home/kde/trunk/playground/pim/khalkhi
ein. Ein Update wird nun /trunk/playground/pim/khalkhi in das Unterverzeichnis libkhalkhi holen.
Es können jedoch keine Änderungen an der lokalen Kopie des externen Verzeichnisses hochgeladen werden, denn es ist eine nur-lesen Kopie. |
---|
Warnung |
Man kann svn://anonsvn.kde.org und kein anderes Protokoll verwenden, denn anonsvn.kde.org ist für jeden zugreifbar. Das https: oder svn+ssh: Protokoll wird nur für Benutzer funktionieren, die damit arbeiten. Es gibt noch ein paar kleine Nachteile mit anonsvn.kde.org: Es ist nicht immer mit svn.kde.org synchronisiert, daher brauchen aktualisierungen im Originalast eine Zeit bis sie auf anonsvn.kde.org erscheinen. Außerdem blockieren einige strenge Firewalls das svn: Protokoll.
Ein spezieller Fall in KDE 3 ist das Unterverzeichnis admin, welches die KDE 3 build Werkzeuge beinhaltet. Es ist mit dem Hauptverzeichnis in allen Modulen verzeichnet und wird in /branches/KDE/3.5/kde-common bearbeitet. Für admin ist der KDE subversion Server so konfiguriert, dass es für alle einen nur-lesen Zugriff gestattet. Wenn man also
admin https://svn.kde.org/home/kde/branches/KDE/3.5/kde-common/admin
sieht, besteht kein Anlass das zu ändern.