В самом общем смысле Subversion обрабатывает двоичные файлы более изящно, чем CVS.
Поскольку CVS использует RCS, он может хранить только последовательные полные копии изменяющегося двоичного файла.
Subversion, однако, выражает различия между файлами, используя двоичный алгоритм различий,
независимо от того, содержат ли они текстовые или двоичные данные. Это означает, что все файлы
хранится дифференциально (сжато) в хранилище.
Пользователи CVS должны пометить двоичные файлы флагами -kb, чтобы предотвратить искажение данных (из-за
к расширению ключевых слов и переводам с конца строки). Иногда они забывают это сделать.
Subversion выбирает более параноидальный маршрут. Во-первых, он никогда не выполняет никаких ключевых слов или
перевод с конца строки, если вы явно не попросите об этом (см. раздел «Ключевое слово»
Подстановка »и раздел« Последовательности символов конца строки »для получения более подробной информации).
По умолчанию Subversion обрабатывает все данные файла как буквенные байтовые строки, и файлы всегда хранятся
в хранилище в непереведенном состоянии.
Во-вторых, Subversion поддерживает внутреннее представление о том, является ли файл «текстовыми» или «двоичными» данными,
но это понятие сохранилось только в рабочей копии. Во время обновления SVN Subversion будет
выполнять контекстное слияние на локально измененных текстовых файлах, но не будет пытаться сделать это для
двоичные файлы.
Чтобы определить, возможно ли контекстное слияние, Subversion проверяет
SVN: свойство MIME-типа. Если файл не имеет свойства svn: mime-type или имеет MIME
текстовый тип (например, текст / *), Subversion предполагает, что это текст. В противном случае Subversion
Предполагается, что файл является двоичным. Subversion также помогает пользователям, выполняя алгоритм двоичного обнаружения
в командах svn import и svn add. Эти команды сделают хороший
угадать, а затем (возможно) установить двоичное свойство svn: mime-type для добавляемого файла.
(Если Subversion угадает неправильно, пользователь всегда может удалить или отредактировать свойство вручную.)