2008-09-16 10 views

Répondre

74

Il est possible d'identifier manuellement un fichier situé dans un répertoire que binaire en utilisant:

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

Ceci est généralement pas nécessaire, comme Subversion tentera de déterminer si un fichier est binaire lorsque le fichier est d'abord ajouté. Si Subversion étiquette incorrectement un certain type en tant que "texte" alors qu'il devrait être traité comme binaire, il est possible de configurer le auto-props feature de Subversion pour marquer automatiquement ce fichier avec un type MIME non textuel. Indépendamment des propriétés configurées sur le fichier, Subversion stocke toujours le fichier dans un format binaire dans le référentiel.

Si Subversion identifie le type MIME comme un type « texte », permettant à certaines fonctionnalités qui ne sont pas disponibles sur les fichiers binaires, tels que svn diff et svn blâmer. Il permet également la conversion automatique de fin de ligne, qui peut être configurée client par client.

Pour plus d'informations, consultez How does Subversion handle binary files?

+6

J'avais besoin de l'opposé; en utilisant 'text/plain' travaillé! – Hashbrown

8

Par exemple:

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

Comme par le Subversion FAQ, vous pouvez utiliser svn propset pour changer le svn: mime type propriété à application/octet-stream

14

Fondamentalement, vous devez définir le type mime à flux l'octet:

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

Il fait généralement par défaut pour vous, mais si ce ne vous besoin de regarder dans les propriétés du fichier et propset.

19

De la page 367 du Subversion book

Dans le sens le plus général, gère les fichiers binaires Subversion avec plus de grâce que CVS ne. Comme CVS utilise RCS, il ne peut stocker que des copies complètes successives d'un fichier binaire changeant. Subversion, cependant, exprime des différences entre les fichiers en utilisant un algorithme de différenciation binaire, , qu'ils contiennent des données textuelles ou binaires. Cela signifie que tous les fichiers sont stockés différemment (compressés) dans le référentiel.

Les utilisateurs CVS doivent marquer les fichiers binaires avec -kb flags pour éviter que les données ne soient brouillées (en raison de pour les extensions de mots-clés et les traductions de fin de ligne). Ils oublient parfois de faire cela.

Subversion prend la voie la plus paranoïaque. D'abord, il n'effectue aucune traduction de ligne ou de fin de ligne sauf si vous lui demandez explicitement de le faire (voir la section intitulée «Mot-clé Substitution» et la section intitulée «Séquences de caractères de fin de ligne» pour plus de détails) . Par défaut, Subversion traite toutes les données de fichier comme des chaînes d'octets littérales et les fichiers sont toujours stockés dans le référentiel dans un état non traduit. Deuxièmement, Subversion maintient une notion interne selon laquelle un fichier est un fichier "texte" ou "binaire", mais cette notion n'existe que dans la copie de travail. Lors d'une mise à jour svn, Subversion effectue des fusions contextuelles sur des fichiers texte modifiés localement, mais ne tente pas de le faire pour les fichiers binaires .

Pour déterminer si une fusion contextuelle est possible, Subversion examine la propriété svn: mime-type . Si le fichier n'a pas de propriété svn: mime-type ou si le type MIME est textuel (par exemple, text/*), Subversion considère qu'il s'agit d'un texte. Sinon, Subversion suppose que le fichier est binaire. Subversion aide également les utilisateurs en exécutant un algorithme de détection binaire dans les commandes svn import et svn add. Ces commandes feront un bon deviner puis (éventuellement) définir une propriété binaire svn: mime-type sur le fichier ajouté. (Si Subversion est erronée, l'utilisateur peut toujours supprimer ou modifier manuellement la propriété.)

édition des mains serait fait par

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

Comment procédez-vous lors de l'importation? C'est-à-dire, avant qu'il ne pénètre dans le dépôt? Le cas d'utilisation que j'ai est un fichier que svn n'importera pas parce qu'il pense que c'est un texte mal formé (fin de ligne incohérente). Mais c'est ** des données de test **, donc le fichier est ** destiné ** à avoir des fins de ligne incohérentes .... –

3

Si vous utilisez tortoisesvn dans Windows, faites un clic droit sur le fichier et accédez aux propriétés. Cliquez sur new et ajoutez une nouvelle propriété de type svn: mime-type. Pour la valeur put: application/octet-stream

4

Bien que Subversion essaie de automatically detect si un fichier est binaire ou non, vous pouvez remplacer le type mime en utilisant svn propset. Par exemple, svn propset svn:mime-type application/octet-stream example.txt. Cela fera de votre fichier une collection d'octets plutôt qu'un fichier texte. Voir aussi le manuel svn au File Portability.

+0

Juste pour mettre à jour votre lien pour l'algorithme de détection automatique: http://subversion.apache.org /faq.html#binary-files – oldNoakes

12

Si « svn add » devine le type incorrect et vous donne une erreur comme ce qui suit:

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

alors la solution consiste à ajouter le fichier sans propriétés et puis définissez les propriétés dans une deuxième é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 
Questions connexes