it-swarm-ru.tech

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

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

62
Nick

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

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

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

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

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

81
stormlash

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

В самом общем смысле Subversion обрабатывает двоичные файлы более изящно, чем CVS. Поскольку CVS использует RCS, он может хранить только последовательные полные копии изменяющегося двоичного файла. Subversion, тем не менее, выражает различия между файлами с использованием алгоритма двоичного различия, независимо от того, содержат ли они текстовые или двоичные данные. Это означает, что все файлы хранятся по-разному (сжато) в хранилище.

Пользователи CVS должны помечать двоичные файлы флагами -kb, чтобы предотвратить искажение данных (из-за расширения ключевых слов и перевода строк). Они иногда забывают сделать это.

Subversion выбирает более параноидальный маршрут. Во-первых, он никогда не выполняет какой-либо перевод ключевого слова или перевода строки, если вы явно не попросите его сделать это (см. Раздел "Замена ключевых слов" и раздел "Последовательности символов конца строки" для получения более подробной информации). По умолчанию Subversion обрабатывает все данные файла как буквенные байтовые строки, а файлы всегда хранятся в хранилище в непереведенном состоянии.

Во-вторых, Subversion поддерживает внутреннее представление о том, является ли файл "текстовыми" или "двоичными" данными, но это понятие существует только в рабочей копии. Во время обновления svn Subversion будет выполнять контекстное слияние локально измененных текстовых файлов, но не будет пытаться сделать это для двоичных файлов.

Чтобы определить, возможно ли контекстное слияние, Subversion проверяет свойство svn: mime-type. Если файл не имеет свойства svn: mime-type или имеет текстовый тип MIME (например, text/*), Subversion предполагает, что это текст. В противном случае Subversion предполагает, что файл является двоичным. Subversion также помогает пользователям, выполняя алгоритм двоичного обнаружения в командах svn import и svn add. Эти команды сделают правильное предположение, а затем (возможно) установят двоичное свойство svn: mime-type для добавляемого файла. (Если Subversion угадает неправильно, пользователь всегда может удалить или отредактировать свойство вручную.)

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

svn propset svn:mime-type some/type filename.extension
20
Evil Andy

По сути, вы должны установить тип MIME для октет-потока:

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

Если '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
13
user1454388

Например:

svn propset svn:mime-type image/png foo.png
8
Jan Krüger

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

4
grammar31

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

3
Brian R. Bondy

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

2
Adrian Petrescu

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

2
Paul Dixon

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

0
Frank Wiles