Tuesday, 30 May 2017

Subversion Mime Typ Binär Optionen


Binärdateien und Übersetzung Im allgemeinsten Sinne behandelt Subversion Binärdateien anmutiger als CVS. Da CVS RCS verwendet, kann es nur aufeinanderfolgende Vollkopien einer wechselnden Binärdatei speichern. Subversion drückt jedoch Unterschiede zwischen Dateien mit einem binären differenzierenden Algorithmus aus, unabhängig davon, ob sie Text - oder Binärdaten enthalten. Das bedeutet, dass alle Dateien im Repository unterschiedlich gespeichert (komprimiert) werden. CVS-Benutzer müssen Binärdateien mit - kb-Flags markieren, um zu verhindern, dass Daten verstümmelt werden (aufgrund von Keyword-Erweiterungen und Zeilenende-Übersetzungen). Manchmal vergessen sie das zu tun. Subversion nimmt die paranoide Route. Zuerst führt es niemals irgendwelche Keyword - oder Zeilenende-Übersetzungen aus, es sei denn, Sie explizit fragen es, dies zu tun (siehe den Abschnitt "Keyword-Substitution" und den Abschnitt "End-of-Line-Zeichenfolgen" für weitere Details). Standardmäßig behandelt Subversion alle Dateidaten als literale Bytezeichenfolgen und Dateien werden immer im repository in einem nicht übersetzten Zustand gespeichert. Zweitens unterhält Subversion eine interne Vorstellung davon, ob eine Datei Text - oder Binärdaten ist, aber dieser Begriff ist nur in der Arbeitskopie vorhanden. Während eines svn-Updates. Subversion führt kontextbezogene Zusammenführungen auf lokal modifizierten Textdateien durch, wird aber nicht versuchen, dies für Binärdateien zu tun. Um festzustellen, ob ein kontextueller Zusammenschluss möglich ist, untersucht Subversion die Eigenschaft svn: mime-type. Wenn die Datei keine svn: mime-type-Eigenschaft hat oder einen MIME-Typ hat, der textuell ist (z. B. Text), nimmt Subversion an, dass es Text ist. Andernfalls geht die Subversion davon aus, dass die Datei binär ist. Subversion hilft auch Benutzern, indem sie einen binären Erkennungsalgorithmus in den svn-Import - und svn-Add-Befehlen ausführt. Diese Befehle werden eine gute Vermutung machen und dann (eventuell) eine binäre svn: mime-type-Eigenschaft auf die hinzuzufügende Datei setzen. (Wenn Subversion falsch rät, kann der Benutzer die Eigenschaft jederzeit entfernen oder hand bearbeiten.) Sie lesen die Versionskontrolle mit Subversion (für Subversion 1.7), von Ben Collins-Sussman, Brian W. Fitzpatrick und C. Michael Pilato. Diese Arbeit unterliegt der Creative Commons Attribution License v2.0. Um eine Kopie dieser Lizenz zu sehen, besuchen Sie Creative Commons Website oder senden Sie einen Brief an Creative Commons, 559 Nathan Abbott Way, Stanford, Kalifornien 94305, USA. Um Kommentare, Korrekturen oder andere Beiträge zum Text zu übermitteln, besuchen Sie bitte svnbook. For Hintergrund auf meine Frage: svn wont diff eine Datei, die es denkt, ist binary Eine aktuelle Stack-Overflow-Antwort (svn diff: Datei als Binär-Typ markiert) zeigte Ihnen können Erzwinge einen Mime-Typ: Beachten Sie, dass die vorherige Antwort unvollständig ist. Du musst auch: Jetzt ist meine neue Frage: Kann ich einen Default setzen, also werden alle zukünftigen vnd. google-earth. kmlxml Dateien als Text von svn behandelt. Das Redbook erscheint zu diesem Thema schweigsam: svnbook. red-beanen1.2svn. Advanced. props. html nur sagen: Welche Ausnahmen Sind diese Ausnahmen in den svn-Code gebacken oder zugänglich Die Antwort hängt vom svn-Client ab, den du benutzt hast. In der offiziellen svn-Client, die Option, die Sie suchen, ist automatische Eigenschaft Einstellung. Die Tldr-Version muss Sie Ihren Benutzer oder Ihre Systemkonfiguration aktualisieren. Setzen Sie die Aktivierungs-Auto-Requisiten-Einstellung auf Ja im Miscellany-Bereich und erstellen Sie einen neuen Abschnitt namens auto-props, der die Muster definiert, die Sie übereinstimmen möchten und die Eigenschaften, die Sie suchen möchten. Für Ihr Beispiel von kml-Dateien: Dies wird sicherstellen, dass, wenn Sie eine. kml-Datei zu Ihrem Repository hinzufügen, wird es eine Mime-Art von Textplain und wird Zeilenendungen native auf die Plattform des Client. Properties Weve bereits im Detail abgedeckt Wie Subversion speichert und verschiedene Versionen von Dateien und Verzeichnissen in seinem Repository abruft. Ganze Kapitel haben sich dieser grundlegendsten Funktionalität des Werkzeuges gewidmet. Und wenn die Versionierungsunterstützung dort gestoppt wurde, wäre Subversion noch aus einer Versionskontrollperspektive komplett. Aber es hört nicht auf Zusätzlich zur Versionierung Ihrer Verzeichnisse und Dateien bietet Subversion Schnittstellen zum Hinzufügen, Ändern und Entfernen von versionierten Metadaten auf jedem Ihrer versionierten Verzeichnisse und Dateien. Wir verweisen auf diese Metadaten als Eigenschaften. Und sie können als zweispaltige Tabellen gedacht werden, die Eigenschaftsnamen zu beliebigen Werten verknüpfen, die jedem Element in Ihrer Arbeitskopie beigefügt sind. Im Allgemeinen können die Namen und Werte der Eigenschaften sein, was auch immer Sie wollen, mit der Einschränkung, dass die Namen nur ASCII-Zeichen enthalten müssen. Und das Beste an diesen Eigenschaften ist, dass sie auch versioniert sind, genau wie der Textinhalt Ihrer Dateien. Sie können Änderungen an den Modifikationen ändern, festlegen und zurücksetzen, sobald Sie Inhalte ändern können. Und das Senden und Empfangen von Eigentumsänderungen tritt als Teil Ihrer typischen Commit - und Update-Operationen auf. Sie müssen nicht Ihre grundlegenden Prozesse ändern, um sie aufzunehmen. Subversion hat den Satz von Eigenschaften reserviert, deren Namen mit svn beginnen: als eigene. Während es heute nur noch eine Handvoll solcher Eigenschaften gibt, sollten Sie vermeiden, benutzerdefinierte Eigenschaften für Ihre eigenen Bedürfnisse zu erstellen, deren Namen mit diesem Präfix beginnen. Andernfalls laufen Sie Gefahr, dass eine zukünftige Version von Subversion Unterstützung für eine Funktion oder ein Verhalten, die von einer Eigenschaft mit dem gleichen Namen, aber mit einer ganz anderen Interpretation angetrieben wird, wachsen wird. Eigenschaften erscheinen auch anderswo in Subversion. So wie Dateien und Verzeichnisse beliebige Eigenschaftsnamen und Werte haben können, können ihnen jede Revision als Ganzes beliebige Eigenschaften angehören. Die gleichen Einschränkungen gelten für die lesbaren Namen und alles, was Sie wollen, binäre Werte. Der Hauptunterschied besteht darin, dass Revisionseigenschaften nicht versioniert sind. Mit anderen Worten, wenn Sie den Wert von oder löschen, eine Revisionseigenschaft, theres keine Möglichkeit, im Rahmen der Subversions-Funktionalität, um den vorherigen Wert wiederherzustellen. Subversion hat keine besondere Politik hinsichtlich der Verwendung von Eigenschaften. Es fragt nur, dass Sie keine Eigenschaftsnamen verwenden, die mit dem Präfix svn beginnen: wie das Namespace, das es für seine eigene Verwendung beiseite setzt. Und Subversion tut in der Tat Eigenschaften von der versionierten und unversionierten Vielfalt. Bestimmte versionierte Eigenschaften haben besondere Bedeutung oder Effekte, wenn sie auf Dateien und Verzeichnissen gefunden werden, oder sie beherbergen ein bestimmtes Bit von Informationen über die Revisionen, auf denen sie gefunden werden. Bestimmte Revisionseigenschaften werden automatisch an Revisionen durch Subversions Commit Prozess angehängt und tragen Informationen über die Revision. Die meisten dieser Eigenschaften werden an anderer Stelle in diesem oder anderen Kapiteln als Teil der allgemeineren Themen erwähnt, auf die sie bezogen sind. Eine abschließende Liste von vordefinierten Vorgängen von Subversions finden Sie im Abschnitt Subversion Properties in Kapitel 9, Subversion Complete Reference. Während Subversion automatisch Eigenschaften (svn: date. svn: author. Svn: log. Und so weiter) an Revisionen anhängt, geht es nicht danach auf die Existenz dieser Eigenschaften, und weder sollten Sie noch die Werkzeuge, die Sie verwenden, um mit Ihrem Repository zu interagieren . Revisionseigenschaften können programmgesteuert oder über den Client gelöscht werden (falls von den Repository-Hooks erlaubt), ohne die Subversions-Fähigkeit zu beeinträchtigen. Wenn Sie also Skripts schreiben, die auf Ihren Subversion-Repository-Daten arbeiten, machen Sie nicht den Fehler, dass eine bestimmte Revisionseigenschaft bei einer Revision vorliegt. In diesem Abschnitt werden wir die Utility für Benutzer von Subversion und Subversion selbst von Eigenschaftsunterstützung untersuchen. Youll erfahren Sie mehr über die immobilienbezogenen svn-Unterbefehle und wie sich Eigenschaftsänderungen auf Ihren normalen Subversion-Workflow auswirken. Warum Eigenschaften So wie Subversion Eigenschaften verwendet, um zusätzliche Informationen über die Dateien, Verzeichnisse und Revisionen zu speichern, die sie enthält, können Sie auch Eigenschaften finden, die von ähnlicher Verwendung sind. Vielleicht finden Sie es sinnvoll, einen Platz in der Nähe Ihrer versionierten Daten zu haben, um benutzerdefinierte Metadaten über diese Daten zu hängen. Sagen Sie, dass Sie eine Web site entwerfen möchten, die viele digitale Fotos beherbergt und sie mit Beschriftungen und einem dampfer anzeigt. Jetzt ist Ihr Satz von Fotos ständig verändert, so dass Sie so viel von dieser Website wie möglich automatisiert haben. Diese Fotos können ziemlich groß sein, so wie es bei Seiten dieser Art üblich ist, möchten Sie kleinere Thumbnail-Bilder für Ihre Website-Besucher. Jetzt können Sie diese Funktionalität mit herkömmlichen Dateien erhalten. Das heißt, du kannst dein image123.jpg und ein image123-thumbnail. jpg Seite an Seite in einem Verzeichnis haben. Oder wenn du die Dateinamen gleich halten möchtest, kannst du deine Thumbnails in einem anderen Verzeichnis wie thumbnailsimage123.jpg haben. Sie können auch Ihre Untertitel und datestamps in ähnlicher Weise speichern, wieder getrennt von der Originalbilddatei. Aber das Problem hier ist, dass Ihre Sammlung von Dateien multipliziert mit jedem neuen Foto hinzugefügt, um die Website. Betrachten Sie nun die gleiche Website, die in einer Weise bereitgestellt wird, die die Eigenschaften von Subversions-Dateien verwendet. Stellen Sie sich vor, eine einzelne Bilddatei zu haben, image123.jpg. Mit Eigenschaften, die auf die Datei mit dem Namen caption gesetzt sind. Datumsstempel. Und sogar thumbnail. Jetzt ist Ihr Arbeitskopie-Verzeichnis viel mehr handhabbar in der Tat, es sieht auf die Casual-Browser wie es gibt aber nur Bild-Dateien in ihm. Aber deine Automatisierungsskripte wissen es besser. Sie wissen, dass sie svn verwenden können (oder besser noch können sie die Subversion-Sprachbindungen verwenden, die im Abschnitt "Verwenden der APIs" genannt werden), um die zusätzlichen Informationen auszudrücken, die deine Website anzeigen muss, ohne eine Indexdatei lesen oder Pfadmanipulationsspiele spielen zu müssen . Während Subversion nur wenige Einschränkungen für die Namen und Werte enthält, die Sie für Eigenschaften verwenden, wurde es nicht entworfen, um große Eigenschaftswerte oder große Sätze von Eigenschaften auf einer bestimmten Datei oder einem bestimmten Verzeichnis optimal zu übertragen. Subversion hält häufig alle Eigenschaftsnamen und Werte, die mit einem einzelnen Element im Speicher verbunden sind, zugleich, was zu schädlichen Leistungen oder fehlgeschlagenen Operationen führen kann, wenn extrem große Eigenschaftssätze verwendet werden. Auch benutzerdefinierte Revisionseigenschaften werden häufig verwendet. Eine gemeinsame solche Verwendung ist eine Eigenschaft, deren Wert eine Issue Tracker-ID enthält, mit der die Revision verknüpft ist, vielleicht weil die in dieser Revision vorgenommene Änderung einen Fehler, der in der Tracker-Ausgabe mit dieser ID abgelegt wurde, behebt. Andere Verwendungen beinhalten hängen mehr freundliche Namen auf der Revisionit könnte schwer zu merken, dass Revision 1935 war eine vollständig getestete Revision. Aber wenn theres, sagen wir, eine Testergebnisseigenschaft auf dieser Revision mit dem Wert alle vorbei. Das ist aussagekräftige Informationen zu haben. Und Subversion ermöglicht es Ihnen, dies einfach über die --with-revprop-Option des Befehls svn commit zu tun: Suchbarkeit (oder, warum nicht Eigenschaften) Für alle ihre Dienstprogramme, Subversion-Eigenschaften, genauer gesagt, die vorhandenen Schnittstellen zu ihnen haben einen großen Mangel: Während es eine einfache Angelegenheit ist, eine kundenspezifische Eigenschaft zu setzen, zu finden, dass Eigenschaft später eine ganz andere Kugel des Wachses ist. Der Versuch, eine benutzerdefinierte Revisionseigenschaft zu finden, beinhaltet in der Regel die Durchführung eines linearen Spaziergangs über alle Revisionen des Repositorys und fragt nach jeder Revision. Haben Sie die Eigenschaft Im suchen, verwenden Sie die Option --with-all-revprops mit den svn-Protokollbefehlen XML Ausgabemodus, um diese Suche zu erleichtern. Beachten Sie die Anwesenheit der benutzerdefinierten Revisionseigentum-Testresultate in der folgenden Ausgabe: Der Versuch, eine benutzerdefinierte Versionseigenschaft zu finden, ist auch schmerzhaft und beinhaltet oft einen rekursiven svn-Propget über eine gesamte Arbeitskopie. In deiner Situation wäre das nicht so schlimm wie ein linearer Spaziergang über alle Revisionen. Aber es ist sicherlich viel zu wünschen übrig in Bezug auf Leistung und Erfolgswahrscheinlichkeit, vor allem, wenn der Umfang Ihrer Suche eine Arbeitskopie aus der Wurzel Ihres Repository erfordern würde. Aus diesem Grund können Sie sich vor allem in der Revisionseigenschaft verwenden caseto einfach fügen Sie Ihre Metadaten, um die Revisions-Log-Nachricht mit einer Politik-driven (und vielleicht programmgesteuert erzwungen) Formatierung, die entworfen, um schnell von der Ausgabe von svn log analysiert werden. Es ist ganz üblich, das folgende in Subversion-Log-Meldungen zu sehen: Aber hier liegt noch ein Unglück. Subversion bietet noch nicht einen Log-Message-Template-Mechanismus, der einen langen Weg in Richtung helfen würde, die Benutzer mit der Formatierung ihrer log-embedded Revision Metadaten konsistent zu sein. Manipulieren von Eigenschaften Das Programm svn bietet einige Möglichkeiten, Datei - und Verzeichnis-Eigenschaften hinzuzufügen oder zu ändern. Für Eigenschaften mit kurzen, menschlich lesbaren Werten ist vielleicht der einfachste Weg, eine neue Eigenschaft hinzuzufügen, den Eigenschaftsnamen und den Wert auf der Befehlszeile des Unterbefehls svn propset anzugeben: Aber wir haben die Flexibilität, die Subversion für Ihre Eigenschaftswerte bietet, umgesetzt . Und wenn Sie planen, einen mehrzeiligen textuellen oder sogar binären, Eigenschaftswert zu haben, möchten Sie diesen Wert wahrscheinlich nicht auf der Kommandozeile liefern. So nimmt der Unterbefehl svn propset eine --file (-F) Option für die Angabe des Namens einer Datei, die den neuen Eigenschaftswert enthält. Es gibt einige Einschränkungen für die Namen, die Sie für Eigenschaften verwenden können. Ein Eigenschaftsname muss mit einem Buchstaben, einem Doppelpunkt (.) Oder einem Unterstrich () beginnen. Danach können Sie auch Ziffern, Bindestriche (-) und Perioden (.) Verwenden. 13 Zusätzlich zum Befehl propset liefert das svn-Programm den Befehl propedit. Dieser Befehl verwendet das konfigurierte Editor-Programm (siehe Abschnitt Config), um Eigenschaften hinzuzufügen oder zu ändern. Wenn Sie den Befehl ausführen, ruft svn Ihr Editor-Programm auf eine temporäre Datei auf, die den aktuellen Wert der Eigenschaft enthält (oder das ist leer, wenn Sie eine neue Eigenschaft hinzufügen). Dann ändern Sie diesen Wert in Ihrem Editor-Programm, bis er den neuen Wert repräsentiert, den Sie für die Eigenschaft speichern möchten, speichern Sie die temporäre Datei und beenden Sie dann das Editor-Programm. Wenn Subversion feststellt, dass Sie tatsächlich den vorhandenen Wert der Eigenschaft geändert haben, wird es das als den neuen Eigenschaftswert akzeptieren. Wenn du deinen Redakteur beendest, ohne irgendwelche Änderungen vorzunehmen, tritt keine Eigentumsänderung auf: Wir sollten beachten, dass, wie bei anderen svn-Unterbefehlen, diejenigen, die sich auf Eigenschaften beziehen, auf mehrere Pfade gleichzeitig reagieren können. Dies ermöglicht Ihnen, Eigenschaften auf ganze Sätze von Dateien mit einem einzigen Befehl zu ändern. Zum Beispiel könnten wir die folgenden getan haben: Alle diese Eigenschaft Hinzufügen und Bearbeiten ist nicht wirklich sehr nützlich, wenn Sie nicht leicht den gespeicherten Eigenschaftswert erhalten können. So liefert das svn-Programm zwei Unterbefehle für die Anzeige der Namen und Werte von Eigenschaften, die auf Dateien und Verzeichnissen gespeichert sind. Der Befehl svn proplist listet die Namen der Eigenschaften auf, die auf einem Pfad vorhanden sind. Sobald Sie die Namen der Eigenschaften auf dem Knoten kennen, können Sie ihre Werte einzeln mit svn propget anfordern. Dieser Befehl wird mit einem Eigenschaftsnamen und einem Pfad (oder Satz von Pfaden) den Wert der Eigenschaft an den Standardausgabestream ausgeben. Theres sogar eine Variation des proplisten Befehls, der sowohl den Namen als auch den Wert für alle Eigenschaften auflistet. Geben Sie einfach die Option --verbose (-v) an. Der letzte eigenschaftsbezogene Unterbefehl ist propdel. Da Subversion Ihnen erlaubt, Eigenschaften mit leeren Werten zu speichern, können Sie eine Eigenschaft nicht mit svn propedit oder svn propset entfernen. Beispielsweise wird dieser Befehl nicht den gewünschten Effekt ergeben: Sie müssen den Unterbefehl propdel verwenden, um Eigenschaften ganz zu löschen. Die Syntax ähnelt den anderen Eigenschaftsbefehlen: Erinnere dich an jene unversionierten Revisionseigenschaften Du kannst diese auch mit denselben svn Unterbefehlen ändern, die wir gerade beschrieben haben. Fügen Sie einfach den Befehlszeilenparameter --revprop hinzu und geben Sie die Revision an, deren Eigenschaft Sie ändern möchten. Da Revisionen global sind, müssen Sie keinen Zielpfad zu diesen eigenschaftsbezogenen Befehlen angeben, solange Sie in einer Arbeitskopie des Repositorys positioniert sind, dessen Revisionseigenschaft Sie ändern möchten. Andernfalls können Sie einfach die URL eines beliebigen Pfades im Repository von Interesse (einschließlich der Repositorys Root-URL). Beispielsweise möchten Sie vielleicht die Commit-Log-Meldung einer bestehenden Revision ersetzen. 14 Wenn Ihr aktuelles Arbeitsverzeichnis Teil einer Arbeitskopie Ihres Repository ist, können Sie einfach den Befehl svn propset ohne Zielpfad ausführen: Aber selbst wenn Sie eine Arbeitskopie aus diesem Repository ausgecheckt haben, können Sie die Eigenschaft ändern Durch die Bereitstellung der Repositorys root URL: Beachten Sie, dass die Möglichkeit, diese unversionierten Eigenschaften zu ändern, explizit vom Repository-Administrator hinzugefügt werden muss (siehe Abschnitt Commit Log Message Correction). Das ist, weil die Eigenschaften arent versioniert, so dass Sie das Risiko laufen, Informationen zu verlieren, wenn Sie arent vorsichtig mit Ihren Änderungen. Der Repository-Administrator kann Methoden einrichten, um diesen Verlust zu schützen, und standardmäßig ist die Änderung von unversionierten Eigenschaften deaktiviert. Benutzer sollten, wo möglich, svn propedit anstelle von svn propset verwenden. Während das Endergebnis der Befehle identisch ist, wird das Erstere ihnen erlauben, den gegenwärtigen Wert der Eigenschaft zu sehen, die sie ändern werden, was ihnen hilft, zu überprüfen, dass sie in der Tat die Veränderung machen, die sie denken, dass sie machen . Dies gilt insbesondere bei der Änderung von unversionierten Revisionseigenschaften. Außerdem ist es wesentlich einfacher, mehrzeilige Eigenschaftswerte in einem Texteditor zu ändern als an der Befehlszeile. Eigenschaften und den Subversion-Workflow Nun, da Sie mit allen eigenschaftsbezogenen svn-Unterbefehlen vertraut sind, können Sie sehen, wie sich Eigenschaftsänderungen auf den üblichen Subversion-Workflow auswirken. Wie bereits erwähnt, sind Datei - und Verzeichnis-Eigenschaften, wie Ihr Dateiinhalt, versioniert. Infolgedessen bietet Subversion die gleichen Chancen für die Verschmelzung von reinigen oder mit Konfliktsomeone elses Modifikationen in Ihre eigenen. Wie bei Dateiinhalten sind Ihre Eigenschaftsänderungen lokale Änderungen, die nur dann dauerhaft gemacht werden, wenn Sie sie mit dem svn commit an das Repository übergeben. Ihre Eigenschaft Änderungen können leicht unmade, toothe svn revert Befehl wird Ihre Dateien und Verzeichnisse auf ihre unedited Zustandsinhalte, Eigenschaften und alle wiederherstellen. Außerdem können Sie interessante Informationen über den Status Ihrer Datei - und Verzeichnis-Eigenschaften erhalten, indem Sie den Befehl svn status und svn diff verwenden. Beachten Sie, wie der Status-Unterbefehl M in der zweiten Spalte anstelle des ersten angezeigt wird. Das ist, weil wir die Eigenschaften auf calcbutton. c geändert haben. Aber nicht seine Textinhalte. Hätten wir beide gewechselt, hätten wir auch M in der ersten Spalte gesehen. (Wir decken den Svn-Status in der Rubrik "Siehe eine Übersicht über deine Änderungen"). Wie bei Dateiinhalten können lokale Modifikationen mit Änderungen verknüpft werden, die von jemand anderem begangen werden. Wenn Sie Ihr Arbeitskopierverzeichnis aktualisieren und Eigenschaftenänderungen auf einem versionierten Objekt erhalten, das mit Ihrem eigenen zusammenstößt, wird Subversion berichten, dass das Objekt in einem Konfliktzustand ist. Subversion wird auch im selben Verzeichnis wie das Konfliktobjekt eine Datei mit einer. prej-Erweiterung erstellen, die die Details des Konflikts enthält. Sie sollten den Inhalt dieser Datei untersuchen, damit Sie entscheiden können, wie Sie den Konflikt lösen können. Bis der Konflikt aufgelöst ist, wird ein C in der zweiten Spalte der svn-Statusausgabe für dieses Objekt angezeigt und versucht, deine lokalen Änderungen zu beenden, wird fehlschlagen. Um Objektkonflikte aufzulösen, stellen Sie sicher, dass die widersprüchlichen Eigenschaften die Werte enthalten, die sie sollten, und verwenden Sie dann den Befehl svn resolve --acceptworking, um Subversion zu benachrichtigen, dass Sie das Problem manuell behoben haben. Vielleicht haben Sie auch die nicht standardisierte Art und Weise bemerkt, dass Subversion derzeit Eigenschaftsunterschiede aufweist. Sie können trotzdem svn diff verwenden und seine Ausgabe umleiten, um eine benutzbare Patchdatei zu erstellen. Das Patch-Programm ignoriert Eigenschaft patchesas eine Regel, es ignoriert jeden Lärm, den es nicht verstehen kann. Dies bedeutet leider, dass ein Patch, der von svn diff mit Patch erzeugt wird, vollständig anwenden kann. Irgendwelche Eigenschaftsänderungen müssen von Hand angewendet werden. Subversion 1.7 verbessert diese Situation auf zwei Arten. Erstens ist seine nicht standardisierte Darstellung von Eigenschaftsunterschieden zumindest maschinell lesbare Verbesserung gegenüber der Anzeige von Eigenschaften in Versionen vor 1.7. Aber Subversion 1.7 führt auch den Unterbefehl svn patch ein, der speziell entworfen wurde, um die zusätzlichen Informationen zu behandeln, die die Svn-Diffs-Ausgabe übertragen kann, wobei diese Änderungen an der Subversion-Arbeitskopie angewendet werden. Von besonderer Relevanz für unser Thema können Eigentumsunterschiede in Patch-Dateien, die von svn diff in Subversion 1.7 oder besser generiert werden, automatisch auf eine Arbeitskopie durch den Befehl svn patch angewendet werden. Für mehr über svn Patch. Siehe svn Patch in Kapitel 9, Subversion Complete Reference. Theres eine Ausnahme, wie Eigenschaftsänderungen von svn diff gemeldet werden Änderungen an Subversions special svn: mergeinfo propertyused, um Informationen über Merges zu verfolgen, die in deinem Repository durchgeführt wurden, werden in einer menschlich lesbaren Weise beschrieben. Das ist sehr hilfreich für die Menschen, die diese Beschreibungen lesen müssen. Aber es dient auch dazu, Patching-Programme (einschließlich svn Patch) zu verursachen, um diese Änderungsbeschreibungen als Rauschen zu überspringen. Dies klingt wie ein Bug, aber es ist wirklich nicht, weil diese Eigenschaft soll nur von der Svn Merge Unterbefehl verwaltet werden. Weitere Informationen zum Merge-Tracking finden Sie in Kapitel 4, Verzweigen und Mischen. Automatische Eigenschaftseinstellungseigenschaften sind ein leistungsfähiges Merkmal von Subversion, das als Schlüsselkomponenten vieler Subversion-Funktionen dient, die an anderer Stelle in diesem und anderen Kapitelspezifischen Diff - und Merge-Support, Keyword-Substitution, Newline-Übersetzung und so weiter diskutiert wurden. Aber um den vollen Nutzen von Eigenschaften zu bekommen, müssen sie auf die richtigen Dateien und Verzeichnisse gesetzt werden. Leider kann dieser Schritt in der Routine der Dinge leicht vergessen werden, vor allem, weil das Versagen, eine Eigenschaft zu setzen, nicht in der Regel zu einem offensichtlichen Fehler führt (zumindest verglichen mit, sagen, fehlgeschlagen, eine Datei zur Versionskontrolle hinzuzufügen). Um zu helfen, Ihre Eigenschaften auf die Orte, die sie benötigen angewendet werden, bietet Subversion ein paar einfache, aber nützliche Funktionen. Wenn Sie eine Datei zur Versionskontrolle mit den Befehlsbefehlen svn add oder svn einführen, versucht Subversion, indem Sie einige gängige Dateieigenschaften automatisch festlegen. Zuerst wird auf Betriebssysteme, deren Dateisysteme ein Execute-Berechtigungsbit unterstützen, die Subversion automatisch die svn: executable-Eigenschaft auf neu hinzugefügte oder importierte Dateien festlegen, deren Execute-Bit aktiviert ist. (Weitere Informationen zu dieser Eigenschaft finden Sie im Abschnitt "Dateiausführbarkeit" in diesem Kapitel.) Zweitens versucht Subversion, den MIME-Typ zu bestimmen. Wenn Sie einen Mime-Typen-Dateien-Laufzeitkonfigurationsparameter konfiguriert haben, versucht Subversion, eine MIME-Typzuordnung in dieser Datei für Ihre Dateierweiterung zu finden. Wenn es eine solche Zuordnung findet, wird es Ihre Dateien svn: mime-type Eigenschaft auf den MIME-Typ, den es gefunden hat. Wenn keine Mapping-Datei konfiguriert ist oder keine Mapping für Ihre Dateierweiterung gefunden werden kann, wird Subversion auf heuristische Algorithmen zurückgreifen, um die Dateien MIME-Typ zu bestimmen. Abhängig davon, wie es gebaut wird, kann Subversion 1.7 die Datei-Scan-Bibliotheken verwenden, um einen Dateityp basierend auf seinem Inhalt zu erkennen. Andernfalls wird Subversion seine eigene sehr grundlegende Heuristik verwenden, um festzustellen, ob die Datei nichttexthaltigen Inhalt enthält. Wenn ja, setzt es automatisch die svn: mime-type-Eigenschaft auf diese Datei auf applicationoctet-stream (die generische dies ist eine Sammlung von Bytes MIME-Typ). Natürlich, wenn Subversion falsch rät, oder wenn Sie die svn: mime-type-Eigenschaft auf etwas präziseres Bild png oder applicationx-shockwave-flash setzen möchten, können Sie diese Eigenschaft jederzeit entfernen oder bearbeiten. (Weitere Informationen zu Subversions-Verwendung von MIME-Typen finden Sie im Abschnitt "Datei-Inhaltstyp" weiter unten in diesem Kapitel.) UTF-16 wird häufig verwendet, um Dateien zu codieren, deren semantischer Inhalt textuell ist, aber die Codierung selbst macht die Verwendung von Bytes stark aus Außerhalb des typischen ASCII-Zeichenbytebereichs liegen. Als solche wird Subversion dazu neigen, solche Dateien wie Binärdateien zu klassifizieren, viel zu dem Leid von Benutzern, die eine line-basierte Differenzierung und Verschmelzung, Keyword-Substitution und andere Verhaltensweisen für diese Dateien wünschen. Subversion bietet darüber hinaus über das Laufzeitkonfigurationssystem (siehe Abschnitt Runtime Configuration Area) eine flexiblere automatische Eigenschafteneinstellungsfunktion, mit der Sie Zuordnungen von Dateinamenmustern zu Eigenschaftsnamen und Werten erstellen können. Wieder einmal beeinflussen diese Zuordnungen Hinzufügungen und Importe und können nicht nur die Standard-MIME-Typ-Entscheidung, die von Subversion während dieser Operationen getroffen wurde, überschreiben, sondern können auch zusätzliche Subversion oder benutzerdefinierte Eigenschaften setzen. Zum Beispiel könnten Sie eine Zuordnung erstellen, die besagt, dass Sie jederzeit JPEG-Dateien hinzufügen, deren Namen mit dem Muster übereinstimmen. jpg Subversion sollte die svn: mime-type-Eigenschaft auf diesen Dateien automatisch auf imagejpeg setzen. Oder vielleicht irgendwelche Dateien, die mit. cpp übereinstimmen, sollten svn: eol-style auf native gesetzt haben. Und svn: Schlüsselwörter auf Id gesetzt. Automatische Eigenschaftsunterstützung ist vielleicht das handlichste Eigenschaft-bezogene Werkzeug in der Subversion-Toolbox. Weitere Informationen zum Konfigurieren dieser Unterstützung finden Sie im Abschnitt "Config". Subversion-Administratoren fragen häufig, ob es möglich ist, auf der Serverseite einen Satz von Eigenschaftsdefinitionen zu konfigurieren, die alle verbindenden Clients automatisch berücksichtigen, wenn sie auf Arbeitskopien arbeiten, die von diesem Server ausgecheckt werden. Leider bietet Subversion diese Funktion nicht an. Administratoren können Hook-Skripts verwenden, um zu bestätigen, dass die Eigenschaften, die hinzugefügt und geändert wurden, auf Dateien und Verzeichnissen mit den Administratoren bevorzugte Richtlinien übereinstimmen und Ablehnungsbefehle ablehnen, die auf diese Weise nicht kompatibel sind. (Siehe den Abschnitt "Implementieren von Repository-Hooks" für mehr über Hook-Scripts.) Aber es gibt keine Möglichkeit, diese Präferenzen automatisch auf Subversion-Clients vorab zu diktieren. 13 Wenn Sie mit XML vertraut sind, ist dies ziemlich viel die ASCII-Untermenge der Syntax für XML-Name. 14 Die Festlegung von Rechtschreibfehlern, grammatischen Gotchas und Just-Plain-Falschheit in Commit-Log-Meldungen ist vielleicht der häufigste Anwendungsfall für die Option --revprop. 15 Derzeit ist libmagic die Unterstützungsbibliothek, die verwendet wird, um dies zu erreichen.

No comments:

Post a Comment