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.)