Getting Started/Sources/Subversion (de): Difference between revisions

From KDE TechBase
(Page copy from english version)
 
No edit summary
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Template:I18n/Language Navigation Bar|Getting Started/Sources/Using Subversion with KDE}}
 


{{TutorialBrowser (de)|
{{TutorialBrowser (de)|
Line 10: Line 10:
== Zusammenfassung ==
== Zusammenfassung ==


This is a quick KDE-specific introduction for using subversion to access files and software in KDE's repositories. For comprehensive coverage of Subversion we recommend reading the book
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 "[http://svnbook.red-bean.com/ Version Control with Subversion (englisch)]".
"[http://svnbook.red-bean.com/ Version Control with Subversion]".


== Am Anfang ==
== Erste Schritte ==


In order to use the KDE Subversion repository, you will need two things:
Um das KDE Subversion Repository benutzen zu können, benötigen Sie zwei Dinge:


# A Subversion client program
# Ein Subversion Client Programm
# An account in our repository
# Einen Zugang zu unserem Repository


Note: For anonymous read-only access use protocol "svn", no "yourname@" and server "anonsvn.kde.org" instead below.
Beachte: Für einen anonymen nur-lesen Zugriff benutzen Sie das Protokoll "svn", kein "yourname@" und Server "anonsvn.kde.org" anstatt dem unten genannten.


'''Installing Subversion:''' instructions on installing the client are not
'''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 <tt>--with-ssl --with-zlib</tt> Option übergeben.  
presented here. Refer to your system installation instructions to find out how
you can install Subversion. You will need version 1.1 at least. If you are
compiling from sources and want to access the KDE repository by https
(and not by svn+ssh), you will need SSL and ZLIB support,
so you will need the <tt>--with-ssl --with-zlib</tt> options.


Alternatively, you can install one of the many graphical clients out there.
Alternativ können Sie auch einen der zahlreich vefügbaren graphischen Clients installieren. Diese Anleitung wendet sich an personen, die nur das <tt>svn</tt> Programm benutzen und bezieht sich dabei auf Dinge die mit dem alten <tt>cvs</tt> Programm erledigt wurden.
This tutorial is intended for people using the <tt>svn</tt> program only, referring
to tasks accomplished with the usual <tt>cvs</tt> program.


'''Getting an account:''' if you had a CVS
'''Ein Benutzerkonto bekommen:''' Hatten Sie vorher ein CVS Benutzerkonto, wurde dieses zum neuen Subversion Client migriert. Wenn nicht, sehen Sie in der  [[Contribute/Get_a_SVN_Account|entsprechenden Anleitung]] nach, wie man eines bekommt.  
account before, it has been migrated to the new Subversion client. If
you didn't, refer to the [[Contribute/Get_a_SVN_Account|corresponding tutorial]] how to get one.


{{Note (de)|If you have lost your CVS password, there are simple ways to retrieve
{{Note (de)|Wenn Sie ihr CVS Passwort verloren haben, gibt es einfache Wege, dieses zu ermitteln. Benutzen Sie [http://ktown.kde.org/~coolo/cvspwd.c cvspwd.c] pder [http://kdab.net/~dfaure/cvs-unscramble cvs-unscramble] (Perl).}}
it. Use [http://ktown.kde.org/~coolo/cvspwd.c cvspwd.c] or [http://kdab.net/~dfaure/cvs-unscramble cvs-unscramble] (Perl).}}


== Die Struktur des KDE Repository  ==
== Die Struktur des KDE Repository  ==
Line 44: Line 33:
  svn.kde.org/home/kde
  svn.kde.org/home/kde


That's the address of the KDE Subversion repository. The repository is served by
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.  
HTTPS or SVN+SSH protocol, which means your password is secure against third-party
eavesdropping.


The SSL certificate md5 fingerprint for the repositories:
Der SSL certificate md5 fingerprint für die Repositorys ist:
  F6BF EDE2 D016 D1B2  4F18 742E 2C8F B7EF
  F6BF EDE2 D016 D1B2  4F18 742E 2C8F B7EF


The SSL certificate sha1 fingerprint for the repositories:
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
  e1:e6:41:96:3c:eb:ae:78:e2:73:0d:a2:32:2f:6b:21:13:bf:3d:0f


For people using svn+ssh, here's the fingerprint of the server's RSA key:
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
  86:f3:66:06:20:74:81:d0:1b:b4:2f:25:03:f7:8e:fb


The repository is organised in main directories:
Das Repository ist in Hauptverzeichnisse organisiert:


# /branches
# /branches
Line 63: Line 50:
# /trunk
# /trunk


You can explore the repository structure at [http://websvn.kde.org/ http://websvn.kde.org/]
Man kann das Repository über [http://websvn.kde.org/ http://websvn.kde.org/] durchforsten.
 


=== Das Unterverzeichnis /trunk ===
=== Das Unterverzeichnis /trunk ===


The <tt>/trunk</tt>
Das <tt>/trunk</tt> 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 <tt>www</tt> Modul, welches die Webpages rund um KDE beinhaltet.
top-level subdirectory is where the main development for KDE occurs.
What you will find here is what will become the next KDE release, and
its associated programs. Here you will also find the <tt>www</tt> module,
which contains webpages for KDE's site and related ones.


<tt>/trunk</tt> is further subdivided into these sub-directories:
<tt>/trunk</tt> ist unterteilt in folgende Unterverzeichnisse:


*<tt>KDE/</tt><br/>KDE itself, what will become the next public release. It contains the following modules:
*<tt>KDE/</tt><br/>KDE selber, welches die nächste Version werden wird. Es besteht aus folgenden Modulen:
**'''kdelibs''' - KDE basic libraries, used by all KDE programs
**'''kdelibs''' - KDE Hauptbibliotheken, die von allen KDE Programmen benutzt werden
**'''kdebase''' - KDE base programs, like the KDE Control Center, Kicker (the panel) and Konqueror (the web browser)
**'''kdebase''' - KDE Basisprogramme, wie das KDE Control Center, Plasma (die Oberfläche) und Konqueror (der Web Browser)
**'''kdeaccessibility''' - Accessibility files
**'''kdeaccessibility''' - Accessibility Dateien
**'''kdeadmin''' - KDE Administration applications
**'''kdeadmin''' - KDE Administrationsprogramme
**'''kdeartwork''' - Images, themes, sounds and other art files
**'''kdeartwork''' - Bilder, Themen, Sounds und andere künstlerische Dateien
**'''kdebindings''' - Bindings for languages other than C++
**'''kdebindings''' - Bindungen für andere Sprachen außer C++
**'''kdeedu''' - KDE Educational applications
**'''kdeedu''' - Erzieherische und Wissenschaftliche Programme für KDE
**'''kdegames''' - KDE Games
**'''kdegames''' - KDE Spiele
**'''kdegraphics''' - KDE Graphical applications
**'''kdegraphics''' - KDE Graphik Anwendungen
**'''kdemultimedia''' - KDE Multimedia applications
**'''kdemultimedia''' - KDE Multimedia Anwendungen
**'''kdenetwork''' - KDE Networking applications
**'''kdenetwork''' - KDE Netzwerk Anwendungen
**'''kdepim''' - KDE Personal Information Management applications
**'''kdepim''' - KDE Personal Information Management (PIM) Anwendungen
**'''kdepimlibs''' - Libraries used by KDE-PIM applications.
**'''kdepimlibs''' - Biblotheken, die von KDE-PIM Anwendungen benötigt werden.
**'''kdesdk''' - KDE Software Development Kit applications
**'''kdesdk''' - KDE Software Development Kit Anwendungen
**'''kdetoys''' - KDE toy applications
**'''kdetoys''' - KDE Spielzeug Anwendungen
**'''kdeutils''' - KDE General utilities
**'''kdeutils''' - Allgemeine KDE Werkzeuge
**'''kdevelop''' - The KDevelop program
**'''kdevelop''' - Das KDevelop Programm
**'''kdevplatform''' - The development platform which KDevelop is based on
**'''kdevplatform''' - Die Entwicklerplatform auf der KDevelop basiert
**'''kdewebdev''' - KDE Web development applications
**'''kdewebdev''' - KDE Webentwicklungsanwendungen
*<tt>kde-common</tt>
*<tt>kde-common</tt>
:Common admin/ directory
:Allgemeines admin/ Verzeichnis
*<tt>bugs/</tt>
*<tt>bugs/</tt>
:[http://bugs.kde.org/ Bugzilla] files
:[http://bugs.kde.org/ Bugzilla] Dateien
*<tt>developer.kde.org/</tt>
*<tt>developer.kde.org/</tt>
:The content of developer.kde.org
:Der Inhalt von developer.kde.org
*<tt>extragear/</tt>
*<tt>extragear/</tt>
:KDE programs outside the main KDE releases.
:KDE Programme die sich außerhalb der Haupt KDE Veröffentlichungen aufhalten
*<tt>kdereview/</tt>
*<tt>kdereview/</tt>
:Temporary home for KDE applications that are believed to have reached release-quality. From here, once all major issues are resolved, applications are moved either to <tt>/trunk/KDE/</tt> or to <tt>/trunk/extragear/</tt>
:Vorübergehende Heimat für all die KDE Applikationen, von denen geglaubt wird, daß sie reif für eine Veröffentlichung sind. Von hier aus werden die Applikationen entweder nach <tt>/trunk/KDE/</tt> oder nach <tt>/trunk/extragear/</tt> verschoben, sobald die größten Probleme ausgeräumt sind.
*<tt>kdesupport/</tt>
*<tt>kdesupport/</tt>
:Supporting applications and libraries for KDE
:Unterstützende Programme und Bibliotheken für KDE
*<tt>koffice/</tt><br/>The KDE Office suite, containing the programs:
*<tt>koffice/</tt><br/>Das KDE Office Paket, welches folgende Programme beinhaltet:
**'''karbon'''
**'''karbon'''
**'''kchart'''
**'''kchart'''
Line 122: Line 104:
**'''kword'''
**'''kword'''
*<tt>konstruct/</tt>
*<tt>konstruct/</tt>
:Konstruct, the KDE build program
:Konstruct, das KDE build Programm
*<tt>l10n-kde3/</tt>
*<tt>l10n-kde3/</tt>
:Translations for the "unstable" modules of KDE 3 (extragear, playground)
:Übersetzungen für die "unstabilen" Module von KDE 3 (extragear, playground)
*<tt>l10n-kde4/</tt>
*<tt>l10n-kde4/</tt>
:Translations for KDE 4
:Übersetzungen für KDE 4
*<tt>playground/</tt>
*<tt>playground/</tt>
:The KDE playground: applications being developed, but not having yet reached release-quality.
:Der KDE Spielplatz: Applications die gerade entwickelt werden aber noch keine Veröffentlichungsqualität erreicht haben.
*<tt>qt-copy/</tt>
*<tt>qt-copy/</tt>
:The convenience copy of [http://www.trolltech.com/ Trolltech's] Qt library, which KDE is based upon.
:Zu Vereinfachung eine Kopie von  [http://www.trolltech.com/ Trolltechs] Qt Bibliothek, auf welcher KDE basiert.
*<tt>tests/</tt>
*<tt>tests/</tt>
:khtml, KOffice and ksvg testcases
:khtml, KOffice und ksvg Testfälle
*<tt>valgrind/</tt>
*<tt>valgrind/</tt>
:The Valgrind application, which is hosted on the KDE repository, but that is not part of KDE itself. Note that newer versions of Valgrind are developed on their own repository. The KDE Valgrind modules only holds up to Valgrind 2.4.
:Die Valgrind Application, welche im KDE Repository betreut wird jedoch kein Teil von KDE selber ist. Neuere Versionen von Valgrind werden in einem eigenen Repository entwickelt. Das KDE Valgrind Modul beinhaltet nur Valgrind bis zur Version 2.4.
*<tt>www/</tt>
*<tt>www/</tt>
:Webpages for the KDE site (and related sites). Write access to this directory is restricted.
:Webpages für die KDE Site (und verwandte Sites). Schreibzugriff auf dieses Verzeichnis ist beschränkt.


=== Das Unterverzeichnis <tt>/tags</tt> ===
=== Das Unterverzeichnis <tt>/tags</tt> ===


This
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.
directory contains the official releases of the programs maintained and
developed in the KDE repository. Each individual application has a
subdirectory here. Inside it, you will find the release numbers.


For instance, the KDE 3.4.0 code can be found under <tt>/tags/KDE/3.4.0/</tt>.
So kann zum Beispiel der Code für KDE 3.4.0 unter <tt>/tags/KDE/3.4.0/</tt> gefunden werden.


=== Das Unterverzeichnis <tt>/branches</tt> ===
=== Das Unterverzeichnis <tt>/branches</tt> ===


This directory contains the branch versions of the applications after a major release.
Dieses Verzeichnis beinhaltet die Zweig-Versionen von Applikationen nach einer Hauptveröffentlichung.
 
Most
KDE applications adhere to the philosphy that new features (as well as
new user-visible strings) are added only to the next release cycle &#8212;
the one that lives in <tt>/trunk/</tt>. However, bugfixes are applied to all
applications, even after release.
 
In
order to do that, a branch is created at the moment of the release,
indicating the state of the files at that time. Bugfixes are then
checked in to those files. Those branches are the ones in <tt>/branches/</tt>.


For instance, the KDE 3.4.x branch can be found under <tt>/branches/KDE/3.4/</tt>
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 &#8212; derjenige der in <tt>/trunk/</tt> entwickelt wird &#8212; einfließen. Fehlerbereinigungen werden jedoch auf alle Applikationen angewandt, auch nach einer Veröffentlichung.


The subdirectories you will find inside <tt>/branches</tt> are the
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 <tt>/branches/</tt> zu finden sind.  
application subdirs, like <tt>akregator/</tt>, <tt>amarok/</tt>,
<tt>arts/</tt>, <tt>k3b/</tt>, etc. You will also find a <tt>KDE/</tt>
subdir, containing the official KDE releases since time immemorial.


One special subdir is found in <tt>/branches</tt>: <tt>work/</tt>. This
So kann zum Beispiel der KDE 3.4.x Zweig unter <tt>/branches/KDE/3.4/</tt> gefunden werden.
subdir contains the so-called "work branches", that is, branches containing
features being worked on, sometimes highly experimental. Multi-application
work branches always are checked in to <tt>/branches/work/</tt>, but
single-application branches may be found in each application's subdir. That
is a decision left to the developers.


Die Unterverzeichnisse die Sie in <tt>/branches</tt> finden, sie z.B. die Unterverzeichnisse der Aplikationen <tt>akregator/</tt>, <tt>amarok/</tt>,
<tt>arts/</tt>, <tt>k3b/</tt>, etc. Sie finden hier auch ein <tt>KDE/</tt>
Unterverzeichnis, welches die offiziellen KDE Veröffentlichung beinhalten.


Es gibt ein spezielles Unterverzeichnis in <tt>/branches</tt> namens <tt>work/</tt>. 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 <tt>/branches/work/</tt>, doch für einzelne Applikationen finden sich Arbeitszweige im jeweiligen Unterverzeichnis. Diese Entscheidung liegt bei den Entwicklern.


== Auschecken und Aktualisieren ==
== Auschecken und Aktualisieren ==


=== Auschecken ===
=== Auschecken ===
In order to check out something with Subversion, you use the <tt>checkout</tt> subcommand.
Um entwas aus Subversion auszuchecken benutzt man das Unterkommando <tt>checkout</tt>:


'''WARNING:''' If you checkout trunk/KDE/ or branches/KDE/foo/ you will download complete kde-i18n!
{{warning (de)|Wenn Sie trunk/KDE oder branches/KDE/foo auschecken, werden Sie auch die komplette kde-i18n herunterladen, welche sehr groß ist!}}


Suppose you wanted to check out only KDevelop from the KDE repository. You would do:
Angenommen Sie wollen nur KDevelop aus dem KDE Repository auschecken, würden Sie folgende Kommandos eingeben:


CVS command:
CVS Kommando:
  cvs -d :pserver:[email protected]:/home/kde login
  cvs -d :pserver:[email protected]:/home/kde login
  cvs -d :pserver:[email protected]:/home/kde checkout kdevelop
  cvs -d :pserver:[email protected]:/home/kde checkout kdevelop


Subversion command:
Subversion Kommando:


CVS users currently using ssh access, should use protocol svn+ssh,
CVS Benutzer die einen ssh Zugang besitzen, sollten das Protokoll svn+ssh,
CVS users currently using password access, should use protocol https
CVS Benutzer, die einen Passwortzugang benutzen sollten das Protokoll https im folgenden benutzen.
in the following.


  svn checkout &lt;protocol&gt;://&lt;username&gt;@svn.kde.org/home/kde/trunk/KDE/kdevelop
  svn checkout &lt;protocol&gt;://&lt;username&gt;@svn.kde.org/home/kde/trunk/KDE/kdevelop


=== Aktualisieren ===
=== Aktualisieren ===
Um zu aktualisieren, benutzen Sie das <tt>update</tt> Unterkommando.


In order to update, you use the <tt>update</tt> subcommand.
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 <tt>svn update</tt> Kommando (oder kürzer <tt>svn up</tt>).  
 
This is no different from CVS: you change into your checked out copy (for those new to this whole process, the checked out copy should be in your Home folder) and issue a <tt>svn update</tt> (or, shorter, <tt>svn up</tt>) command.


== Den Status einer Datei ermitteln ==
== Den Status einer Datei ermitteln ==


To know which local files you had modified, in CVS most people did
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 <tt>svn status</tt> aufrufen, um den Status der Dateien zu ermitteln.
cvs up
and looked at the files with '''M''', this does not work with svn so you have to do
svn status
to know the status of the files.


== Ins Repository hochladen ==
== Ins Repository hochladen ==


Just like in CVS, committing to the Subversion repository is accomplished
Um Änderungen hochzuladen ruft man, ähnlich wie bei CVS, die Unterkommandos <tt>commit</tt> oder <tt>checkin</tt> (Kurzversion davon <tt>ci</tt>) auf.
with the <tt>commit</tt> or <tt>checkin</tt> (<tt>ci</tt> for short) subcommands.


CVS command:
CVS Kommando:
  cvs commit
  cvs commit
  # or
  # oder
  cvs ci
  cvs ci
  # or
  # oder
  cvs ci filename.cpp
  cvs ci filename.cpp


Subversion command:
Subversion Kommando:
  svn commit
  svn commit
  # or
  # oder
  svn ci
  svn ci
  # or
  # oder
  svn ci filename.cpp
  svn ci filename.cpp


This way, <tt>svn</tt> will launch the editor specified in <tt>$SVN_EDITOR</tt> for you
Auf diese Weise wird <tt>svn</tt> den in <tt>$SVN_EDITOR</tt> eingetragenen Texteditor aufrufen, damit Sie das Änderungsprotokoll ausfüllen können. Wenn Sie es vorziehen, können Sie <tt>svn</tt> auch über die -m Option eine vollständige Mitteilung übergeben:
to compose the commit message. If you prefer, you can give <tt>svn</tt> the -m
oprtion with your full message:


  svn ci -m "Updating protocol to conform to HTTP/1.1"
  svn ci -m "Updating protocol to conform to HTTP/1.1"
Line 240: Line 195:
== Dateien ignorieren ==
== Dateien ignorieren ==


Subversion stores ignored files per directory. To edit the ignored
Subversion speichert die zu ignorierenden Dateien für jedes Verzeichnis. Um diese Liste für das aktuelle Verzeichnis zu bearbeiten, rufen Sie einfach
files of the directory you are currently in, do
   svn propedit svn:ignore .
   svn propedit svn:ignore .
that will launch your editor, write there the names of the files you want to
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.
ignore, one file per line. Once you are done, do a commit so the ignored list
file gets updated on the server.


A lot of files were ignored in CVS with help from global ignore list which
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 {{path|~/.subversion/config}} einfügen (alle in einer Zeile):
is not supported yet by SVN. You can wait for svn 1.3 or you need to add the
ignore list to the [miscellany] group in your {{path|~/.subversion/config}} (all in
one line):


  global-ignores = *.o *.lo *.la .*.rej *.rej .*~ *~ .#* #*# .DS_Store *.moc
  global-ignores = *.o *.lo *.la .*.rej *.rej .*~ *~ .#* #*# .DS_Store *.moc
Line 260: Line 209:
  Makefile.rules Makefile.calls autom4te.cache *.kidl
  Makefile.rules Makefile.calls autom4te.cache *.kidl


== Working with multiple revisions and branches ==
== Mit verschiedenen Revisionen und Branches arbeiten ==


Unlike CVS, Subversion doesn't generate a revision number for each file
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)
modified. Instead, the full repository is versioned, as a whole. This way, a
given revision number represents the state the repository was on a given date.
In other words, a revision number is like a timestamp (in fact, the Subversion
server uses this fact to search for dates in the repository faster).


So, for instance, when you check out the KDE repository, Subversion will
Wenn Sie also einen Check-out machen, teilt Ihnen Subversion das folgende (als Beispiel) mit:
tell you the following:


  Updated to revision 403821.
  Updated to revision 403821.


This means that the latest revision available at the time of the operation
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 <tt>cvs up</tt> aufrufen um den Rest der Dateien zu aktualisieren.
was 403821. If you make a modification and commit, Subversion will update the
server-side revision and will inform you of it. Like CVS, only the committed
files will be updated: you will need run <tt>cvs up</tt> to update the rest of the
files.


If you want to retrieve a specific revision of a file, you can use the <tt>-r</tt>
Möchten Sie eine bestimmte Revsision einer Datei haben, können Sie den <tt>-r</tt> Schalter benutzen. Neben der Revisions-Nummer akzeptiert -r eine Anzahl von weiteren Möglichkeiten:
switch. Besides the revision number itself, -r accepts a number of other
possibilities:
    
    
* The revision number: for example, use -r 403819 to retrieve that version
* Die Revision-Nummer: Benutzen Sie beispielsweise -r 403819 um diese Version zu erhalten
* '''BASE''': the revision you updated to
* '''BASE''': Die Revision zu der Sie aktualisiert haben
* '''COMMITTED''': the revision a file was last modified, before BASE
* '''COMMITTED''': Die Revision an der eine Datei vor BASE zuletzt verändert wurde.
* '''PREV''': the revision of the previous commit to the file before COMMITTED
* '''PREV''': Die Revision des vorigen commits vor COMMITTED
* '''HEAD''': the most recent revision available in the server
* '''HEAD''': Die akuellste Revision die auf dem Server verfügbar ist
* '''{ date }''': between curly brackets, you can specify a date for searching the closest revisions
* '''{ date }''': Zwischen den geschwungenen Klammern kann ein Datum angegeben werden, damit die daran nähsten Änderungen gesucht werden


The following illustrates the evolution of the keywords:
Das folgende dient der Darstellung der verschiedenen Bedeutungen der Schlüsselworte:


# You run <tt>svn up</tt> to update to the latest available revision. Suppose Subversion tells you it updated to revision 403821. This means that HEAD and BASE are 403821.
# Wenn mann <tt>svn up</tt> aufruft, aktualisiert man zur neusten Revision. Angenommen Subversion teilt einem mit, dass man auf Revision 403821 aktualisiert hat, dann bedeutet das, dass HEAD und BASE die Revision 403821 haben.
# You modify file README and commit it. Suppose Subversion tells you it committed revision 403822. This means HEAD, BASE and COMMITTED are 403822.
# Wenn man die Datei README bearbeitet und hochläd (commit), teilt einem Subversion mit, dass man die Revision 403822 hochgeladen hat. Das bedeutet HEAD, BASE und COMMITTED sind 403822.
# You modify the file again and commit it. Now PREV is 403822, but HEAD, BASE and COMMITTED are updated to a new value (suppose it's 403823).
# Jetzt wird README erneut bearbeitet und hochgeladen (via commit). Jetzt ist PREV 403822 aber HEAD, BASE und COMMITTED sind zu einem neueren Wert aktualisiert (sagen wir zum Beispiel 403823)
# Now someone else modifies the repository, and you update your working copy. If Subversion tells you it updated to 403824, this means now HEAD and BASE are moved to 403824 (but PREV and COMMITTED stay the same)
# Nun verändert jemand anderes das Repsitory und man selber führt ein update der Arbeitskopie durch. Subversion teilt einem mit, dass man auf 403824 aktualisiet hat, das bedeutet, dass HEAD und BASE nun auf 403824 aktualisert wurden (doch PREV und COMMITTED bleiben gleich)
# If someone modifies the README file now, HEAD is moved. The other keywords stay the same for you, until you update. At this time, we will have HEAD = 403825 (the latest available revision), BASE = 403824 (the revision you last updated to), COMMITTED = 403823 (the revision of the latest change to the file when you last updated) and PREV = 403822 (the revision of the change before COMMITTED)
# Wenn nun jemand README bearbeitet, HEAD wird verändert. Die anderen Schlüsselworte bleiben für einen selber jedoch gleich, bis man ein update durchführt. Zu diesem Zeitpunkt haben wir HEAD bei 403825 (die neuste verfügbare Revision), BASE = 403824 (die Revision, auf die zuletzt aktualisiert wurde), COMMITTED = 403823 (die Revision der letzten Änderung an der Datei als man zuletzt aktualisiert hat) und PREV = 403822 (die Revision der Änderung vor COMMITTED)


Those keywords are useful to retrieve logs and diffs for commits to the
Diese Schlüsselworte sind auch nützlich um logs und diffs für Aktualisieirungen des Repositorys zu erhalten.
repository.


If you want to see the difference between your working copy and BASE, you
Wenn man sich den Unterschied zwischen der Arbeitskopie und BASE ansehen möchte, kann man
can run:


  svn diff
  svn diff


This is a very fast operation, since Subversion keeps a local copy of BASE.
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.
It doesn't need a network connection to accomplish this operation.


If you want to see the difference between your local copy and the latest
Möchte man den Unterschied zwischen der lokalen Kopie und der letzten verfügbaren Version auf dem Server betrachten, ruft man
available on the server, you will run:


  svn diff -r HEAD
  svn diff -r HEAD


If you want to see what has changed in the repository since you've last updated, you can use:
auf. Möchte man sehen, was sich seit dem letzten Update am Repository geändert hat, ruft man
  svn diff -r BASE:HEAD
  svn diff -r BASE:HEAD


If you want to see the last change to a file before BASE, you can use:
auf. Möchte man die letzte Änderung an einer Datei vor BASE sehen, kann man
 
  svn diff -r PREV:BASE
  svn diff -r PREV:BASE
  # or
  # oder
  svn diff -r PREV:COMMITTED
  svn diff -r PREV:COMMITTED


That is also valid for the <tt>svn log</tt> command.
aufrufen. Das gleiche gilt auch für das <tt>svn log</tt> Kommando.


== Unterverzeichnisse von anderen Orten verlinken ==
== Unterverzeichnisse von anderen Orten verlinken ==


It can happen you would like to include a copy of a subdirectory from another place, but just for convenience, not for developing the code in there. Of course it should be updated automatically whenever the original changes. Subversion can help you. You need to edit the property <tt>svn:external</tt> of the directory the subdirectory should be added to. So for the current directory you use
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 <tt>svn:external</tt> des Verzeichnisses bearbeiten und das Verzeichniss sollte hinzugefügt werden. Für das aktuelle Verzeichnisse benutzt man den Befehl
 
  svn propedit svn:externals .
  svn propedit svn:externals .
and then enter lines of the form
und gibt die Zeile
  libkhalkhi svn://anonsvn.kde.org/home/kde/trunk/playground/pim/khalkhi
  libkhalkhi svn://anonsvn.kde.org/home/kde/trunk/playground/pim/khalkhi
Updating will now fetch <tt>/trunk/playground/pim/khalkhi</tt> into the subdirectoy <tt>libkhalkhi</tt>.
ein. Ein Update wird nun <tt>/trunk/playground/pim/khalkhi</tt> in das Unterverzeichnis <tt>libkhalkhi</tt> holen.


{{warning (de)|Beware that you cannot commit changes you did to the local copy of the external subdirectory, it is just a readonly copy.}}
{{warning (de)|Es können jedoch keine Änderungen an der lokalen Kopie des externen Verzeichnisses hochgeladen werden, denn es ist eine nur-lesen Kopie.}}


You use <tt>svn://anonsvn.kde.org</tt> and not another protocol, because <tt>anonsvn.kde.org</tt> is accessible to everyone. Using <tt>https:</tt> or <tt>svn+ssh:</tt> would only work for users of that protocol. There are still some small disadvantage with <tt>anonsvn.kde.org</tt>: It is not always in synchronization with <tt>svn.kde.org</tt>, so updates in the original branch may take a while to appear on <tt>anonsvn.kde.org</tt>. And some strict firewalls are blocking the <tt>svn:</tt> protocol.
Man kann <tt>svn://anonsvn.kde.org</tt> und kein anderes Protokoll verwenden, denn <tt>anonsvn.kde.org</tt> ist für jeden zugreifbar. Das <tt>https:</tt> oder <tt>svn+ssh:</tt> Protokoll wird nur für Benutzer funktionieren, die damit arbeiten. Es gibt noch ein paar kleine Nachteile mit <tt>anonsvn.kde.org</tt>:  
Es ist nicht immer mit <tt>svn.kde.org</tt> synchronisiert, daher brauchen aktualisierungen im Originalast eine Zeit bis sie auf <tt>anonsvn.kde.org</tt> erscheinen. Außerdem blockieren einige strenge Firewalls das <tt>svn:</tt> Protokoll.


A special case in KDE 3 is the subdirectory <tt>admin</tt>, containing the KDE 3 build utilities. It is linked in to the top directory in all modules, and maintained in <tt>/branches/KDE/3.5/kde-common</tt>. For <tt>admin</tt> the KDE subversion server is configured to allow readonly access for everyone, so if you see
Ein spezieller Fall in KDE 3 ist das Unterverzeichnis <tt>admin</tt>, welches die KDE 3 build Werkzeuge beinhaltet. Es ist mit dem Hauptverzeichnis in allen Modulen verzeichnet und wird in <tt>/branches/KDE/3.5/kde-common</tt> bearbeitet. Für <tt>admin</tt> 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
  admin https://svn.kde.org/home/kde/branches/KDE/3.5/kde-common/admin
there is no need to change this.
sieht, besteht kein Anlass das zu ändern.
 
== Mehr Informationen im KDE Wiki ==


See [http://wiki.kde.org/tiki-index.php?page=KDE%20Subversion%20HOWTO the KDE wiki] for more
== Weitere Links ==
information about subversion in KDE
* [[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]

Revision as of 09:53, 15 July 2012


Subversion mit KDE benutzen
Anleitungsserie   Anfang
Voriges Kapitel   None
Nächstes Kapitel   n/a
Weiterführende Texte   n/a
Navigation   Deutsche Startseite

Zusammenfassung

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)".

Erste Schritte

Um das KDE Subversion Repository benutzen zu können, benötigen Sie zwei Dinge:

  1. Ein Subversion Client Programm
  2. Einen Zugang zu unserem Repository

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.

noframe
noframe
Wenn Sie ihr CVS Passwort verloren haben, gibt es einfache Wege, dieses zu ermitteln. Benutzen Sie cvspwd.c pder cvs-unscramble (Perl).
Anmerkung


Die Struktur des KDE Repository

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:

  1. /branches
  2. /tags
  3. /trunk

Man kann das Repository über http://websvn.kde.org/ durchforsten.

Das Unterverzeichnis /trunk

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:

  • KDE/
    KDE selber, welches die nächste Version werden wird. Es besteht aus folgenden Modulen:
    • kdelibs - KDE Hauptbibliotheken, die von allen KDE Programmen benutzt werden
    • kdebase - KDE Basisprogramme, wie das KDE Control Center, Plasma (die Oberfläche) und Konqueror (der Web Browser)
    • kdeaccessibility - Accessibility Dateien
    • kdeadmin - KDE Administrationsprogramme
    • kdeartwork - Bilder, Themen, Sounds und andere künstlerische Dateien
    • kdebindings - Bindungen für andere Sprachen außer C++
    • kdeedu - Erzieherische und Wissenschaftliche Programme für KDE
    • kdegames - KDE Spiele
    • kdegraphics - KDE Graphik Anwendungen
    • kdemultimedia - KDE Multimedia Anwendungen
    • kdenetwork - KDE Netzwerk Anwendungen
    • kdepim - KDE Personal Information Management (PIM) Anwendungen
    • kdepimlibs - Biblotheken, die von KDE-PIM Anwendungen benötigt werden.
    • kdesdk - KDE Software Development Kit Anwendungen
    • kdetoys - KDE Spielzeug Anwendungen
    • kdeutils - Allgemeine KDE Werkzeuge
    • kdevelop - Das KDevelop Programm
    • kdevplatform - Die Entwicklerplatform auf der KDevelop basiert
    • kdewebdev - KDE Webentwicklungsanwendungen
  • kde-common
Allgemeines admin/ Verzeichnis
  • bugs/
Bugzilla Dateien
  • developer.kde.org/
Der Inhalt von developer.kde.org
  • extragear/
KDE Programme die sich außerhalb der Haupt KDE Veröffentlichungen aufhalten
  • kdereview/
Vorübergehende Heimat für all die KDE Applikationen, von denen geglaubt wird, daß sie reif für eine Veröffentlichung sind. Von hier aus werden die Applikationen entweder nach /trunk/KDE/ oder nach /trunk/extragear/ verschoben, sobald die größten Probleme ausgeräumt sind.
  • kdesupport/
Unterstützende Programme und Bibliotheken für KDE
  • koffice/
    Das KDE Office Paket, welches folgende Programme beinhaltet:
    • karbon
    • kchart
    • kexi
    • kformula
    • kivio
    • koshell
    • kplato
    • kpresenter
    • krita
    • kspread
    • kugar
    • kword
  • konstruct/
Konstruct, das KDE build Programm
  • l10n-kde3/
Übersetzungen für die "unstabilen" Module von KDE 3 (extragear, playground)
  • l10n-kde4/
Übersetzungen für KDE 4
  • playground/
Der KDE Spielplatz: Applications die gerade entwickelt werden aber noch keine Veröffentlichungsqualität erreicht haben.
  • qt-copy/
Zu Vereinfachung eine Kopie von Trolltechs Qt Bibliothek, auf welcher KDE basiert.
  • tests/
khtml, KOffice und ksvg Testfälle
  • valgrind/
Die Valgrind Application, welche im KDE Repository betreut wird jedoch kein Teil von KDE selber ist. Neuere Versionen von Valgrind werden in einem eigenen Repository entwickelt. Das KDE Valgrind Modul beinhaltet nur Valgrind bis zur Version 2.4.
  • www/
Webpages für die KDE Site (und verwandte Sites). Schreibzugriff auf dieses Verzeichnis ist beschränkt.

Das Unterverzeichnis /tags

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.

Das Unterverzeichnis /branches

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.

Auschecken und Aktualisieren

Auschecken

Um entwas aus Subversion auszuchecken benutzt man das Unterkommando checkout:

noframe
noframe
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:[email protected]:/home/kde login
cvs -d :pserver:[email protected]:/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

Aktualisieren

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).

Den Status einer Datei ermitteln

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.

Ins Repository hochladen

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"

Dateien ignorieren

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

Mit verschiedenen Revisionen und Branches arbeiten

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:

  • Die Revision-Nummer: Benutzen Sie beispielsweise -r 403819 um diese Version zu erhalten
  • BASE: Die Revision zu der Sie aktualisiert haben
  • COMMITTED: Die Revision an der eine Datei vor BASE zuletzt verändert wurde.
  • PREV: Die Revision des vorigen commits vor COMMITTED
  • HEAD: Die akuellste Revision die auf dem Server verfügbar ist
  • { date }: Zwischen den geschwungenen Klammern kann ein Datum angegeben werden, damit die daran nähsten Änderungen gesucht werden

Das folgende dient der Darstellung der verschiedenen Bedeutungen der Schlüsselworte:

  1. Wenn mann svn up aufruft, aktualisiert man zur neusten Revision. Angenommen Subversion teilt einem mit, dass man auf Revision 403821 aktualisiert hat, dann bedeutet das, dass HEAD und BASE die Revision 403821 haben.
  2. Wenn man die Datei README bearbeitet und hochläd (commit), teilt einem Subversion mit, dass man die Revision 403822 hochgeladen hat. Das bedeutet HEAD, BASE und COMMITTED sind 403822.
  3. Jetzt wird README erneut bearbeitet und hochgeladen (via commit). Jetzt ist PREV 403822 aber HEAD, BASE und COMMITTED sind zu einem neueren Wert aktualisiert (sagen wir zum Beispiel 403823)
  4. Nun verändert jemand anderes das Repsitory und man selber führt ein update der Arbeitskopie durch. Subversion teilt einem mit, dass man auf 403824 aktualisiet hat, das bedeutet, dass HEAD und BASE nun auf 403824 aktualisert wurden (doch PREV und COMMITTED bleiben gleich)
  5. Wenn nun jemand README bearbeitet, HEAD wird verändert. Die anderen Schlüsselworte bleiben für einen selber jedoch gleich, bis man ein update durchführt. Zu diesem Zeitpunkt haben wir HEAD bei 403825 (die neuste verfügbare Revision), BASE = 403824 (die Revision, auf die zuletzt aktualisiert wurde), COMMITTED = 403823 (die Revision der letzten Änderung an der Datei als man zuletzt aktualisiert hat) und PREV = 403822 (die Revision der Änderung vor COMMITTED)

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.

Unterverzeichnisse von anderen Orten verlinken

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.

noframe
noframe
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.

Weitere Links