как мне преобразовать двоичный файл в ascii для управления версиями?

#version-control #file-conversion

#управление версиями #преобразование файлов

Вопрос:

Я слишком хорошо знаю, что ответ здесь, в общем случае, «вы этого не делаете». Причина, по которой я спрашиваю, заключается в том, что PM в SAP спрашивает меня, почему текстовый вывод Crystal Report не соответствует моим потребностям. В прошлом я видел конвертеры для двоичных файлов (в частности,.doc, iirc), которые бесперебойно работали с Subversion (или, возможно, TortoiseSVN) для преобразования файлов в ASCII и обратно, так что слияние / ветвление / согласование действительно работало. Я хотел бы иметь возможность указать на них и сказать «Это то, что мне нужно», но будь я проклят, если могу вспомнить поиск Google, который выдал их в прошлый раз. Кто-нибудь может избавить меня от лишних хлопот и указать правильное направление? Спасибо.

Ответ №1:

При использовании SVN вы могли бы использовать свойства, чтобы сообщить ему, что это двоичный файл. На случай, если вы действительно хотите, первое решение, которое пришло мне в голову (но не очень эффективное), — это использовать uuencode / uudecode.

Комментарии:

1. Я знаю, но как только я сообщаю SVN, что он двоичный, я больше не могу улаживать конфликты — все или ничего. у uuencode почти такая же проблема — если я попытаюсь объединить изменения, то, скорее всего, получу что-то совершенно непригодное для использования.

2. тогда вам нужен специальный конвертер для вашего конкретного двоичного типа, например pdf2text (где многие форматирования теряются). Но поскольку двоичным файлом может быть что угодно (представьте себе исполняемые файлы), не существует общей процедуры, которая обладала бы знаниями о преобразовании, за исключением таких вещей, как uuencode или hexdump / od.

3. / специфический конвертер / Да, это, по сути, то, о чем я просил выше.

Ответ №2:

Ну, разница не столько между двоичным файлом и ASCII, сколько в том, что вам нужно разрешение различий / конфликтов, ориентированное на строку. Даже решение, отличное от ASCII, такое как UTF-8 XML, может помочь (и создает «интересные» проблемы с упорядочением элементов на одном уровне).

Вероятно, наиболее стандартным способом кодирования двоичных файлов является кодировка base64. Реализации легко доступны во всех формах и вариантах. Конечно, это увеличит размер файла, и я готов поспорить, что SVN сможет сохранить префикс файла только в том случае, если произойдет изменение, поскольку последующие закодированные данные после точки изменения будут полностью другими.