Fr/FGAddon: Difference between revisions

Jump to navigation Jump to search
3,680 bytes added ,  18 October 2015
→‎Diffs binaires: Translated the section.
(→‎Diffs binaires: Translated the warning.)
(→‎Diffs binaires: Translated the section.)
Line 546: Line 546:


{{warning|Une mauvaise valeur ou l'absence de la propriété de mime-type sur un fichier binaire provoquera un diff binaire.}}
{{warning|Une mauvaise valeur ou l'absence de la propriété de mime-type sur un fichier binaire provoquera un diff binaire.}}
En regardant le résultat de <code>svn diff</code> (ou <code>git diff</code>, si vous utilisez git-svn) et en lisant les messages de la [[#Liste de diffusion FGAddon commitlogs|liste de diffusion FGAddon commitlogs]], parfois vous verrez un grand nombre de caractères non identifiables.  Ceci est un diff binaire, le résultat de montrer les différences entre les fichiers binaires comme si ils était des fichiers de texte.  Bien que ce ne soit pas un problème pour le fonctionnement du dépôt, la situation n'est pas idéal et fait que ce soit plus difficiles d'effectuer un examen des changements.
Pour résoudre le problème, d'abord les fichiers binaires avec la propriété de <code>svn:mime-type</code> problématique doivent être identifiés.  La commande Subversion suivante peut être utilisée:
<syntaxhighlight lang="bash">
svn propget svn:mime-type <nom_de_fichier>
</syntaxhighlight>
Parce que cette tâche de vérifier chaque fichier peut être fastidieux, le script Python suivant simplifie et automatise la procédure pour identifier tout fichiers binaires avec un problème de mime-type:
{{collapsible script
| type  = Script Python 2/3
| title  = Trouver tout fichiers binaires sans un propriété de <code>svn:mime-type</code>, ou avec une mauvaise valeur.
| intro  = Le script suivant est basé sur des listes noires de fichiers de texte.  Ainsi des faux positifs devraient être attendus, et les listes noires peuvent être élargies comme nécessaire.
| lang  = python
| script =
#! /usr/bin/env python
from os import getcwd, walk
from os.path import join, splitext
from re import search
from subprocess import PIPE, Popen
skip_txt_file_seg = [
    'authors',
    'copying',
    'licen',
    'readme'
]
skip_txt_ext = [
    'ac',
    'css',
    'dat',
    'eff',
    'frag',
    'html',
    'json',
    'log',
    'nas',
    'osgx',
    'svg',
    'tex',
    'txt',
    'vert',
    'xhtml',
    'xml',
    'xsl'
]
skip_bin_prop = [
    'application/octet-stream',
    'application/pdf',
    'application/postscript',
    'application/x-dosexec',
    'application/x-gzip',
    'application/zip',
    'audio/x-wav',
    'image/gif',
    'image/jpeg',
    'image/png',
    'image/vnd.adobe.photoshop',
    'image/tiff',
    'image/x-ms-bmp',
    'image/x-xcf',
]
# Walk through the directories.
for root, dirs, files in walk(getcwd()):
    # Loop over the files in the current directory.
    for file in files:
        # Skip known text files.
        skip = False
        for i in range(len(skip_txt_file_seg)):
            if search(skip_txt_file_seg[i], file.lower()):
                skip = True
        if skip:
            continue
        # The file extension.
        file_path, ext = splitext(file)
        ext = ext[1:].lower()
        # Skip known text file extensions.
        if ext in skip_txt_ext:
            continue
        # The full file path.
        path = join(root, file)
        # Query the file for svn:mime-type.
        cmd = 'svn propget svn:mime-type \"%s\"' % path
        pipe = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=False)
        props = []
        for line in pipe.stdout.readlines():
            props.append(line.strip())
        # Byte array conversion (Python3).
        for i in range(len(props)):
            if hasattr(props[i], 'decode'):
                props[i] = props[i].decode()
        # Skip binary svn:mime-type values.
        if len(props) and props[0] in skip_bin_prop:
            continue
        # Printout.
        if not len(props):
            print("%s" % path)
        else:
            print("%s    svn:mime-type=%s" % (path, props[0]))
}}


==== Régler le problème ====
==== Régler le problème ====

Navigation menu