Подтвердить что ты не робот

Как я могу сказать TortoiseHg, чтобы отображать файл UTF-16 как не двоичный?

В проекте Microsoft Access 2007 объекты формы Access экспортируются в файлы с выделенным программным обеспечением, используя встроенную функцию "SaveAsText". Это необходимо, потому что Access не сохраняет ни одного из его модулей кода в отдельных файлах самостоятельно.

Файл начинается с байтов "FF FE" (это UTF-16 в соответствии с http://de.wikipedia.org/wiki/Byte_Order_Mark). Я предполагаю из-за многих символов NUL в этом файле, Hg рассматривает этот файл как двоичный файл. Следовательно, панель diff в верстаке TortoiseHG всегда сообщает

Файл или отличия не отображаются: файл двоичный.

что вполне понятно в этом предположении. Но, тем не менее, этот файл является обычным исходным кодом. Я могу просмотреть его, например, в блокноте Windows без каких-либо проблем.

Есть ли способ сказать Mercurial, что этот конкретный файл следует рассматривать как текст, а не двоичный?

Edit: В дополнение к отмеченному предпочтительному ответу ниже я решил не изменять поведение сохранения, а использовать команду "Visual Diff" (выберите файл, а затем нажмите Ctrl + d).

4b9b3361

Ответ 1

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

Единственный способ убедить Mercurial в том, что файл не является двоичным, - это избегать байтов NUL.

Возможно, вы захотите преобразовать файлы исходного кода в кодировку ASCII (или, возможно, ANSI), в качестве дополнительного шага в вашем экспорте, чтобы избежать NUL-байтов. Если файлы исходного кода содержат символы Юникода, вы можете попробовать UTF-8, так как это будет делать только многобайтовые символы, если это необходимо, и однобайтовые символы в противном случае, что позволит избежать повтора NUL-байтов. Я попробовал это ненадолго, и Mercurial обрабатывает UTF-8: он не показывает "Файл двоичный", но фактический diff. Я совершил на командной строке, но просмотрел diff в TortoiseHg. У меня есть ссылка на проблемы с кодировкой командной строки ниже.

разделы hgrc encode/decode могут быть особенно полезны для фильтрации файлов UTF-16 в чем-то, что работает лучше.

Несколько других страниц по Mercurial и кодировке:

TortoiseHg 2.1 + Mercurial 1.9

Ответ 2

От https://www.mercurial-scm.org/wiki/BinaryFiles:

Естественно возникает вопрос: что такое бинарный файл? Оказывается, на самом деле нет хорошего ответа на этот вопрос, поэтому Mercurial использует ту же эвристику, что и программы, подобные diff (1). Тест просто, если в файле есть NUL-байты.

Для diff, export и annotate это почти всегда будет работать, и он не будет пытаться обрабатывать файлы, которые, по его мнению, являются двоичными. При необходимости вы можете заставить эти команды обрабатывать файлы как текст с помощью -a.