it-swarm-eu.dev

Wie kann ich Subversion anweisen, eine Datei als Binärdatei zu behandeln?

Wie kann ich Subversion (svn) anweisen, eine Datei als Binärdatei zu behandeln?

62
Nick

Sie können eine Datei, die sich in einem Repository befindet, manuell als binär identifizieren, indem Sie Folgendes verwenden:

svn propset svn:mime-type application/octet-stream <filename>

Dies ist in der Regel nicht erforderlich, da Subversion versucht, festzustellen, ob eine Datei binär ist, wenn die Datei zum ersten Mal hinzugefügt wird. Wenn Subversion einen bestimmten Typ fälschlicherweise als "Text" markiert, wenn er als binär behandelt werden soll, ist es möglich, Subversions Auto-Requisiten-Funktion so zu konfigurieren, dass diese Datei automatisch mit einem Nicht-Text-MIME-Typ markiert wird. Unabhängig von den für die Datei konfigurierten Eigenschaften speichert Subversion die Datei im Repository weiterhin in einem Binärformat.

Wenn Subversion den MIME-Typ als "Text" -Typ identifiziert, werden bestimmte Funktionen aktiviert, die für Binärdateien nicht verfügbar sind, z. B. svn diff und svn Schuld . Es ermöglicht auch die automatische Konvertierung von Zeilenenden, die Client für Client konfiguriert werden kann.

Weitere Informationen finden Sie unter Wie behandelt Subversion Binärdateien?

81
stormlash

Ab Seite 367 des Subversion-Buches

Im Allgemeinen geht Subversion eleganter mit Binärdateien um als CVS. Da CVS RCS verwendet, kann es nur aufeinanderfolgende vollständige Kopien einer sich ändernden Binärdatei speichern. Subversion drückt jedoch Unterschiede zwischen Dateien mithilfe eines binären Differenzierungsalgorithmus aus, unabhängig davon, ob sie Text- oder Binärdaten enthalten. Das heißt, alle Dateien werden differentiell (komprimiert) im Repository gespeichert.

CVS-Benutzer müssen Binärdateien mit -kb-Flags kennzeichnen, um zu verhindern, dass Daten verstümmelt werden (aufgrund von Schlüsselworterweiterungen und Übersetzungen mit Zeilenende). Sie vergessen manchmal, dies zu tun.

Subversion geht den paranoideren Weg. Erstens führt es niemals eine Art von Übersetzung von Schlüsselwörtern oder Zeilenenden durch, es sei denn, Sie fordern dies ausdrücklich an (weitere Informationen finden Sie im Abschnitt „Schlüsselwortersetzung“ und im Abschnitt „Zeichenfolgen am Zeilenende“). Standardmäßig behandelt Subversion alle Dateidaten als Literalbytezeichenfolgen, und Dateien werden im Repository immer in einem nicht übersetzten Zustand gespeichert.

Zweitens behält Subversion eine interne Vorstellung davon bei, ob es sich bei einer Datei um "Text" - oder "Binär" -Daten handelt, aber diese Vorstellung ist nur in der Arbeitskopie vorhanden. Während eines SVN-Updates führt Subversion kontextbezogene Zusammenführungen für lokal geänderte Textdateien durch, versucht dies jedoch nicht für Binärdateien.

Um festzustellen, ob eine kontextbezogene Zusammenführung möglich ist, untersucht Subversion die Eigenschaft svn: mime-type. Wenn die Datei keine svn: mime-type-Eigenschaft oder einen textuellen MIME-Typ (z. B. text/*) hat, geht Subversion davon aus, dass es sich um Text handelt. Andernfalls geht Subversion davon aus, dass die Datei binär ist. Subversion unterstützt Benutzer auch durch Ausführen eines Binärerkennungsalgorithmus in den Befehlen svn import und svn add. Diese Befehle werden eine gute Vermutung anstellen und dann (möglicherweise) eine binäre Eigenschaft svn: mime-type für die hinzuzufügende Datei festlegen. (Wenn Subversion falsch vermutet, kann der Benutzer die Eigenschaft jederzeit entfernen oder manuell bearbeiten.)

Die manuelle Bearbeitung würde von erfolgen

svn propset svn:mime-type some/type filename.extension
21
Evil Andy

Grundsätzlich müssen Sie den MIME-Typ auf Octet-Stream setzen:

svn propset svn:mime-type application/octet-stream <filename>
15
KTamas

Wenn 'svn add' den falschen Typ errät und eine Fehlermeldung wie die folgende ausgibt:

svn: E200009: File 'qt/examples/dialogs/configdialog/images/config.png' has inconsistent newlines
svn: E135000: Inconsistent line ending style

dann besteht die Problemumgehung darin, die Datei ohne Eigenschaften hinzuzufügen und die Eigenschaften in einem zweiten Schritt festzulegen:

svn add --no-auto-props qt/examples/dialogs/configdialog/images/config.png
svn propset svn:mime-type image/png qt/examples/dialogs/configdialog/images/config.png
13
user1454388

Beispielsweise:

svn propset svn:mime-type image/png foo.png
8
Jan Krüger

Obwohl Subversion versucht automatisch zu erkennen , ob eine Datei binär ist oder nicht, können Sie den MIME-Typ mit svn propset überschreiben. Zum Beispiel, svn propset svn:mime-type application/octet-stream example.txt. Dadurch fungiert Ihre Datei eher als eine Auflistung von Bytes als als eine Textdatei. Siehe auch das svn-Handbuch zu File Portability .

4
grammar31

Wenn Sie tortoise svn unter Windows verwenden, klicken Sie mit der rechten Maustaste auf die Datei und gehen Sie zu den Eigenschaften. Klicken Sie auf Neu und fügen Sie eine neue Eigenschaft vom Typ svn: mime-type hinzu. Für den Wert put: application/octet-stream

3
Brian R. Bondy

Gemäß Subversion FAQ können Sie svn propset verwenden, um die Eigenschaft svn: mime-type in application/octet-stream Zu ändern =

2
Adrian Petrescu

svn sucht nach einer MIME-Eigenschaft und schätzt, dass es sich um Text handelt, wenn er nicht vorhanden ist. Sie können diese Eigenschaft explizit festlegen, siehe http://svnbook.red-bean.com/en/1.5/svn.forcvs.binary-and-trans.html

2
Paul Dixon

Normalerweise erledigt es dies standardmäßig für Sie, aber wenn dies nicht der Fall ist, müssen Sie die Dateieigenschaften und das Propset überprüfen.

0
Frank Wiles