Dieser Text befindet sich gegenwärtig in Bearbeitung, unterliegt ständigen Änderungen und kann dadurch nicht stets akkurat irgendeine freigegebene Version der Software Apache™ Subversion® beschreiben. Das Speichern dieser Seite als Lesezeichen oder andere auf diese Seite zu verweisen, ist keine so gute Idee. Besuchen Sie http://www.svnbook.com/, um stabile Versionen dieses Buchs zu erhalten.
Wir haben bereits detailliert besprochen, wie Subversion unterschiedliche Versionen von Dateien und Verzeichnissen im Projektarchiv ablegt und wieder herausholt. Ganze Kapitel haben sich dieser fundamentalen Funktionalität des Werkzeugs gewidmet. Falls die Versionierungsunterstützung an diesem Punkt aufhörte, wäre Subversion aus Versions-Kontroll-Perspektive immer noch vollständig.
Aber sie hört hier noch nicht auf.
Zusätzlich zur Versionierung Ihrer Verzeichnisse und Dateien liefert Subversion Schnittstellen zum Hinzufügen, Ändern und Entfernen versionierter Metadaten zu allen versionierten Dateien und Verzeichnissen. Wir bezeichnen diese Metadaten als Eigenschaften. Sie sind so etwas wie Tabellen mit zwei Spalten, die Namen von Eigenschaften auf beliebige Werte abbilden und an jedes Objekt Ihrer Arbeitskopie gehängt werden. Im Allgemeinen können Sie die Namen und Werte der Eigenschaften frei bestimmen, mit der Einschränkung, dass die Namen nur aus ASCII-Zeichen bestehen dürfen. Und das Beste an diesen Eigenschaften ist, dass auch sie genauso versioniert sind wie der textuelle Inhalt Ihrer Dateien. Sie können Änderungen an Eigenschaften ebenso einfach editieren, übertragen oder rückgängig machen wie Änderungen an Dateiinhalten. Das Versenden und Empfangen von Änderungen an Eigenschaften geschieht im Rahmen Ihrer typischen Übertragungs- und Aktualisierungstätigkeiten – Sie müssen hierfür nicht Ihre grundlegenden Prozesse anpassen.
Anmerkung | |
---|---|
Subversion hat die Menge aller Eigenschaften die mit
|
Eigenschaften tauchen auch an einer anderen Stelle von Subversion auf. So wie Dateien und Verzeichnisse mit beliebigen Eigenschafts-Namen und -Werten versehen werden können, kann auch jede Revision als Ganzes beliebige Eigenschaften bekommen. Dieselben Einschränkungen gelten auch hier – menschenlesbare Namen und beliebige binäre Werte. Der Hauptunterschied ist, dass Revisions-Eigenschaften unversioniert sind. Mit anderen Worten: falls Sie den Wert einer Revisions-Eigenschaft ändern oder die Eigenschaft löschen, gibt es mit Subversion Bordmitteln keine Möglichkeit, den ursprünglichen Wert wiederherzustellen.
Subversion besitzt keine besondere Richtlinie zur Verwendung
von Eigenschaften. Es verlangt nur, dass Sie keine Namen für Eigenschaften
verwenden, die den Präfix svn:
haben, da dieser
Namensraum für seine eigene Verwendung reserviert ist. Und
Subversion benutzt tatsächlich Eigenschaften – sowohl die
versionierten als auch die unversionierten. Bestimmte
versionierte Eigenschaften haben eine besondere Bedeutung oder
Auswirkungen, wenn sie an Dateien und Verzeichnissen hängen, oder
sie beinhalten eine spezielle Information über die Revision mit
der sie verbunden sind. Bestimmte Revisions-Eigenschaften werden
automatisch bei der Übertragung an Revisionen gehängt; sie
beinhalten Informationen über die Revision. Die meisten dieser
Eigenschaften werden an einer anderen Stelle in diesem Kapitel oder
in anderen Kapiteln im Rahmen allgemeinerer Themen erwähnt, mit
denen sie zusammenhängen. Eine erschöpfende Aufstellung der
vordefinierten Eigenschaften von Subversion finden Sie unter
„Reservierte Subversion-Eigenschaften“.
Anmerkung | |
---|---|
Während Subversion automatisch Eigenschaften
( |
In diesem Abschnitt untersuchen wir den Nutzen der Unterstützung von Eigenschaften – sowohl für den Anwender von Subversion als auch für Subversion selbst. Sie werden die Unterbefehle von svn kennenlernen, die mit Eigenschaften zu tun haben und wie Änderungen an Eigenschaften sich auf Ihren normalen Umgang mit Subversion auswirken.
Ebenso wie Subversion Eigenschaften verwendet, um zusätzliche Informationen über die enthaltenen Dateien, Verzeichnisse und Revisionen zu speichern, könnten Eigenschaften auch für Sie ähnlich von Nutzen sein. Sie werden es vielleicht als nützlich ansehen, wenn Sie in der Nähe Ihrer versionierten Daten spezielle Metadaten dazu unterbringen können.
Nehmen wir mal an, Sie möchten eine Webpräsenz entwerfen, die viele digitale Fotos mit Bildunterschrift und Zeitstempel anzeigen soll. Da sich die Menge Ihrer Fotos ständig ändert, möchten Sie soviel wie möglich automatisieren. Die Fotos können ziemlich groß werden, so dass Sie den Besuchern Ihrer Seite Miniaturvorschaubilder anbieten möchten.
Natürlich können Sie diese Funktionalität auch mit
herkömmlichen Dateien hinbekommen. Das bedeutet, Sie haben
image123.jpg
und
image123-thumbnail.jpg
gemeinsam in einem
Verzeichnis. Oder Sie speichern die Vorschaubildchen in einem
anderen Verzeichnis, etwa
thumbnails/image123.jpg
, falls Sie die
gleichen Dateinamen beibehalten möchten. Sie können auch die
Bildunterschriften und Zeitstempel auf ähnliche Weise
speichern, ebenso vom Originalbild getrennt. Das Problem
hierbei ist jedoch, dass sich Ihre Ansammlung an Dateien mit
jedem neu hinzugefügten Bild vervielfältigt.
Betrachten Sie nun dieselbe Webpräsenz, eingerichtet unter
Verwendung der Datei-Eigenschaften von Subversion. Stellen Sie
sich vor, sie hätten eine einzelne Bilddatei
image123.jpg
mit Eigenschaften namens
Unterschrift
,
Zeitstempel
und sogar
Vorschaubild
. Jetzt sieht Ihr Verzeichnis
viel überschaubarer aus – tatsächlich sieht es für den
flüchtigen Betrachter aus, als befänden sich dort nur
Bilddateien. Ihre Automatisierungs-Skripte wissen es jedoch
besser. Sie wissen, dass sie svn verwenden
können (oder noch besser, die Subversion-Sprachschnittstellen
– siehe „Benutzung der APIs“), um
die von Ihrer Webpräsenz zusätzlich benötigten Informationen
herauszuholen, ohne eine Indexdatei lesen oder
Pfad-Umbenennungs-Spielereien machen zu müssen.
Anmerkung | |
---|---|
Obwohl Subversion kaum Einschränkungen für die von Ihnen verwendeten Namen und Werte für Eigenschaften macht, ist es nicht entworfen worden, um optimal mit großen Eigenschafts-Werten oder umfangreichen Eigenschafts-Mengen für eine bestimmte Datei oder ein Verzeichnis umgehen zu können. Gewöhnlich behält Subversion gleichzeitig alle Eigenschafts-Namen und -Werte im Speicher, die zu einem einzelnen Objekt gehören, was bei umfangreichen Eigenschafts-Mengen zu erheblichen Leistungseinbußen oder fehlgeschlagenen Operationen führen kann. |
Spezielle Revisions-Eigenschaften werden auch sehr oft
genutzt. Häufig wird eine Eigenschaft verwendet, deren Wert
eine Fehlernummer eines Fehlerverwaltungssystem ist, mit dem
die Revision in Beziehung gebracht wird, etwa weil eine mit
dieser Revision vorgenommene Änderung den entsprechenden
Fehler behebt. Andere Anwendungsfälle umfassen die Vergabe
anwenderfreundlicher Namen für die Revision – es könnte
schwierig sein, sich zu erinnern, dass Revision 1935
vollständig getestet war. Wenn es jedoch eine Eigenschaft
Testergebnis
mit dem Wert alles
bestanden
für diese Revision gibt, ist das eine
durchaus nützliche Information. Subversion erlaubt es Ihnen
auf einfache Weise mit der Option
--with-revprop
des Befehls svn
commit:
$ svn commit -m "Fix up the last remaining known regression bug." \ --with-revprop "test-results=all passing" Sende lib/crit_bits.c Übertrage Daten . Revision 912 übertragen. $
Das Programm svn gestattet es, Datei- und Verzeichnis-Eigenschaften auf verschiedene Weise hinzuzufügen oder zu ändern. Für Eigenschaften mit kurzen menschenlesbaren Werten ist es vermutlich am einfachsten, eine neue Eigenschaft zu vergeben, indem deren Name und Wert auf der Kommandozeile für den Unterbefehl svn propset angegeben wird:
$ svn propset copyright '(c) 2006 Red-Bean Software' calc/button.c Eigenschaft »copyright« für »calc/button.c« gesetzt $
Jedoch haben wir die von Subversion angebotene Flexibilität
bei der Behandlung Ihrer Eigenschafts-Werte angepriesen; und wenn
Sie planen, einen mehrzeiligen textuellen oder sogar binären
Eigenschafts-Wert zu verwenden, wollen Sie diesen wahrscheinlich
nicht auf den Kommandozeile angeben. Deshalb besitzt der
Unterbefehl svn propset eine Option
--file
(-F
), um den Namen
einer Datei angeben zu können, deren Inhalt den neuen
Eigenschafts-Wert ergibt.
$ svn propset license -F /path/to/LICENSE calc/button.c Eigenschaft »license« für »calc/button.c« gesetzt $
Es gibt einige Einschränkungen für die Vergabe von
Namen für Eigenschaften. Ein Eigenschafts-Name muss mit einem Buchstaben,
einem Doppelpunkt (:
) oder einem
Unterstrich (_
) beginnen; danach können Sie
auch Ziffern, Bindestriche (-
) und Punkte
(.
) verwenden.[13]
Zusätzlich zum Befehl propset bietet das Programm svn den Befehl propedit. Dieser Befehl verwendet den konfigurierten Editor (siehe „Allgemeine Konfiguration“), um Eigenschaften hinzuzufügen oder zu ändern. Wenn Sie den Befehl aufrufen, startet svn Ihren Editor mit einer temporären Datei, die den gegenwärtigen Wert der Eigenschaft beinhaltet (oder leer ist, falls Sie eine neue Eigenschaft hinzufügen). Dann bearbeiten Sie diesen Wert in Ihrem Editor bis er dem Wert entspricht, den Sie für die Eigenschaft verwenden möchten, speichern die Datei und beenden den Editor. Falls Subversion feststellt, dass Sie tatsächlich den bestehenden Wert der Eigenschaft geändert haben, wird das als neuer Wert angenommen. Wenn Sie Ihren Editor ohne Änderungen beenden, wird die Eigenschaft nicht verändert:
$ svn propedit copyright calc/button.c ### den Editor ohne Änderungen verlassen Keine Änderungen der Eigenschaft »copyright« für »calc/button.c« $
Hier sollten wir anmerken, dass die svn-Unterbefehle, die mit Eigenschaften zu tun haben, ähnlich wie bei anderen Unterbefehlen, auch auf mehrere Pfade gleichzeitig angewendet werden können. Das ermöglicht Ihnen, mit einem Befehl die Eigenschaften auf einer Menge von Dateien zu bearbeiten. Wir hätten beispielsweise das Folgende machen können:
$ svn propset copyright '(c) 2006 Red-Bean Software' calc/* Eigenschaft »copyright« für »calc/Makefile« gesetzt Eigenschaft »copyright« für »calc/button.c« gesetzt Eigenschaft »copyright« für »calc/integer.c« gesetzt … $
Das ganze Hinzufügen und Bearbeiten von Eigenschaften ist nicht gerade nützlich, falls an die gespeicherten Werte nicht einfach heranzukommen ist. Also bietet das Programm svn zwei Unterbefehle zur Anzeige der Namen und Werte von Eigenschaften an Dateien und Verzeichnissen. Der Befehl svn proplist listet alle Eigenschafts-Namen auf, die für einen Pfad vergeben sind. Sobald Sie die Eigenschafts-Namen auf einem Element kennen, können Sie die Werte einzeln mittels svn propget abrufen. Wenn diesem Befehl ein Eigenschafts-Name und ein Pfad (oder eine Menge von Pfaden) mitgegeben wird, wird der Wert der Eigenschaft nach Standardausgabe geschrieben.
$ svn proplist calc/button.c Eigenschaften zu »calc/button.c«: copyright license $ svn propget copyright calc/button.c (c) 2006 Red-Bean Software
Es gibt sogar eine Variante des Befehls
proplist, die es erlaubt, sowohl die Namen
als auch die Werte aller Eigenschaften auszugeben. Übergeben Sie
einfach die Option --verbose
(-v
).
$ svn proplist -v calc/button.c Eigenschaften zu »calc/button.c«: copyright (c) 2006 Red-Bean Software license ================================================================ Copyright (c) 2006 Red-Bean Software. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the recipe for Fitz's famous red-beans-and-rice. …
Der letzte Unterbefehl, der mit Eigenschaften zu tun hat, ist propdel. Da Subversion Eigenschaften mit leeren Werten erlaubt, können Sie eine Eigenschaft nicht vollständig mit svn propedit oder mit svn propset entfernen. So hat beispielsweise dieser Befehl nicht den erwünschten Effekt:
$ svn propset license "" calc/button.c Eigenschaft »license« für »calc/button.c« gesetzt $ svn proplist -v calc/button.c Properties on 'calc/button.c': copyright (c) 2006 Red-Bean Software license $
Zum vollständigen Löschen von Eigenschaften müssen Sie den Unterbefehl propdel verwenden. Die Syntax ist den anderen Eigenschafts-Befehlen ähnlich:
$ svn propdel license calc/button.c Eigenschaft »license« wurde von »calc/button.c« gelöscht. $ svn proplist -v calc/button.c Eigenschaften zu »calc/button.c«: copyright (c) 2006 Red-Bean Software $
Können Sie sich an diese unversionierten
Revisions-Eigenschaften erinnern? Auch diese können Sie mit den
eben beschriebenen Unterbefehlen von svn
verändern. Geben Sie einfach den Kommandozeilenparameter
--revprop
an und die Revision, deren
Eigenschaft Sie ändern möchten. Da Revisionen global sind,
brauchen Sie keinen Zielpfad für diese Eigenschafts-Unterbefehle
anzugeben sofern Sie sich in einer Arbeitskopie des
Projektarchivs befinden, deren Revisions-Eigenschaft Sie ändern
möchten. Anderenfalls können Sie den URL irgendeines Pfades im
entsprechenden Projektarchiv angeben (inklusive des
Wurzelverzeichnisses des Projektarchivs). Sie möchten
beispielsweise die Protokollnachricht einer bestehenden
Revision ändern.[14] Falls Ihr
aktuelles Arbeitsverzeichnis Teil einer Arbeitskopie Ihres
Projektarchivs ist, können Sie einfach den Befehl svn
propset ohne Zielpfad aufrufen:
$ svn propset svn:log "* button.c: Fix a compiler warning." -r11 --revprop Eigenschaft »svn:log« wurde für Revision »11« im Projektarchiv gesetzt $
Selbst wenn Sie keine Arbeitskopie aus diesem Projektarchiv ausgecheckt haben, können Sie dennoch die Änderung an der Eigenschaft durchführen, indem Sie den URL der Wurzel des Projektarchivs angeben:
$ svn propset svn:log "* button.c: Fix a compiler warning." -r11 --revprop \ http://svn.example.com/repos/project Eigenschaft »svn:log« wurde für Revision »11« im Projektarchiv gesetzt. $
Beachten Sie, dass die Fähigkeit, diese unversionierten Eigenschaften zu verändern, ausdrücklich vom Administrator des Projektarchivs hinzugefügt werden muss (siehe „Berichtigung des Protokolleintrags“). Das geschieht aus dem Grund, dass diese Eigenschaften nicht versioniert sind, und Sie Gefahr laufen, durch unvorsichtiges Bearbeiten Informationen zu verlieren. Der Administrator des Projektarchivs kann Schutzmaßnahmen gegen diesen Verlust ergreifen, und standardmäßig ist die Veränderung unversionierter Eigenschaften nicht freigeschaltet.
Tipp | |
---|---|
Benutzer sollten nach Möglichkeit svn propedit statt svn propset verwenden. Während das Endergebnis dieser Befehle identisch ist, wird bei ersterem der aktuelle Wert der zu ändernden Eigenschaft angezeigt, was dabei hilft, sicherzustellen, dass die Änderung auch die beabsichtigte war. Das gilt besonders für unversionierte Revisions-Eigenschaften. Darüber hinaus ist es auch bedeutend einfacher, mehrzeilige Eigenschafts-Werte in einem Texteditor statt auf der Kommandozeile zu bearbeiten. |
Jetzt, da Sie mit allen svn-Unterbefehlen vertraut sind, die mit Eigenschaften zu tun haben, wollen wir uns ansehen, welche Auswirkungen Änderungen an Eigenschaften auf den üblichen Arbeitsablauf von Subversion haben. Wie wir bereits früher erwähnten, sind Eigenschaften von Dateien und Verzeichnissen versioniert, genau so wie der Dateiinhalt. Deshalb bietet Subversion dieselben Möglichkeiten für das Zusammenführen der Änderungen anderer mit Ihren eigenen – sauber oder konfliktbehaftet.
Wie bei Dateiinhalten handelt es sich bei Ihren Eigenschafts-Änderungen um lokale Modifikationen, die erst dann dauerhaft werden, wenn Sie sie mittels svn commit an das Projektarchiv übertragen. Ihre Eigenschafts-Änderungen können auch leicht rückgängig gemacht werden – der Befehl svn revert bringt Ihre Dateien und Verzeichnisse wieder in den unbearbeiteten Zustand – und zwar Inhalt, Eigenschaften und alles andere. Auch können Sie durch die Benutzung der Befehls svn status und svn diff interessante Informationen über den Status Ihrer Datei- und Verzeichnis-Eigenschaften erhalten.
$ svn status calc/button.c M calc/button.c $ svn diff calc/button.c Eigenschaftsänderungen: calc/button.c ___________________________________________________________________ Hinzugefügt: copyright ## -0,0 +1 ## +(c) 2006 Red-Bean Software $
Beachten Sie, dass der Unterbefehl
status das M
in der
zweiten statt in der ersten Spalte anzeigt. Das geschieht, da
wir zwar die Eigenschaften von calc/button.c
verändert haben, nicht jedoch dessen Inhalt. Hätten wir beides
geändert, würden wir M
auch in der ersten
Spalte sehen. (svn status behandeln wir in
„Verschaffen Sie sich einen Überblick über Ihre Änderungen“).
Ihnen ist vielleicht auch die ungewöhnliche Art und Weise aufgefallen, wie Subversion momentan Unterschiede von Eigenschaften darstellt. Sie können immer noch svn diff verwenden und dessen Ausgabe umleiten, um eine Patch-Datei zu erzeugen. Das Programm patch ignoriert Patches für Eigenschaften – es ignoriert regelmäßig alles, was es nicht versteht. Das bedeutet leider, dass für die vollständige Anwendung eines durch svn diff erzeugten Patches mit patch sämtliche Änderungen an Eigenschaften manuell nachgezogen werden müssen.
Subversion 1.7 verbessert diese Situation auf zweierlei Weise. Zunächst ist seine nicht-standardmäßige Anzeige von Eigenschafts-Unterschieden zumindest maschinenlesbar – eine Verbesserung gegenüber der Anzeige von Eigenschaften in Versionen vor 1.7. Aber Subversion 1.7 bringt auch den Unterbefehl svn patch mit, das speziell darauf zugeschnitten wurde, um die zusätzlichen Informationen zu verarbeiten, die die Ausgabe von svn diff beinhalten kann, und wendet diese Änderungen auf die Arbeitskopie an. Von besonderer Bedeutung für unser Thema ist, dass in von svn diff erzeugten Patch-Dateien enthaltene Eigenschafts-Unterschiede in Subversion 1.7 und später automatisch von svn patch auf eine Arbeitskopie angewendet werden können. Mehr zu svn patch finden Sie unter svn patch in svn Referenz – Subversion-Kommandozeilen-Client.
Anmerkung | |
---|---|
Es gibt eine Ausnahme, wie Eigenschafts-Änderungen durch
svn diff angezeigt werden: Änderungen an
Subversions spezieller Eigenschaft
|
Subversion 1.8 führt das Konzept ererbter Eigenschaften ein. Es gibt nichts wirklich besonderes an einer vererbbaren Eigenschaft. Tatsächlich sind alle versionierten Eigenschaften vererbbar! Der Hauptunterschied zwischen versionierten Eigenschaften vor und nach 1.8 besteht darin, das letztere einen Mechanismus zur Verfügung stellt, der es ermöglicht, die Eigenschaften der Eltern eines Zielpfades zu finden, selbst dann, wenn die Eltern nicht in der Arbeitskopie auftauchen.
Generische Vererbung von Eigenschaften offenbart sich in
einigen wenigen Befehlen. Zunächst können die Unterbefehle
svn proplist und svn propget
alle Eigenschaften eines URL oder der Eltern eines
Arbeitskopie-Pfades mit der Option
--show-inherited-props
abrufen. Wenn Sie
möchten, können Sie das als das Gegenteil einer
Unterbefehls-Operation mit --recursive
betrachten: statt rekursiv in die Unterverzeichnisse eines
Zieels "hinab" zu steigen, schauen Unterbefehle mit der Option
--show-inherited-props
"hinauf" in die
Elternverzeichnisse des Ziels. Auch die Unterbefehle
svnlook propget und svnlook
proplist verwenden die Option
--show-inherited-props
auf ähnliche
Weise.
Sehen wir uns einmal anhand eines Beispiels an, wie das
funktioniert. Das folgende rekursive propget auf der Wurzel
unserer Arbeitskopie findet heraus, dass die Eigenschaft
svn:auto-props
sowohl auf dem Ziel des
Unterbefehls als auch auf einem seiner Unterverzeichnisse
site
gesetzt ist:
$ svn pg svn:auto-props --verbose -R . Eigenschaften von ».«: svn:auto-props *.py = svn:eol-style=native *.c = svn:eol-style=native *.h = svn:eol-style=native Eigenschaften von »site«: svn:auto-props *.html = svn:eol-style=native
Wenn wir stattdessen das Unterverzeichnis
site
zum Ziel des Unterbefehls machen und
dabei die Option --show-inherited-props
verwenden, sehen wir, dass die Eigenschaft
svn:auto-props
auf dem Ziel
und seinem Elternverzeichnis gesetzt ist.
Die Eigenschaften des Elternverzeichnisses werden als "geerbt"
gekennzeichnet:
$ svn pg svn:auto-props --verbose --show-inherited-props site Geerbte Eigenschaften von »site«, geerbt von ».«: svn:auto-props *.py = svn:eol-style=native *.c = svn:eol-style=native *.h = svn:eol-style=native Eigenschaften von »site«: svn:auto-props *.html = svn:eol-style=native
In den vorangegangenen Beispielen entsprach die Wurzel der
Arbeitskopie der Wurzel des Projektarchivs, Eigenschaften
können jedoch auch von außerhalb ererbt werden, wenn dem nicht
so ist. Lassen Sie uns das Verzeichnis
site
aus dem vorangegangenen Beispiel
auschecken und es zur Wurzel unserer Arbeitskopie
machen:
$ svn co http://svn.example.com/repos site-wc A site-wc/publish A site-wc/publish/ch2.html A site-wc/publish/news.html A site-wc/publish/ch3.html A site-wc/publish/faq.html A site-wc/publish/index.html A site-wc/publish/ch1.html U site-wc Ausgecheckt, Revision 19. $ cd site-wc
Wenn wir nun nach ererbten Eigenschaften auf einem Pfad der Arbeitskopie suchen, erkennen wir, dass eine Eigenschaft von einem Elternverzeichnis der Arbeitskopie ererbt ist und eine andere aus einem Elternverzeichnis des Projektarchivs das einem Ort "oberhalb" des Wurzelverzeichnisses der Arbeitskopie repräsentiert:
$ svn pg svn:auto-props --verbose --show-inherited-props publish Geerbte Eigenschaften von »publish«, geerbt von »http://svn.example.com/repos«: svn:auto-props *.py = svn:eol-style=native *.c = svn:eol-style=native *.h = svn:eol-style=native Inherited properties on 'publish', Geerbte Eigenschaften von »publish«, geerbt von ».«: svn:auto-props *.html = svn:eol-style=native
Warnung | |
---|---|
Sie können Eigenschaften nur aus Projektarchiv-Pfaden ererben, für die Sie auch eine Leseberechtigung haben – siehe „Integrierte Authentifikation und Autorisierung“ und „Autorisierungs-Optionen“. Falls Sie für einen Elternpfad keine Leseberechtigung haben, sieht es aus, als habe das Elternverzeichnis keine gesetzten Eigenschaften. |
Wie oben erwähnt, unterstützen auch die Befehle
svnlook proplist und svnlook
propget die Option
--show-inherited-props
, allerdings werden die
ererbten Eigenschaften nach Projektarchiv-Pfaden angezeigt statt
nach Arbeitskopie-Pfaden:
$ svnlook pg repos svn:auto-props /site/publish --show-inherited-props -v Geerbte Eigenschaften von »/site/publish«, geerbt von »/«: svn:auto-props *.py = svn:eol-style=native *.c = svn:eol-style=native *.h = svn:eol-style=native Geerbte Eigenschaften von »/site/publish«, geerbt von »/site«: svn:auto-props *.html = svn:eol-style=native
Die von oberhalb der Arbeitskopie-Wurzel ererbten Eigenschaften werden in der Verwaltungsdatenbank der Arbeitskopie zwischengespeichert, wenn die Arbeitskopie erstmalig ausgecheckt wird und bei jeder Aktualisierung der Arbeitskopie aufgefrischt. Das bedeutet, dass Sie zum Ansehen ererbter Eigenschaften keinen Zugriff auf das Projektarchiv benötigen. Das erlaubt es Unterbefehlen von Subversion, die traditionell nie Zugriff auf das Projektarchiv benötigten (z.B. svn add), "abgehängt" zu bleiben, wobei stets der Zugriff auf Eigenschaften bestehen bleibt, die aus Pfaden ererbt wurden, die nicht in der Arbeitskopie vorhanden sind. Allerdings bedeutet das auch, dass ererbte Eigenschaften von oberhalb der Arbeitskopie-Wurzel sich seit Ihrer letzten Aktualisierung geändert haben könnten, so dass Ihr lokaler Zwischenspeicher nicht mehr aktuell ist. Wenn Sie also den absolut neuesten Wert einer ererbten Eigenschaft benötigen, ist es immer am sichersten, zunächst die Arbeitskopie zu aktualisieren oder direkt beim Projektarchiv nachzufragen.
An dieser Stelle mögen Sie denken, "tolle Sache, aber wozu
soll das gut sein?" Allein gesehen ist die Vererbung von
Eigenschaften nicht sehr nützlich. Vor 1.8 galten die
reservierten Subversion-eigenen
svn:*
-Eigenschaften (und wahrscheinlich
alle Ihrer eigenen maßgeschneiderten Eigenschaften) nur für
den Pfad auf den sie definiert waren oder höchstens auf dessen
unmittelbare Kindverzeichnisse.[16] Vielmehr jedoch sind vererbbare
Eigenschaften ein Werkzeug, das Subversion verwendet, um
interessantere Dinge zu tun, wie automatische Eigenschaften
mit der Eigenschaft svn:auto-props
zu
setzen oder mit der Eigenschaft
svn:global-ignores
Dinge zu definieren, die
im gesamten Projektarchiv ignoriert werden sollen –
siehe „Automatisches Setzen von Eigenschaften“ und „Ignorieren unversionierter Objekte“ zu weiteren
Informationen über diese besonderen Eigenschaften und wie sie
angewendet werden.
Tipp | |
---|---|
Gegenwärtig sind vererbbare Eigenschaften in erster
Linie nur nützlich hinsichtlich der Eigenschaften
|
Eigenschaften sind eine mächtige Funktionalität von Subversion, die als Schlüsselkomponenten zahlreicher Subversion-Funktionen agieren, welche an anderer Stelle in diesem und anderen Kapiteln erörtert werden – Unterstützung textueller Diffs und Zusammenführungen, Ersetzung von Schlüsselworten, Umwandlung von Zeilenenden, usw. Um jedoch den größten Nutzen aus Eigenschaften ziehen zu können, müssen sie auf den richtigen Dateien und Verzeichnissen gesetzt sein. Leider kann dieser Schritt leicht in der täglichen Routine vergessen werden, besonders deshalb, da das Versäumen des Setzens einer Eigenschaft normalerweise nicht einen offensichtlichen Fehler zur Folge hat (zumindest im Vergleich zu einer Datei, bei der versäumt wurde, sie unter Versionskontrolle zu stellen). Um Ihnen dabei zu helfen, die Eigenschaften an die Stellen zu bringen, wo sie nötig sind, bietet Subversion Ihnen ein paar einfache aber nützliche Funktionen.
Immer wenn Sie eine Datei mit svn add
oder svn import unter Versionskontrolle
nehmen, versucht Subversion, Sie zu unterstützen, indem es
einige übliche Datei-Eigenschaften automatisch setzt. Erstens
setzt Subversion auf Betriebssystemen, deren Dateisystem ein
Ausführbarkeits-Erlaubnis-Bit unterstützt, automatisch die
Eigenschaft svn:executable
auf neu
hinzugefügte oder importierte Dateien, bei denen das
Ausführbarkeits-Bit gesetzt ist. (Siehe „Ausführbarkeit von Dateien“ weiter
unten in diesem Kapitel für weitere Informationen zu dieser
Eigenschaft.)
Zweitens versucht Subversion, den MIME-Typen der Datei zu
ermitteln. Falls Sie einen Laufzeitparameter
mime-types-files
konfiguriert haben,
versucht Subversion in dieser Datei einen passenden MIME-Typen
für die Endung Ihrer Datei zu finden. Wenn es fündig wird,
setzt es die Eigenschaft svn:mime-type
Ihrer
Datei auf den gefundenen MIME-Typen. Falls keine Datei
konfiguriert oder kein passender Typ für die Dateiendung
gefunden wurde, verwendet Subversion stattdessen heuristische
Algorithmen, um den MIME-Typen der Datei zu ermitteln.
Abhängig davon, wie es gebaut wurde, kann Subversion 1.7
Dateiprüfungs-Bibliotheken verwenden[17], um den Dateitypen aufgrund des
Inhalts zu bestimmen. Falls all das fehlschlägt, benutzt
Subversion seine eigene recht einfache Heuristik, um
festzustellen, ob die Datei nicht-textuellen Inhalt hat. Falls
das der Fall ist, wird automatisch die Eigenschaft
svn:mime-type
dieser Datei auf
application/octet-stream
gesetzt (der
allgemeine „dies ist eine Ansammlung von
Bytes“-MIME-Type). Falls Subversion falsch rät, oder
falls Sie den Wert der Eigenschaft
svn:mime-type
präziser setzen möchten
– etwa image/png
oder
application/x-shockwave-flash
–
können Sie natürlich jederzeit die Eigenschaft entfernen oder
bearbeiten. (Mehr zur Verwendung von MIME-Typen durch
Subversion in „Datei-Inhalts-Typ“ später in
diesem Kapitel.)
Anmerkung | |
---|---|
UTF-16 wird häufig verwendet, um Dateien zu kodieren, deren semantischer Inhalt zwar textueller Natur ist, die allerdings voller Bytes außerhalb des typischen ASCII-Zeichenraums sind. Als solche neigt Subversion dazu, diese Dateien als binär zu klassifizieren, sehr zum Leidwesen von Anwendern, die zeilenweise Unterschiedungen und Zusammenführungen, Schlüsselwortersetzungen und andere Verhaltensweisen für diese Dateien wünschen. |
Darüber hinaus bietet Subversion über sein
Laufzeit-Konfigurationssystem (siehe „Laufzeit-Konfigurations-Bereich“) eine flexible
Möglichkeit, automatisch Eigenschaften zu setzen, die es Ihnen
erlaubt, Abbildungen von Dateinamensmustern auf
Eigenschafts-Namen und -Werte vorzunehmen. Auch hier haben
diese Abbildungen Auswirkungen auf das Hinzufügen und
Importieren und können nicht nur die standardmäßigen
Entscheidungen Subversions bezüglich des Mime-Typs außer Kraft
setzen, sondern auch zusätzliche Subversion- oder spezielle
Eigenschaften setzen. Beispielsweise könnten Sie eine
Abbildung definieren, die bestimmt, dass jedes Mal wenn eine
JPEG-Datei hinzugefügt wird – Dateien, deren Namen auf
das Muster *.jpg
passen – Subversion
automatisch die Eigenschaft svn:mime-type
für diese Dateien auf image/jpeg
setzt.
Oder vielleicht sollen alle Dateien mit dem Muster
*.cpp
svn:eol-style
auf
native
und svn:keywords
auf Id
gesetzt bekommen. Für weitere
Details zur Unterstützung automatischer Eigenschaften in der
Laufzeit-Konfiguration siehe
„Allgemeine Konfiguration“
Obwohl die Unterstützung automatischer Eigenschaften über
das Laufzeit-Konfigurations-System gewiss sehr praktisch ist,
bevorzugen Subversion-Administratoren vielleicht eine Menge
von Eigenschafts-Definitionen, die von allen Clients
automatisch berücksichtigt werden, wenn sie aur Arbeitskopien
arbeiten, die von einem bestimmten Server ausgecheckt worden
sind. Subversion 1.8 und neuere Clients unterstützen diese
Funktionalität mithilfe der vererbbaren Eigenschaft
svn:auto-props
.
Die Eigenschaft svn:auto-props
funktioniert wie die Laufzeit-Konfiguration, die das
automatische Setzen von Eigenschaften beim Hinzufügen oder
Importieren ermöglicht. Es wird erwartet, dass der Wert der
Eigenschaft svn:auto-props
dem Wert der
Laufzeit-Konfigurations-Option auto-props
entspricht (d.h., alle Schlüssel-Wert-Paare im Format
FILE_PATTERN = PROPNAME=VALUE[;PROPNAME=VALUE ...]). Wie bei
der Laufzeit-Option auto-props
kann auch
die Eigenschaft svn:auto-props
außer Acht
gelassen werdem, wenn die Option
--no-auto-props
verwendet wird, jedoch wird,
anders als bei der Konfigurations-Option, die Eigenschaft
svn:auto-props
nicht
außer Kraft gesetzt, wenn die Konfigurations-Option
enable-auto-props
auf no
gesetzt wird.
Nehmen wir beispielsweise an, Sie hätten eine Arbeitskopie
von Ihrem trunk
-Zweig ausgecheckt und
müssen eine neue Datei hinzufügen (dabei nehmen wir weiter an,
dass automatische Eigenschaften in Ihren
Laufzeit-Konfiguration abgestellt sind):
$ svn st ? calc/data.c $ svn add calc/data.c A calc/data.c $ svn proplist -v calc/data.c Eigenschaften von »calc/data.c«: svn:eol-style native
Beachten Sie, dass die Eigenschaft
svn:eol-style
automatisch auf die Datei
data.c
gesetzt wurde, nachdem sie die
unversionierte Datei unter Versionskontrolle gestellt hatten.
Da wir annahmen, dass die Laufzeit-Option
auto-props
abgestellt war, wissen wir, dass
die Eigenschaft svn:auto-props
auf
irgendeinem Elternpfad von data.c
gesetzt
sein muss. Durch die Verwendung des Unterbefehls svn
propget mit der Option
--show-inherited-props
sehen wir, dass es
sich tatsächlich so verhält:
$ svn propget svn:auto-props --show-inherited-props -v calc Geerbte Eigenschaften von »calc«, geerbt von »http://svn.example.com/repos«: svn:auto-props *.py = svn:eol-style=native *.c = svn:eol-style=native *.h = svn:eol-style=native
Anders als die Eigenschaft
svn:global-ignores
und ihre analoge
Laufzeit-Konfiguration global-ignores
, die
kombiniert werden, überschreibt die
Eigenschaft svn:auto-props
die
Laufzeit-Konfiguration auto-props
, falls
sie eine automatische Eigenschaft für das
gleiche Muster wie die
Laufzeit-Konfiguration definiert. Automatische Eigenschaften,
die von einem Pfad ererbt wurden[18] können ebenfalls das
identische Muster überschreiben, welches
von einem anderen Pfad ererbt wurde. Diese Hierarchie für
Überschreibungen funktioniert wie folgt:
Eine in svn:auto-props
definierte
automatische Eigenschaft für ein gegebenes Muster
überschreibt die gleiche automatische Eigenschaft für das
identische Muster in der Laufzeit-Konfiguration
auto-props
.
Falls eine automatische Eigenschaft für ein gegebenes
Muster von mehr als einem Elternteil die Eigenschaft
svn:auto-props
ererbt, hat der
pfadweise nähere Elternteil größeren Einfluss als ein
weiter entfernter Elternteil.
Eine automatische Eigenschaft für ein gegebenes
Muster, die in einer explizit auf einen Pfad gesetzten
svn:auto-props
Eigenschaft definiert
ist, überschreibt dieselben automatischen Eigenschaften
für das identische Muster, die von irgendwelchen anderen
Elternverzeichnissen ererbt werden.
Lassen Sie uns einmal ein Beispiel ansehen. Angenommen, Sie haben diese Laufzeit-Konfiguration:
[miscellany] enable-auto-props = yes [auto-props] *.py = svn:eol-style=CR *.c = svn:eol-style=CR *.h = svn:eol-style=CR *.cpp = svn:eol-style=CR
Nun möchten Sie drei Dateien dem Verzeichnis
calc
Ihrer Arbeitskopie
hinzufügen:
$ svn st ? calc/data-binding.cpp ? calc/data.c ? calc/editor.py
Lassen Sie uns überprüfen, welche
svn:auto-props
für
calc
zutreffen:
$ svn propget svn:auto-props -v --show-inherited-props calc Geerbte Eigenschaften von »calc«, geerbt von »http://svn.example.com/repos«: svn:auto-props *.py = svn:eol-style=native *.c = svn:eol-style=native *.h = svn:eol-style=native Geerbte Eigenschaften von »calc«, geerbt von ».«: svn:auto-props *.py = svn:eol-style=native *.c = svn:keywords=Author Date Id Rev URL
Welche automatischen Eigenschaften erwarten wir, wenn wir diese drei Dateien hinzufügen? Wir fügen das Trio hinzu und sehen dann nach:
$ svn add calc --force A calc/data-binding.cpp A calc/data.c A calc/editor.py
Die Datei data-binding.cpp
hat nur
ein passendes Muster, *.cpp =
svn:eol-style=CR
in der Laufzeit-Konfiguration,
also wird offensichtlich die Eigenschaft
svn:eol-style
auf CR
gesetzt:
$ svn proplist -v calc/data-binding.cpp Eigenschaften von »calc/data-binding.cpp«: svn:eol-style CR
Die Datei editor.py
passt auf ein
einzelnes Muster in der Laufzeit-Konfiguration und auf beide
der svn:auto-props
Eigenschaften, jedoch
hat die explizit auf calc
gesetzte
Eigenschaft *.py = svn:eol-style=native
gemäß der beschriebenen Hierarchie Vorrang. Also wird die
Eigenschaft svn:eol-style
auf
native:
gesetzt:
$ svn proplist -v calc/editor.py Eigenschaften von »calc/editor.py«: svn:eol-style native
Die Datei data.c
passt auf Muster in
der Laufzeit-Konfiguration und auf beide der ererbten
svn:auto-props
Eigenschaften. Die
automatische Eigenschaft svn:keywords
ist
nur einmal definiert, auf calc
, also
bekommt data.c
diese Eigenschaft
automatisch. Die svn:auto-props
auf
calc
definieren jedoch keinen Wert für
svn:eol-style
, also stellt der nächste
vererbende Elternteil,
http://svn.example.com/repos
, diesen Wert
zur Verfügung:
$ svn proplist -v calc/data.c Eigenschaften von »calc/data.c«: svn:eol-style native svn:keywords Author Date Id Rev URL
Warnung | |
---|---|
Das Überschreiben automatischer Eigenschaften trifft nur
auf identische Muster zu. Falls eine
hinzuzufügende oder zu importierende Datei auf mehr als ein
Muster passt, gibt es keine Garantie, welche zu einem Muster
passende automatische Eigenschaft angewendet wird. Nehmen
wir beispielsweise an, dass Sie die Datei
*.c* = svn:eol-style=native *.cpp = svn:eol-style=native;svn:keywords=Author Date Id Rev URL Da |
Eine abschließende Bemerkung zu
svn:auto-props
. Diese Eigenschaft
(gemeinsam mit dem ähnlichen
svn:global-ignores
, siehe „Ignorieren unversionierter Objekte“) stellt
lediglich eine Empfehlung für Clients
dar, die die Bedeutung der Eigenschaft verstehen. Ältere
Clients werden diese Eigenschaften ignorieren, die Option
--no-auto-props
wird sie außer Acht lassen,
ein Anwender kann einfach manuell automatische Eigenschaften
ändern oder entfernen, nachdem sie gesetzt wurden – es
gibt viele Möglichkeiten, die empfohlenen Eigenschaften aus
svn:auto-props
zu umgehen. Unter diesen
Voraussetzungen müssen Administratoren immer noch Hook-Skripte
verwenden, um sicherzustellen, dass die Eigenschaften, die
Dateien hinzugefügt wurden oder dort verändert wurden, den
bevorzugten Richtlinien der Administratoren entsprechen, wobei
Übertragungen zurückgewiesen werden, die dem nicht
entsprechen. (Siehe „Erstellen von Projektarchiv-Hooks“
für mehr zu Hook-Skripten.)
In diesem Abschnitt fassen wir kurz all diejenigen Eigenschaften zusammen, die Subversion für die eigene Verwendung reserviert. Wir werden uns beide Arten von Eigenschaften ansehen – diejenigen, die mit individuellen, versionierten Dateien und Verzeichnissen verbunden sind und solchen, die zu Revisionen gehören.
Dies sind die versionierten (oder Knoten-) Eigenschaften, die Subversion für die eigene Verwendung reserviert:
svn:auto-props
Falls auf einem Verzeichnis vorhanden, ist der Wert eine Menge von Definitionen automatischer Eigenschaften, die auf alle Dateien unterhalb des Verzeichnisses anwendbar sind. Siehe „Automatisches Setzen von Eigenschaften“.
svn:executable
Falls diese Eigenschaft für eine Datei vergeben ist, wird der Client die Datei in Arbeitskopien auf Unix-Wirtssystemen ausführbar machen. Siehe „Ausführbarkeit von Dateien“.
svn:mime-type
Falls diese Eigenschaft für eine Datei vergeben ist, zeigt der Wert den MIME-Typen der Datei an. Das erlaubt dem Client die Entscheidung, ob es während einer Aktualisierung sicher ist, eine zeilenbasierte Zusammenführung durchzuführen; es kann auch Auswirkungen auf das Verhalten der Datei haben, wenn sie über einen Web-Browser geladen wird. Siehe „Datei-Inhalts-Typ“.
svn:ignore
Falls diese Eigenschaft für ein Verzeichnis vergeben ist, enthält der Wert eine Liste von Namensmustern unversionierter Dateien, die von svn status und anderen Unterbefehlen zu ignorieren sind. Siehe „Ignorieren unversionierter Objekte“.
svn:global-ignores
Falls auf einem Verzeichnis vorhanden, ist der
Wert eine Liste unversionierter
Dateinamen-Muster, die von svn status und
anderen Unterbefehlen ignoriert werden sollen. Anders
als bei svn:ignore
werden diese
Muster auf alle unversionierten
Teilbäume unterhalb des Verzeichnisses angewendet,
nicht nur auf die sich unmittelbar im Verzeichnis
befindlichen Dateien. Siehe
„Ignorieren unversionierter Objekte“.
svn:keywords
Falls diese Eigenschaft für eine Datei vergeben ist, teilt dessen Wert dem Client mit, wie bestimmte Schlüsselworte in der Datei zu expandieren sind. Siehe „Ersetzung von Schlüsselworten“.
svn:eol-style
Falls diese Eigenschaft für eine Datei vergeben ist, teilt dessen Wert dem Client mit, wie die Zeilenenden der Datei in der Arbeitskopie und in exportierten Bäumen zu behandeln sind. Siehe „Zeichenfolgen zur Zeilenende-Kennzeichnung“ und svn export.
svn:externals
Falls diese Eigenschaft für ein Verzeichnis vergeben ist, besteht dessen Wert aus einer Liste anderer Pfade und URLs, die der Client auschecken soll. Siehe „Externals-Definitionen“.
svn:special
Falls diese Eigenschaft für eine Datei vergeben ist, zeigt es an, dass die Datei keine gewöhnliche Datei ist, sondern ein symbolischer Link oder ein anderes besonderes Objekt.[19]
svn:needs-lock
Falls diese Eigenschaft für eine Datei vergeben ist, teilt es dem Client mit, die Datei in der Arbeitskopie schreibgeschützt abzulegen, um daran zu erinnern, die Datei vor der Bearbeitung zu sperren. Siehe „Kommunikation über Sperren“.
svn:mergeinfo
Wird von Subversion verwendet, um Zusammenführungsdaten festzuhalten. Siehe „Mergeinfo und Vorschauen“ für Details, jedoch sollten Sie diese Eigenschaft nie bearbeiten, es sei denn, Sie wissen wirklich was Sie machen.
Die folgenden sind die unversionierten (oder Revisions-) Eigenschaften, die Subversion für die eigene Verwendung reserviert. Die meisten von ihnen tauchen auf jeder Revision im Projektarchiv auf und beinhalten wichtige Informationen über die Herkunft und die Natur der in dieser Revision gemachten Änderungen.
svn:author
Falls vorhanden, beinhaltet es den authentifizierten Anwendernamen der Person, die die Revision erzeugt hat. (Falls nicht vorhanden, wurde die Revision anonym übertragen.)
svn:autoversioned
Falls vorhanden, wurde die Revision durch die Autoversionierungs-Funktion erzeugt. Siehe „Autoversionierung“.
svn:date
Beinhaltet den Erstellungszeitpunkt der Revision in UTC-Zeit im ISO-8601-Format. Der Wert kommt von der Uhr der Server-Maschine, nicht der des Clients.
svn:log
Beinhaltet die Protokollnachricht, die die Revision beschreibt.
Bestimmte Hilfswerkzeuge in der Subversion Werkzeugkette – nämlich svnrdump und svnsync – verwenden ebenfalls unversionierte Eigenschaften für ihre eigenen Buchhaltungszwecke. Diese Eigenschaften werden nur auf Revision 0 von Projektarchiven gefunden, auf denen diese Werkzeuge arbeiten. Mehr über svnrdump und svnsync sowie die von ihnen angebotene Funktionalität finden Sie bei Kapitel 5, Verwaltung des Projektarchivs. Die folgenden Eigenschaften werden von diesen Werkzeugen erstellt und verwaltet.
svn:rdump-lock
Wird verwendet, um vorübergehend einen gegenseitig ausschließenden Zugriff auf das Projektarchiv durch svnrdump load zu erzwingen. Diese Eigenschaft wird im Allgemeinen nur dann berücksichtigt, falls eine solche Operation aktiv ist – oder, falls ein svnrdump-Befehl sich nicht sauber vom Projektarchiv abmelden konnte. (Diese Eigenschaft ist nur dann relevant, falls sie auf Revision 0 liegt.)
svn:sync-currently-copying
Beinhaltet die Revisionsnummer des Quell-Projektarchivs, das momentan mit dem Programm svnsync in dieses gespiegelt wird. (Diese Eigenschaft ist nur relevant, wenn sie bei Revision 0 gesetzt ist.)
svn:sync-from-uuid
Beinhaltet die UUID des Projektarchivs, durch das dieses Projektarchiv mit dem Programm svnsync als Spiegel initialisiert wurde. (Diese Eigenschaft ist nur relevant, wenn sie bei Revision 0 gesetzt ist.)
svn:sync-from-url
Beinhaltet den URL des Projektarchivs, durch das dieses Projektarchiv mit dem Programm svnsync als Spiegel initialisiert wurde. (Diese Eigenschaft ist nur relevant, wenn sie bei Revision 0 gesetzt ist.)
svn:sync-last-merged-rev
Beinhaltet die Revision des Projektarchivs, das zuletzt erfolgreich in dieses gespiegelt wurde. (Diese Eigenschaft ist nur relevant, wenn sie bei Revision 0 gesetzt ist.)
svn:sync-lock
Wird verwendet, um vorübergehend einen gegenseitigen Ausschluss für den Zugriff auf das Projektarchiv durch Spiegelungsoperationen von svnsync zu erzwingen. Diese Eigenschaft wird im Allgemeinen nur dann beachtet, falls eine solche Aktion aktiv ist, oder falls ein svnsync-Befehl es nicht schaffte, sich sauber vom Projektarchiv abzumelden. (Diese Eigenschaft ist nur relevant, wenn sie bei Revision 0 gesetzt ist.)
[13] Wenn Sie XML kennen, so ist das etwa die ASCII-Teilmenge der Syntax für die Produktion „Name“ in XML.
[14] Das Berichtigen von
Rechtschreibfehlern, grammatischen Stolpersteinen und
„einfacher Unrichtigkeiten“ in
Protokollnachrichten ist vielleicht der häufigste
Anwendungsfall für die Option
--revprop
.
[15] In dieser Übersetzung soll ab hier dieser englische Begriff verwendet werden, statt dessen sperrige deutsche Übersetzung „Informationen zur Zusammenführung“. [Der Übersetzer]
[16] Die einzige
erwähnenswerte Ausnahme stellt die Eigenschaft
svn:mergeinfo
dar, die vererbbar ist
– siehe
„Mergeinfo und Vorschauen“
[17] Momentan wird hierfür die Bibliothek libmagic verwendet.
[18] Denken Sie
daran, dass Anwender Eigenschaften nur von Pfaden erben
können, für die sie auch Lesezugriff haben. Wenn also ein
Administrator svn:auto-props
auf einen
Elternpfad ziemlich weit oben setzt, (z.B. die Wurzel des
Projektarchivs), muss sichergestellt sein, dass alle Anwender
Lesezugriff auf diesen Pfad haben oder das erwünschte
automatische Setzen von Eigenschaften wird nicht
aktiviert.
[19] Zum Zeitpunkt der Drucklegung sind symbolische Links tatsächlich die einzigen „besonderen“ Objekte. Allerdings könnten in künftigen Ausgaben von Subversion mehr davon hinzukommen.