Ficheros binarios y traducción

En el sentido más general, Subversion maneja ficheros binarios más elegantemente que CVS. Porque CVS usa RCS, solo puede almacenar copias completas sucesivas de un fichero binario que cambia. Pero internamente, Subversion expresa diferencias entre ficheros usando un algoritmo de diferenciación de binarios, sin importar si contienen datos o datos binarios. Esto significa que todos los ficheros son almacenados diferenciados (comprimidos) en el repositorio, y las pequeñas diferencias son siempre enviadas a través de la red.

Los usuarios de CVS tienen que marcar los ficheros binarios con los parámetros -kb, para evitar que los datos sean mutilados (debido a la traducción de la expansión de la palabra clave y del final de linea. A veces se olvidan de hacerlo.

Subversion toma la ruta más paranoica: primero, nunca realiza ningún tipo de traducción de la palabra clave o del fin de linea a menos que usted le diga explícitamente que lo haga (vea svn:keywords y svn:eol-style para más detalles). Por defecto, Subversion trata todos los datos del ficheros como una cadena literal de bytes, y los ficheros son siempre guardados en el repositorio en un estado sin traducir.

Segundo, Subversion mantiene una noción interna de si un fichero es texto o datos binarios, pero esta noción es solamente existente en la copia de trabajo. Durante un svn update, Subversion realizará fusiones contextuales en ficheros de texto modificados localmente, pero no intentará hacer eso para los ficheros binarios.

Para determinar si es posible una fusión de contexto, Subversion examina la propiedad svn:mime-type. Si el fichero no tiene la propiedad svn:mime-type, o tiene un tipo MIME que es textual (por ejemplo text/*), Subversion asume que es texto. Si no, Subversion asume que el fichero es binario. Subversion también ayuda a los usuarios ejecutando un algoritmo de detección de binarios en los comandos svn import y svn add. Estos comandos harán una buena conjetura y después (posiblemente) fije una propiedad svn:mime-type binaria en el fichero que es agregado. (Si Subversion supone mal, el usuario siempre puede borrar o editar a mano la propiedad.)