Wednesday, 1 November 2017

Svn Mime Type Binary Optionen


Für den 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, dass Sie einen Mime-Typ erzwingen können: 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. Binary Files und Übersetzung In der Allgemeiner Sinn, Subversion behandelt Binärdateien mehr anmutig als CVS tut. 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. Properties Weve hat bereits ausführlich behandelt, 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 nebeneinander 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. Hast du die Eigenschaft Ich suche die Option --with-all-revprops mit den svn-Log-Befehlen 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. Dies 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. In diesem Dialog können Sie Ihre bevorzugte Sprache und die Subversion-spezifischen Einstellungen angeben. Wählt die Sprache Ihrer Benutzeroberfläche aus. Natürlich musst du das entsprechende Sprachpaket installieren, um eine andere UI-Sprache zu bekommen als das Standard-Englisch. Überprüfen Sie nach Updates TortoiseSVN wird seine Download-Site regelmäßig kontaktieren, um zu sehen, ob es eine neuere Version des Programms gibt. Wenn es dort ist, wird ein Benachrichtigungslink im Commit-Dialog angezeigt. Verwenden Sie jetzt, ob Sie sofort eine Antwort wünschen. Die neue Version wird nicht heruntergeladen, Sie erhalten einfach einen Informationsdialog, der Ihnen mitteilt, dass die neue Version verfügbar ist. TortoiseSVN hat drei benutzerdefinierte Sounds, die standardmäßig installiert sind. Sie können verschiedene Sounds auswählen (oder diese Sounds komplett ausschalten) über die Windows Systemsteuerung. Konfigurieren ist eine Verknüpfung zur Systemsteuerung. Verwenden von Aero-Dialogen Unter Windows Vista und späteren Systemen steuert dies, ob Dialoge das Aero-Styling verwenden. Unter Windows 7 können Sie eine Bibliothek erstellen, in der Sie Arbeitskopien gruppieren, die an verschiedenen Stellen auf Ihrem System verstreut sind. Global ignore pattern Global ignore patterns werden verwendet, um zu verhindern, dass unversionierte Dateien z. B. Im Commit-Dialog. Dateien, die den Mustern entsprechen, werden auch durch einen Import ignoriert. Ignorieren Sie Dateien oder Verzeichnisse, indem Sie die Namen oder Erweiterungen eingeben. Muster sind durch Räume getrennt, z. B. Bin obj. bak. jar. Ttmp. Diese Muster sollten keine Pfadtrennzeichen enthalten. Beachten Sie auch, dass es keine Möglichkeit gibt, zwischen Dateien und Verzeichnissen zu unterscheiden. Lesen Sie den Abschnitt Pattern Matching in Ignore Lists für weitere Informationen über die Muster-Matching-Syntax. Beachten Sie, dass die hier angezeigten Ignoremuster auch andere Subversion-Clients betreffen, die auf Ihrem PC laufen, einschließlich des Kommandozeilen-Clients. Wenn Sie die Subversion-Konfigurationsdatei verwenden, um ein Global-ignores-Muster festzulegen, überschreibt es die hier vorgenommenen Einstellungen. Auf die Subversion-Konfigurationsdatei wird mit dem Bearbeiten wie unten beschrieben zugegriffen. Dieses ignorierte Muster wirkt sich auf alle Ihre Projekte aus. Es ist nicht versioniert, also wird es keine anderen Benutzer beeinflussen. Im Gegensatz dazu können Sie auch die versionierte svn: ignore oder svn: global-ignores-Eigenschaft verwenden, um Dateien oder Verzeichnisse von der Versionskontrolle auszuschließen. Lesen Sie den Abschnitt "Ignorieren von Dateien und Verzeichnissen" für weitere Informationen. Festlegen von Dateidaten auf die letzte Commit-Zeit Diese Option teilt TortoiseSVN mit, die Dateidaten auf die letzte Commit-Zeit zu setzen, wenn Sie eine Kasse oder ein Update durchführen. Andernfalls wird TortoiseSVN das aktuelle Datum verwenden. Wenn Sie Software entwickeln, ist es im Allgemeinen am besten, das aktuelle Datum zu verwenden, weil Build-Systeme normalerweise auf die Datumsstempel schauen, um zu entscheiden, welche Dateien kompiliert werden müssen. Wenn du die letzte Commit-Zeit benutzt und auf eine ältere Dateirevision zurückkehrst, kann dein Projekt nicht kompilieren, wie du es erwartet hast. Subversion-Konfigurationsdatei Verwenden Sie Bearbeiten, um die Subversion-Konfigurationsdatei direkt zu bearbeiten. Einige Einstellungen können nicht direkt von TortoiseSVN geändert werden und müssen stattdessen hier eingestellt werden. Weitere Informationen zur Subversion-Konfigurationsdatei finden Sie im Runtime-Konfigurationsbereich. Der Abschnitt über die automatische Eigenschaft Einstellung ist von besonderem Interesse und ist hier konfiguriert. Beachten Sie, dass Subversion Konfigurationsinformationen von mehreren Orten lesen kann und Sie wissen müssen, welche Vorrang hat. Siehe Konfiguration und die Windows Registry, um mehr zu erfahren. Lokale Änderungen an svn anwenden: externals beim Aktualisieren Diese Option teilt TortoiseSVN mit, dass bei der Aktualisierung der Arbeitskopie immer lokale Änderungen an der Eigenschaft svn: externals angewendet werden sollen. Kontextmenü-Einstellungen In diesem Dialog können Sie einige der TortoiseSVNs-Dialoge so konfigurieren, wie Sie sie mögen. Standardnummer der Protokollmeldungen Begrenzt die Anzahl der Protokollmeldungen, die TortoiseSVN abruft, wenn Sie TortoiseSVN Show Log Nützlich für langsame Serververbindungen wählen. Sie können immer alle anzeigen oder nächste 100, um mehr Nachrichten zu erhalten. Schriftart für Protokollmeldungen Wählt die Schriftart und die Größe aus, die verwendet wird, um die Protokollnachricht selbst im mittleren Bereich des Revisionslogdialogs anzuzeigen, und beim Verfassen von Protokollmeldungen im Dialogfeld "Commit". Kurzes Datumszeitformat in Protokollmeldungen Wenn die Standard-Langnachrichten zu viel Platz auf Ihrem Bildschirm verwenden, verwenden Sie das Kurzformat. Kann in der Protokollliste doppelklicken, um sie mit der vorherigen Revision zu vergleichen Wenn Sie häufig Revisionen im oberen Bereich des Protokolldialogs vergleichen, können Sie diese Option verwenden, um diese Aktion mit Doppelklick zu aktivieren. Es ist nicht standardmäßig aktiviert, da das Abrufen des Diffs oft ein langer Prozess ist und viele Leute es vorziehen, das Warten nach einem zufälligen Doppelklick zu vermeiden, weshalb diese Option standardmäßig nicht aktiviert ist. TortoiseSVN kann alle Fortschrittsdialoge automatisch schließen, wenn die Aktion ohne Fehler beendet ist. Mit dieser Einstellung können Sie die Bedingungen für das Schließen der Dialoge auswählen. Die Standardeinstellung (empfohlen) ist manuell eingeschlossen, mit der Sie alle Nachrichten überprüfen und überprüfen können, was passiert ist. Sie können jedoch entscheiden, dass Sie einige Arten von Nachrichten ignorieren möchten und den Dialog automatisch schließen lassen, wenn es keine kritischen Änderungen gibt. Auto-close if no merges, adds or deletes means that the progress dialog will close if there were simple updates, but if changes from the repository were merged with yours, or if any files were added or deleted, the dialog will remain open. It will also stay open if there were any conflicts or errors during the operation. Auto-close if no conflicts relaxes the criteria further and will close the dialog even if there were merges, adds or deletes. However, if there were any conflicts or errors, the dialog remains open. Auto-close if no errors always closes the dialog even if there were conflicts. The only condition that keeps the dialog open is an error condition, which occurs when Subversion is unable to complete the task. For example, an update fails because the server is inaccessible, or a commit fails because the working copy is out-of-date. Always close dialogs for local operations Local operations like adding files or reverting changes do not need to contact the repository and complete quickly, so the progress dialog is often of little interest. Select this option if you want the progress dialog to close automatically after these operations, unless there are errors. Use recycle bin when reverting When you revert local modifications, your changes are discarded. TortoiseSVN gives you an extra safety net by sending the modified file to the recycle bin before bringing back the pristine copy. If you prefer to skip the recycle bin, uncheck this option. Use URL of WC as the default From: URL In the merge dialog, the default behaviour is for the From: URL to be remembered between merges. However, some people like to perform merges from many different points in their hierarchy, and find it easier to start out with the URL of the current working copy. This can then be edited to refer to a parallel path on another branch. Default checkout path You can specify the default path for checkouts. If you keep all your checkouts in one place, it is useful to have the drive and folder pre-filled so you only have to add the new folder name to the end. Default checkout URL You can also specify the default URL for checkouts. If you often checkout sub-projects of some very large project, it can be useful to have the URL pre-filled so you only have to add the sub-project name to the end. The revision graph attempts to show a clearer picture of your repository structure by distinguishing between trunk, branches and tags. As there is no such classification built into Subversion, this information is extracted from the path names. The default settings assume that you use the conventional English names as suggested in the Subversion documentation, but of course your usage may vary. Specify the patterns used to recognise these paths in the three boxes provided. The patterns will be matched case-insensitively, but you must specify them in lower case. Wild cards and. will work as usual, and you can use to separate multiple patterns. Do not include any extra white space as it will be included in the matching specification. Commit tag detection Please note that these patterns are also used to detect commits to a tag, not just for the revision graph. Colors are used in the revision graph to indicate the node type, i. e. whether a node is added, deleted, renamed. In order to help pick out node classifications, you can allow the revision graph to blend colors to give an indication of both node type and classification. If the box is checked, blending is used. If the box is unchecked, color is used to indicate node type only. Use the color selection dialog to allocate the specific colors used. Revision Graph Colors This page allows you to choose the items for which TortoiseSVN will display icon overlays. Since it takes quite a while to fetch the status of a working copy, TortoiseSVN uses a cache to store the status so the explorer doesnt get hogged too much when showing the overlays. You can choose which type of cache TortoiseSVN should use according to your system and working copy size here: Caches all status information in a separate process ( TSVNCache. exe ). That process watches all drives for changes and fetches the status again if files inside a working copy get modified. The process runs with the least possible priority so other programs dont get hogged because of it. That also means that the status information is not real time but it can take a few seconds for the overlays to change. Advantage: the overlays show the status recursively, i. e. if a file deep inside a working copy is modified, all folders up to the working copy root will also show the modified overlay. And since the process can send notifications to the shell, the overlays on the left tree view usually change too. Disadvantage: the process runs constantly, even if youre not working on your projects. It also uses around 10-50 MB of RAM depending on number and size of your working copies. Caching is done directly inside the shell extension dll, but only for the currently visible folder. Each time you navigate to another folder, the status information is fetched again. Advantage: needs only very little memory (around 1 MB of RAM) and can show the status in real time . Disadvantage: Since only one folder is cached, the overlays dont show the status recursively. For big working copies, it can take more time to show a folder in explorer than with the default cache. Also the mime-type column is not available. With this setting, the TortoiseSVN does not fetch the status at all in Explorer. Because of that, files dont get an overlay and folders only get a normal overlay if theyre versioned. No other overlays are shown, and no extra columns are available either. Advantage: uses absolutely no additional memory and does not slow down the Explorer at all while browsing. Disadvantage: Status information of files and folders is not shown in Explorer. To see if your working copies are modified, you have to use the Check for modifications dialog. By default, overlay icons and context menus will appear in all opensave dialogs as well as in Windows Explorer. If you want them to appear only in Windows Explorer, check the Show overlays and context menu only in explorer box. You can also choose to mark folders as modified if they contain unversioned items. This could be useful for reminding you that you have created new files which are not yet versioned. This option is only available when you use the default status cache option (see below). If you have files in the ignore-on-commit changelist, you can chose to make those files not propagate their status to the parent folder. That way if only files in that changelist are modified, the parent folder still shows the unmodified overlay icon. The next group allows you to select which classes of storage should show overlays. By default, only hard drives are selected. You can even disable all icon overlays, but wheres the fun in that Network drives can be very slow, so by default icons are not shown for working copies located on network shares. USB Flash drives appear to be a special case in that the drive type is identified by the device itself. Some appear as fixed drives, and some as removable drives. The Exclude Paths are used to tell TortoiseSVN those paths for which it should not show icon overlays and status columns. This is useful if you have some very big working copies containing only libraries which you wont change at all and therefore dont need the overlays, or if you only want TortoiseSVN to look in specific folders. Any path you specify here is assumed to apply recursively, so none of the child folders will show overlays either. If you want to exclude only the named folder, append. after the path. The same applies to the Include Paths. Except that for those paths the overlays are shown even if the overlays are disabled for that specific drive type, or by an exclude path specified above. Users sometimes ask how these three settings interact. For any given path check the include and exclude lists, seeking upwards through the directory structure until a match is found. When the first match is found, obey that include or exclude rule. If there is a conflict, a single directory spec takes precedence over a recursive spec, then inclusion takes precedence over exclusion. An example will help here: These settings disable icon overlays for the C: drive, except for c:develop. All projects below that directory will show overlays, except the c:develop folder itself, which is specifically ignored. The high-churn binary folders are also excluded. TSVNCache. exe also uses these paths to restrict its scanning. If you want it to look only in particular folders, disable all drive types and include only the folders you specifically want to be scanned. Exclude SUBST Drives It is often convenient to use a SUBST drive to access your working copies, e. g. using the command However this can cause the overlays not to update, as TSVNCache will only receive one notification when a file changes, and that is normally for the original path. This means that your overlays on the subst path may never be updated. An easy way to work around this is to exclude the original path from showing overlays, so that the overlays show up on the subst path instead. Sometimes you will exclude areas that contain working copies, which saves TSVNCache from scanning and monitoring for changes, but you still want a visual indication that a folder contains a working copy. The Show excluded root folders as normal checkbox allows you to do this. With this option, working copy root folders in any excluded area (drive type not checked, or specifically excluded) will show up as normal and up-to-date, with a green check mark. This reminds you that you are looking at a working copy, even though the folder overlays may not be correct. Files do not get an overlay at all. Note that the context menus still work, even though the overlays are not shown. As a special exception to this, drives A: and B: are never considered for the Show excluded folders as normal option. This is because Windows is forced to look on the drive, which can result in a delay of several seconds when starting Explorer, even if your PC does have a floppy drive. Icon Set Selection Here you can configure your proxy server, if you need one to get through your companys firewall. If you need to set up per-repository proxy settings, you will need to use the Subversion servers file to configure this. Use Edit to get there directly. Consult the Runtime Configuration Area for details on how to use this file. You can also specify which program TortoiseSVN should use to establish a secure connection to a svnssh repository. We recommend that you use TortoisePlink. exe. This is a version of the popular Plink program, and is included with TortoiseSVN, but it is compiled as a Windowless app, so you dont get a DOS box popping up every time you authenticate. You must specify the full path to the executable. For TortoisePlink. exe this is the standard TortoiseSVN bin directory. Use the Browse button to help locate it. Note that if the path contains spaces, you must enclose it in quotes, e. g. One side-effect of not having a window is that there is nowhere for any error messages to go, so if authentication fails you will simply get a message saying something like Unable to write to standard output . For this reason we recommend that you first set up using standard Plink. When everything is working, you can use TortoisePlink with exactly the same parameters. TortoisePlink does not have any documentation of its own because it is just a minor variant of Plink. Find out about command line parameters from the PuTTY website . To avoid being prompted for a password repeatedly, you might also consider using a password caching tool such as Pageant. This is also available for download from the PuTTY website. Finally, setting up SSH on server and clients is a non-trivial process which is beyond the scope of this help file. However, you can find a guide in the TortoiseSVN FAQ listed under SubversionTortoiseSVN SSH How-To . External Program Settings Figure 4.81. The Settings Dialog, Diff Viewer Page Here you can define your own diffmerge programs that TortoiseSVN should use. The default setting is to use TortoiseMerge which is installed alongside TortoiseSVN. Read the section called External DiffMerge Tools for a list of some of the external diffmerge programs that people are using with TortoiseSVN. Diff Viewer An external diff program may be used for comparing different revisions of files. The external program will need to obtain the filenames from the command line, along with any other command line options. TortoiseSVN uses substitution parameters prefixed with . When it encounters one of these it will substitute the appropriate value. The order of the parameters will depend on the Diff program you use. The original file without your changes The window title for the base file The window title for the base file, without quotes Your own file, with your changes The window title for your file The window title for your file, without quotes The URL of the original file, if available The URL of the original file, if available, without quotes The URL of the second file, if available The URL of the second file, if available, without quotes The revision of the original file, if available The revision of the original file, if available, without quotes The revision of the second file, if available The revision of the second file, if available, without quotes The peg revision, if available The peg revision, if available, without quotes The name of the conflicted file The name of the conflicted file, without quotes The window titles are not pure filenames. TortoiseSVN treats that as a name to display and creates the names accordingly. So e. g. if youre doing a diff from a file in revision 123 with a file in your working copy, the names will be filename. revision 123 and filename. working copy. For example, with ExamDiff Pro: or with WinMerge: or with UltraCompare: or with DiffMerge: If you use the svn:keywords property to expand keywords, and in particular the revision of a file, then there may be a difference between files which is purely due to the current value of the keyword. Also if you use svn:eol-style native the BASE file will have pure LF line endings whereas your file will have CR-LF line endings. TortoiseSVN will normally hide these differences automatically by first parsing the BASE file to expand keywords and line endings before doing the diff operation. However, this can take a long time with large files. If Convert files when diffing against BASE is unchecked then TortoiseSVN will skip pre-processing the files. You can also specify a different diff tool to use on Subversion properties. Since these tend to be short simple text strings, you may want to use a simpler more compact viewer. If you have configured an alternate diff tool, you can access TortoiseMerge and the third party tool from the context menus. Context menu Diff uses the primary diff tool, and Shift Context menu Diff uses the secondary diff tool. At the bottom of the dialog you can configure a viewer program for unified-diff files (patch files). No parameters are required. The Default setting is to use TortoiseUDiff which is installed alongside TortoiseSVN, and colour-codes the added and removed lines. Since Unified Diff is just a text format, you can use your favourite text editor if you prefer. Merge Tool An external merge program used to resolve conflicted files. Parameter substitution is used in the same way as with the Diff Program. the original file without your or the others changes The window title for the base file The window title for the base file, without quotes your own file, with your changes The window title for your file The window title for your file, without quotes the file as it is in the repository The window title for the file in the repository The window title for the file in the repository, without quotes the conflicted file, the result of the merge operation The window title for the merged file The window title for the merged file, without quotes The name of the file. This is an empty string if two different files are diffed instead of two states of the same file. The name of the file, without quotes For example, with Perforce Merge: or with WinMerge (2.8 or later): or with DiffMerge: DiffMerge Advanced Settings Figure 4.82. The Settings Dialog, DiffMerge Advanced Dialog In the advanced settings, you can define a different diff and merge program for every file extension. For instance you could associate Photoshop as the Diff Program for. jpg files :-) You can also associate the svn:mime-type property with a diff or merge program. To associate using a file extension, you need to specify the extension. Use. bmp to describe Windows bitmap files. To associate using the svn:mime-type property, specify the mime type, including a slash, for example textxml. Saved Data Settings Figure 4.83. The Settings Dialog, Saved Data Page For your convenience, TortoiseSVN saves many of the settings you use, and remembers where you have been lately. If you want to clear out that cache of data, you can do it here. Whenever you checkout a working copy, merge changes or use the repository browser, TortoiseSVN keeps a record of recently used URLs and offers them in a combo box. Sometimes that list gets cluttered with outdated URLs so it is useful to flush it out periodically. If you want to remove a single item from one of the combo boxes you can do that in-place. Just click on the arrow to drop the combo box down, move the mouse over the item you want to remove and type ShiftDel . Log messages (Input dialog) TortoiseSVN stores recent commit log messages that you enter. These are stored per repository, so if you access many repositories this list can grow quite large. Log messages (Show log dialog) TortoiseSVN caches log messages fetched by the Show Log dialog to save time when you next show the log. If someone else edits a log message and you already have that message cached, you will not see the change until you clear the cache. Log message caching is enabled on the Log Cache tab. Dialog sizes and positions Many dialogs remember the size and screen position that you last used. When you authenticate with a Subversion server, the username and password are cached locally so you dont have to keep entering them. You may want to clear this for security reasons, or because you want to access the repository under a different username. does John know you are using his PC If you want to clear authentication data for one particular server only, use the Clear. instead of the Clear all button. TortoiseSVN keeps a log of everything written to its progress dialogs. This can be useful when, for example, you want to check what happened in a recent update command. The log file is limited in length and when it grows too big the oldest content is discarded. By default 4000 lines are kept, but you can customize that number. From here you can view the log file content, and also clear it. Log Caching Figure 4.84. The Settings Dialog, Log Cache Page This dialog allows you to configure the log caching feature of TortoiseSVN, which retains a local copy of log messages and changed paths to avoid time-consuming downloads from the server. Using the log cache can dramatically speed up the log dialog and the revision graph. Another useful feature is that the log messages can still be accessed when offline. Enable log caching Enables log caching whenever log data is requested. If checked, data will be retrieved from the cache when available, and any messages not in the cache will be retrieved from the server and added to the cache. If caching is disabled, data will always be retrieved directly from the server and not stored locally. Allow ambiguous URLs Occasionally you may have to connect to a server which uses the same URL for all repositories. Older versions of svnbridge would do this. If you need to access such repositories you will have to check this option. If you dont, leave it unchecked to improve performance. Allow ambiguous UUIDs Some hosting services give all their repositories the same UUID. You may even have done this yourself by copying a repository folder to create a new one. For all sorts of reasons this is a bad idea - a UUID should be unique . However, the log cache will still work in this situation if you check this box. If you dont need it, leave it unchecked to improve performance. If the repository cannot be contacted If you are working offline, or if the repository server is down, the log cache can still be used to supply log messages already held in the cache. Of course the cache may not be up-to-date, so there are options to allow you to select whether this feature should be used. When log data is being taken from the cache without contacting the server, the dialog using those message will show the offline state in its title bar. Timeout before updating the HEAD revision When you invoke the log dialog you will normally want to contact the server to check for any newer log messages. If the timeout set here is non-zero then the server will only be contacted when the timeout has elapsed since the last time contact. This can reduce server round-trips if you open the log dialog frequently and the server is slow, but the data shown may not be completely up-to-date. If you want to use this feature we suggest using a value of 300 (5 minutes) as a compromise. Days of inactivity until small caches get removed If you browse around a lot of repositories you will accumulate a lot of log caches. If youre not actively using them, the cache will not grow very big, so TortoiseSVN purges them after a set time by default. Use this item to control cache purging. Maximum size of removed inactive caches Larger caches are more expensive to reacquire, so TortoiseSVN only purges small caches. Fine tune the threshold with this value. Maximum number of tool failures before cache removal Occasionally something goes wrong with the caching and causes a crash. If this happens the cache is normally deleted automatically to prevent a recurrence of the problem. If you use the less stable nightly build you may opt to keep the cache anyway. Cached Repositories On this page you can see a list of the repositories that are cached locally, and the space used for the cache. If you select one of the repositories you can then use the buttons underneath. Click on the Update to completely refresh the cache and fill in any holes. For a large repository this could be very time consuming, but useful if you are about to go offline and want the best available cache. Click on the Export button to export the entire cache as a set of CSV files. This could be useful if you want to process the log data using an external program, although it is mainly useful to the developers. Click on Delete to remove all cached data for the selected repositories. This does not disable caching for the repository so the next time you request log data, a new cache will be created. Log Cache Statistics Click on the Details button to see detailed statistics for a particular cache. Many of the fields shown here are mainly of interest to the developers of TortoiseSVN, so they are not all described in detail. The amount of memory required to service this cache. The amount of disk space used for the cache. Data is compressed, so disk usage is generally fairly modest. Shows whether the repository was available last time the cache was used. The last time the cache content was changed. Last head update The last time we requested the HEAD revision from the server. The number of different authors with messages recorded in the cache. The number of paths listed, as you would see using svn log - v. The number of revision ranges which we have not fetched, simply because they havent been requested. This is a measure of the number of holes in the cache. The highest revision number stored in the cache. The number of revisions stored in the cache. This is another measure of cache completeness. Client Side Hook Scripts Figure 4.86. The Settings Dialog, Hook Scripts Page This dialog allows you to set up hook scripts which will be executed automatically when certain Subversion actions are performed. As opposed to the hook scripts explained in the section called Server side hook scripts. these scripts are executed locally on the client. One application for such hooks might be to call a program like SubWCRev. exe to update version numbers after a commit, and perhaps to trigger a rebuild. Note that you can also specify such hook scripts using special properties on your working copy. See the section the section called TortoiseSVN Project Properties for details. Figure 4.87. The Settings Dialog, Configure Hook Scripts To add a new hook script, simply click Add and fill in the details. There are currently these types of hook script available Called before the commit dialog is shown. You might want to use this if the hook modifies a versioned file and affects the list of files that need to be committed andor commit message. However you should note that because the hook is called at an early stage, the full list of objects selected for commit is not available. If this is specified, the commit dialog shows a button Run Hook which when clicked runs the specified hook script. The hook script receives a list of all checkec files and folders and the commit message if there was one entered. Called after the user clicks OK in the commit dialog, and before the commit dialog closes. This hook gets a list of all the checked files. If the hook returns an error, the commit dialog stays open. If the returned error message contains paths on newline separated lines, those paths will get selected in the commit dialog after the error message is shown. Called after the user clicks OK in the commit dialog, and before the actual commit begins. This hook has a list of exactly what will be committed. Called after the commit finishes (whether successful or not). Called before the update-to-revision dialog is shown. Called before the actual Subversion update or switch begins. Called after the update, switch or checkout finishes (whether successful or not). Called before an attempt to contact the repository. Called at most once in five minutes. A hook is defined for a particular working copy path. You only need to specify the top level path if you perform an operation in a sub-folder, TortoiseSVN will automatically search upwards for a matching path. Next you must specify the command line to execute, starting with the path to the hook script or executable. This could be a batch file, an executable file or any other file which has a valid windows file association, e. g. a perl script. Note that the script must not be specified using a UNC path as Windows shell execute will not allow such scripts to run due to security restrictions. The command line includes several parameters which get filled in by TortoiseSVN. The parameters passed depend upon which hook is called. Each hook has its own parameters which are passed in the following order: PATH MESSAGEFILE CWD PATH MESSAGEFILE CWD PATH DEPTH MESSAGEFILE CWD PATH DEPTH MESSAGEFILE REVISION ERROR CWD Path to a file containing the log message for the commit. The file contains the text in UTF-8 encoding. After successful execution of the start-commit hook, the log message is read back, giving the hook a chance to modify it. The repository revision to which the update should be done or after a commit completes. Path to a file containing the error message. If there was no error, the file will be empty. The current working directory with which the script is run. This is set to the common root directory of all affected paths. A path to a temporary file which contains all the paths which were somehow touched by the operation. Each path is on a separate line in the temp file. Note that although we have given these parameters names for convenience, you do not have to refer to those names in the hook settings. All parameters listed for a particular hook are always passed, whether you want them or not -) If you want the Subversion operation to hold off until the hook has completed, check Wait for the script to finish. Normally you will want to hide ugly DOS boxes when the script runs, so Hide the script while running is checked by default. Sample client hook scripts can be found in the contrib folder in the TortoiseSVN repository . (the section called License explains how to access the repository.) When debugging hook scripts you may want to echo progress lines to the DOS console, or insert a pause to stop the console window disappearing when the script completes. Because IO is redirected this will not normally work. However you can redirect input and output explicitly to CON to overcome this. z. B. A small tool is included in the TortoiseSVN installation folder named ConnectVPN. exe. You can use this tool configured as a pre-connect hook to connect automatically to your VPN before TortoiseSVN tries to connect to a repository. Just pass the name of the VPN connection as the first parameter to the tool. Issue Tracker Integration TortoiseSVN can use a COM plugin to query issue trackers when in the commit dialog. The use of such plugins is described in the section called Getting Information from the Issue Tracker. If your system administrator has provided you with a plugin, which you have already installed and registered, this is the place to specify how it integrates with your working copy. Figure 4.88. The Settings Dialog, Issue Tracker Integration Page Click on Add. to use the plugin with a particular working copy. Here you can specify the working copy path, choose which plugin to use from a drop down list of all registered issue tracker plugins, and any parameters to pass. The parameters will be specific to the plugin, but might include your user name on the issue tracker so that the plugin can query for issues which are assigned to you. If you want all users to use the same COM plugin for your project, you can specify the plugin also with the properties bugtraq:provideruuid. bugtraq:provideruuid64 and bugtraq:providerparams. This property specifies the COM UUID of the IBugtraqProvider, for example . (This example is the UUID of the Gurtle bugtraq provider . which is a provider for the Google Code issue tracker.) This is the same as bugtraq:provideruuid. but for the 64-bit version of the IBugtraqProvider. This property specifies the parameters passed to the IBugtraqProvider. Please check the documentation of your IBugtraqProvider plugin to find out what to specify in these two properties. TortoiseBlame Settings Figure 4.89. The Settings Dialog, TortoiseBlame Page The settings used by TortoiseBlame are controlled from the main context menu, not directly with TortoiseBlame itself. TortoiseBlame can use the background colour to indicate the age of lines in a file. You set the endpoints by specifying the colours for the newest and oldest revisions, and TortoiseBlame uses a linear interpolation between these colours according to the repository revision indicated for each line. You can specify different colours to use for the locator bar. The default is to use strong contrast on the locator bar while keeping the main window background light so that you can still read the text. You can select the font used to display the text, and the point size to use. This applies both to the file content, and to the author and revision information shown in the left pane. Defines how many spaces to use for expansion when a tab character is found in the file content. TortoiseUDiff Settings Figure 4.90. The Settings Dialog, TortoiseUDiff Page The settings used by TortoiseUDiff are controlled from the main context menu, not directly with TortoiseUDiff itself. The default colors used by TortoiseUDiff are usually ok, but you can configure them here. You can select the font used to display the text, and the point size to use. Defines how many spaces to use for expansion when a tab character is found in the file diff. Exporting TSVN Settings Figure 4.91. The Settings Dialog, Sync Page You can sync all TortoiseSVN settings to and from an encrypted file. The file is encrpyted with the password you enter so you dont have to worry if you store that file on a cloud folder like OneDrive, GDrive, DropBox. When a path and password is specified, TortoiseSVN will sync all settings automatically and keep them in sync. You can also exportimport an encrypted files with all the settings manually. When you do that, youre asked for the path of the file and the password to encryptdecrypt the settings file. When exporting the settings manually, you can also optionally include all local settings which are not included in a normal export or in a sync. Local settings are settings which include local paths which usually vary between computers. These local settings include the configured diff and merge tools and hook scripts. Advanced Settings A few infrequently used settings are available only in the advanced page of the settings dialog. These settings modify the registry directly and you have to know what each of these settings is used for and what it does. Do not modify these settings unless you are sure you need to change them. Sometimes multiple users use the same account on the same computer. In such situations its not really wanted to save the authentication data. Setting this value to false disables the save authentication button in the authentication dialog. If an update adds a new file from the repository which already exists in the local working copy as an unversioned file, the default action is to keep the local file, showing it as a (possibly) modified version of the new file from the repository. If you would prefer TortoiseSVN to create a conflict in such situations, set this value to false. As with the explorer, TortoiseSVN shows additional commands if the Shift key is pressed while the context menu is opened. To force TortoiseSVN to always show those extended commands, set this value to true. The minimum amount of chars from which the editor shows an auto-completion popup. The default value is 3. The auto-completion list shown in the commit message editor displays the names of files listed for commit. To also include these names with extensions removed, set this value to true. File externals that are pegged to a specific revision are blocked by default from being selected for a commit. This is because a subsequent update would revert those changes again unless the pegged revision of the external is adjusted. Set this value to false in case you still want to commit changes to such external files. If you dont want the explorer to update the status overlays while another TortoiseSVN command is running (e. g. Update, Commit. ) then set this value to true. To add a cache tray icon for the TSVNCache program, set this value to true. This is really only useful for developers as it allows you to terminate the program gracefully. The extra columns the TortoiseSVN adds to the details view in Windows Explorer are normally only active in a working copy. If you want those to be accessible everywhere, not just in working copies, set this value to true. Note that the extra columns are only available in XP. Vista and later doesnt support that feature any more. However some third-party explorer replacements do support those even on Windows versions later than XP. You can specify a different location for the Subversion configuration file here. This will affect all TortoiseSVN operations. In most dialogs in TortoiseSVN, you can use CtrlEnter to dismiss the dialog as if you clicked on the OK button. If you dont want this, set this value to false. Set this to true if you want a dialog to pop up for every command showing the command line used to start TortoiseProc. exe. Set this to true if you want TortoiseSVN to print out debug messages during execution. The messages can be captured with special debugging tools only. The default format (value of 0) of dialog titles is urlpath - name of dialog - TortoiseSVN. If you set this value to 1, the format changes to name of dialog - urlpath - TortoiseSVN. TortoiseSVN allows you to assign an external diff viewer. Most such viewers, however, are not suited for change blaming (the section called Blame Differences ), so you might wish to fall back to TortoiseMerge in this case. To do so, set this value to true. This value specifies the number of pixels a dialog has to be near a border before the dialog sticks to it. The default value is 3. To disable this value set the value to zero. Some apps change the case of filenames without notice but those changes arent really necessary nor wanted. For example a change from file. txt to FILE. TXT wouldnt bother normal Windows applications, but Subversion is case sensitive in these situations. So TortoiseSVN automatically fixes such case changes. If you dont want TortoiseSVN to automatically fix such case changes for you, you can set this value to false. The status list control which is used in various dialogs (e. g. commit, check-for-modifications, add, revert. ) uses full row selection (i. e. if you select an entry, the full row is selected, not just the first column). This is fine, but the selected row then also covers the background image on the bottom right, which can look ugly. To disable full row select, set this value to false. This option determines how the Win7 taskbar icons of the various TortoiseSVN dialogs and windows are grouped together. This option has no effect on Vista The default value is 0. With this setting, the icons are grouped together by application type. All dialogs from TortoiseSVN are grouped together, all windows from TortoiseMerge are grouped together. Figure 4.92. Taskbar with default grouping If set to 1, then instead of all dialogs in one single group per application, theyre grouped together by repository. For example, if you have a log dialog and a commit dialog open for repository A. and a check-for-modifications dialog and a log dialog for repository B. then there are two application icon groups shown in the Win7 taskbar, one group for each repository. But TortoiseMerge windows are not grouped together with TortoiseSVN dialogs. Figure 4.93. Taskbar with repository grouping If set to 2, then the grouping works as with the setting set to 1, except that TortoiseSVN, TortoiseMerge, TortoiseBlame, TortoiseIDiff and TortoiseUDiff windows are all grouped together. For example, if you have the commit dialog open and then double click on a modified file, the opened TortoiseMerge diff window will be put in the same icon group on the taskbar as the commit dialog icon. Figure 4.94. Taskbar with repository grouping If set to 3, then the grouping works as with the setting set to 1, but the grouping isnt done according to the repository but according to the working copy. This is useful if you have all your projects in the same repository but different working copies for each project. If set to 4, then the grouping works as with the setting set to 2, but the grouping isnt done according to the repository but according to the working copy. If this is set to false. then every svn:externals is shown during an update separately. If it is set to true (the default), then update information for externals is only shown if the externals are affected by the update, i. e. changed in some way. Otherwise nothing is shown as with normal files and folders. This has no effect if the option GroupTaskbarIconsPerRepo is set to 0 (see above). If this option is set to true. then every icon on the Win7 taskbar shows a small colored rectangle overlay, indicating the repository the dialogswindows are used for. Figure 4.95. Taskbar grouping with repository color overlays By default, TortoiseSVN always runs an update with externals included. This avoids problems with inconsistent working copies. If you have however a lot of externals set, an update can take quite a while. Set this value to false to run the default update with externals excluded. To update with externals included, either run the Update to revision. dialog or set this value to true again. When the log dialog is started from the merge wizard, already merged revisions are shown in gray, but revisions beyond the point where the branch was created are also shown. These revisions are shown in black because those cant be merged. If this option is set to true then TortoiseSVN tries to find the revision where the branch was created from and hide all the revisions that are beyond that revision. Since this can take quite a while, this option is disabled by default. Also this option doesnt work with some SVN servers (e. g. Google Code Hosting, see issue 5471 ). A format string for the log messages when multiple revisions are selected in the log dialog. You can use the following placeholders in your format string: 1ld gets replaced with the revision number text 2s gets replaced with the short log message of the revision The log dialog shows the revision the working copy path is at in bold. But this requires that the log dialog fetches the status of that path. Since for very big working copies this can take a while, you can set this value to false to deactivate this feature. When you merge revisions from another branch, and merge tracking information is available, the log messages from the revisions you merge will be collected to make up a commit log message. A pre-defined string is used to separate the individual log messages of the merged revisions. If you prefer, you can set this to a value containing a separator string of your choice. If you want to show the diff at once for more items than specified with this settings, a warning dialog is shown first. The default is 10. TortoiseSVN checks whether theres a new version available about once a week. If an updated version is found, the commit dialog shows a link control with that info. If you prefer the old behavior back where a dialog pops up notifying you about the update, set this value to true. The repository browser tries to fetch the web page thats generated by an SVN server configured with the SVNParentPath directive to get a list of all repositories. To disable that behavior, set this value to false. This option enables the use of Direct2D accelerated drawing in the Scintilla control which is used as the edit box in e. g. the commit dialog, and also for the unified diff viewer. With some graphic cards however this sometimes doesnt work properly so that the cursor to enter text isnt always visible. If that happens, you can turn this feature off by setting this value to false. If you dont want TortoiseSVN to ask you to update the working copy automatically after an Out of date error, set this value to false. TortoiseSVN uses accelerators for its explorer context menu entries. Since this can lead to doubled accelerators (e. g. the SVN Commit has the Alt-C accelerator, but so does the Copy entry of explorer). If you dont want or need the accelerators of the TortoiseSVN entries, set this value to false. This can be useful if you use something other than the windows explorer or if you get problems with the context menu displaying incorrectly. Set this value to false if you dont want TortoiseSVN to show icons for the shell context menu items. Set this value to true to show the icons again. If you dont want TortoiseSVN to show icons for the context menus in its own dialogs, set this value to false. The commit and log dialog use styling (e. g. bold, italic) in commit messages (see the section called Commit Log Messages for details). If you dont want to do this, set the value to false. This value contains the URL from which TortoiseSVN tries to download a text file to find out if there are updates available. This might be useful for company admins who dont want their users to update TortoiseSVN until they approve it. TortoiseSVN checks whether theres a new version available about once a week. If you dont want TortoiseSVN to do this check, set this value to false.

No comments:

Post a Comment