Как мне сказать Subversion обрабатывать файл как двоичный файл? - PullRequest
62 голосов
/ 16 сентября 2008

Как мне сказать Subversion (svn) обрабатывать файл как двоичный файл?

Ответы [ 10 ]

81 голосов
/ 16 сентября 2008

Можно вручную идентифицировать файл, расположенный в репозитории, как двоичный , используя:

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

Как правило, в этом нет необходимости, поскольку Subversion будет пытаться определить, является ли файл двоичным при первом добавлении файла. Если Subversion неправильно помечает определенный тип как «текст», когда он должен рассматриваться как двоичный, можно настроить функцию автоматического пропуска Subversion *1007* для автоматической пометки этого файла нетекстовым MIME-типом. Независимо от свойств, настроенных для файла, Subversion по-прежнему сохраняет файл в двоичном формате в репозитории.

Если Subversion идентифицирует тип MIME как «текстовый» тип, он включает некоторые функции, которые недоступны в двоичных файлах, такие как svn diff и svn blame . Он также допускает автоматическое преобразование конца строки, которое настраивается для каждого клиента.

Для получения дополнительной информации см. Как Subversion обрабатывает двоичные файлы?

20 голосов
/ 16 сентября 2008

Со страницы 367 Subversion book

В самом общем смысле 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 угадает неправильно, пользователь всегда может удалить или отредактировать свойство вручную.)

Ручное редактирование будет выполнено

svn propset svn:mime-type some/type filename.extension
15 голосов
/ 16 сентября 2008

По сути, вы должны установить тип mime для octet-stream:

svn propset svn:mime-type application/octet-stream <filename>
13 голосов
/ 13 июня 2012

Если 'svn add' угадывает неправильный тип и выдает ошибку вроде следующего:

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

, затем обходной путь - добавить файл без свойств и затем установить свойства на втором шаге:

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
8 голосов
/ 16 сентября 2008

Например:

svn propset svn:mime-type image/png foo.png
4 голосов
/ 16 сентября 2008

Хотя Subversion пытается автоматически определить , является ли файл двоичным или нет, вы можете переопределить MIME-тип, используя svn propset . Например, svn propset svn:mime-type application/octet-stream example.txt. Это заставит ваш файл действовать как набор байтов, а не как текстовый файл. См. Также руководство svn по переносимости файлов .

3 голосов
/ 16 сентября 2008

Если вы используете Tortoise SVN в Windows, щелкните правой кнопкой мыши по файлу и перейдите в свойства. Нажмите на новый и добавьте новое свойство типа svn: mime-type. Для поставленного значения: application / octet-stream

2 голосов
/ 16 сентября 2008

svn ищет свойство типа mime, предполагая, что это текст, если он не существует. Вы можете установить это свойство подробно, см. http://svnbook.red -bean.com / ru / 1.5 / svn.forcvs.binary-and-trans.html

2 голосов
/ 16 сентября 2008

Согласно FAQ по Subversion , вы можете использовать svn propset для изменения свойства svn: mime-type на application / octet-stream

0 голосов
/ 16 сентября 2008

Обычно он делает это по умолчанию для вас, но если это не так, вам нужно изучить свойства файла и набор параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...