64 votes

Comment dire à Subversion de traiter un fichier comme un fichier binaire?

Comment dire à Subversion (svn) de traiter un fichier comme un fichier binaire?

82voto

stormlash Points 827

Il est possible d'identifier manuellement un fichier situé à l'intérieur d'un référentiel sous forme binaire en utilisant:

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

Ce n'est généralement pas nécessaire, comme de la Subversion va tenter de déterminer si un fichier est binaire lorsque le fichier est d'abord ajouté. Si la Subversion est mal balisage d'un certain type "texte" alors qu'il devrait être traité comme binaire, il est possible de configurer Subversion de la fonctionnalité auto-props pour associer automatiquement ce fichier avec un non-texte de type MIME. Quel que soit les propriétés configurées sur le fichier, la Subversion encore stocke le fichier dans un format binaire dans le référentiel.

Si la Subversion identifie le type MIME comme un "texte" type, il permet à certaines fonctionnalités qui ne sont pas disponibles sur des fichiers binaires, tels que svn diff et svn blâmer. Il permet aussi une ligne automatique de fin de conversion, qui est configurable sur une, client par client.

Pour plus d'informations, voir Comment Subversion manipuler des fichiers binaires?

21voto

Evil Andy Points 1220

À partir de la page 367 de la Subversion livre

Dans le sens le plus général, la Subversion des poignées de fichiers binaires avec plus de grâce que les CV ne. Parce que CVS utilise RCS, il ne peut stocker successives des copies intégrales de l'évolution de fichier binaire. Subversion, cependant, exprime des différences entre les fichiers à l'aide d'un algorithme de différenciation binaire, indépendamment du fait qu'ils contiennent du texte ou des données binaires. Cela signifie que tous les fichiers sont stockés de façon différentielle (compressé) dans le référentiel.

CVS, les utilisateurs de la marque de fichiers binaires -ko drapeaux pour éviter que des données soient déformées (en raison mots clés d'expansion et de la ligne de fin de traductions). Ils oublient parfois de le faire.

Subversion prend le plus paranoïaque de la route. Tout d'abord, il n'a jamais effectue tout type de mot-clé ou ligne-mettre fin à la traduction, sauf si vous demandez explicitement de le faire (voir la section intitulée "mot-Clé La Substitution" et la section intitulée "Fin-de-Ligne des Séquences de Caractères" pour plus de détails). Par défaut, la Subversion traite toutes les données du fichier littérale chaînes d'octets, et les fichiers sont toujours stockés dans le référentiel, dans un non traduite de l'état.

Deuxièmement, la Subversion maintient un interne de la notion de savoir si un fichier est "texte" ou "binaire" des données, mais cette notion n'est présent dans la copie de travail. Lors d'un svn update, Subversion va effectuer contextuelle fusionne sur modifiés localement les fichiers de texte, mais ne tentera pas de le faire pour les fichiers binaires.

Pour déterminer si contextuel de la fusion est possible, la Subversion examine l' svn:mime-type de la propriété. Si le fichier n'a pas de svn:mime-type de la propriété, ou d'un MIME type textuel (par exemple,/*), la Subversion suppose que c'est le texte. Sinon, Subversion suppose que le fichier est binaire. Subversion permet également aux utilisateurs par l'exécution d'un binaire algorithme de détection dans le svn import et svn ajouter des commandes. Ces commandes vont faire un bon deviner et puis (éventuellement) de fixer un binaire svn:mime-type de la propriété sur le fichier en cours d'ajout. (Si la Subversion se trompe, l'utilisateur peut toujours supprimer ou modifier la propriété.)

La main de l'édition serait fait par

svn propset svn:mime-type some/type filename.extension

15voto

KTamas Points 291

Fondamentalement, vous devez définir le type mime sur octet-stream:

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

13voto

user1454388 Points 81

Si 'svn add' devine le type incorrect et vous donne une erreur comme celle-ci:

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

Ensuite, la solution consiste à ajouter le fichier sans propriétés, puis à définir les propriétés dans une seconde étape:

 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
 

8voto

Jan Krüger Points 5475

Par exemple:

 svn propset svn:mime-type image/png foo.png
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X