Можно ли использовать Mercurial контроль версии для отслеживания файлов Word или PDF? Есть ли какие-либо ограничения или проблемы?
Документы Mercurial и Word или PDF
Ответ 1
Да, но, конечно, вы не сможете различить какой-либо значимый способ. Поэтому файлы будут считаться двоичными во время слияний.
Mercurial отлично способен отслеживать двоичные файлы:
Mercurial обычно не делает предположения о содержимом файла. Таким образом, большинство вещей в Mercurial отлично работают с любым типом файла.
Mercurial хранит двоичный diff независимо от типа файла. Проблема с файлами PDF/Word заключается в том, что небольшое изменение для них обычно вызывает огромную разницу в их двоичном представлении на диске. .docx
Документы хранятся в виде zipped xml, из-за застегивания одного перевернутого бита внутри архива может привести к тому, что zip-архив будет выглядеть совершенно иначе.
Если вы не слишком сильно увеличиваете свой репозиторий, вы, вероятно, не столкнетесь с проблемами, связанными с Mercurial.
Ответ 2
Да.
Вы будете иметь возможность делать значимые различия для документов MS Word.
-
Если у вас установлен TortoiseHg и вы создали репозиторий, щелкните правой кнопкой мыши файл, для которого вы хотите проверить различия.
-
В контекстном меню выберите TortoiseHg > Visual Diffs.
-
В диалоговом окне "Визуальные различия" выберите docdiff, а не kdiff3.
-
Дважды щелкните файл в Visual Диалог Diffs.
MS Word откроет документ Compare Result Word, в котором будут показаны различия между текущей версией документа и предыдущей версией как отслеживаемые изменения.
Ответ 3
Остерегайтесь предлагаемого
cmd.pdfdiff = [\path\to\diffpdf.exe]
opts.pdfdiff= -a $local $other
$local и $other не имеют смысла в контексте extdiff. Буквенные строки "$ local" и "$ other", а не имена файлов, будут переданы в "diffpdf.exe". Я нашел это трудным способом.
cmd.pdfdiff = [\path\to\diffpdf.exe]
opts.pdfdiff= -a
будет работать, и два файла будут переданы как параметры, следующие за "-a". c.f. https://www.mercurial-scm.org/wiki/ExtdiffExtension, где указано:
Каждая пользовательская команда diff может иметь две части: "cmd" и "opts". Параметр cmd.xxx определяет имя исполняемой программы, которая будет запущена, а opts.xxx определяет набор параметров командной строки, которые будут вставлены в команду между именем программы и файлами/каталогами для diff
Ответ 4
Для файлов Pdf мне удалось получить лицензионный DiffPDF GPL, чтобы делать сравнения между версиями pdf файлов.
В файл mercurial.ini
я добавил следующее:
[extdiff]
cmd.pdfdiff = [\path\to\diffpdf.exe]
opts.pdfdiff= -a $local $other
[diff-patterns]
**.pdf=pdfdiff
Теперь, когда я нажимаю на файл pdf в tortoisehg (или использую hg pdfdiff
в строке cmd), он открывает два файла для сравнения. Так как мои pdf файлы содержат изображения, я использую компаратор внешнего вида (-a
в opts
). Если у вас в основном текст, вы можете использовать -w
.
По умолчанию используется подсветка для отображения различий. Я предпочитаю параметр Src Xor Dest для отображения различий, но я не думаю, что для этого есть опция линии cmd.