Документы Mercurial и Word или PDF


Можно ли использовать Mercurial контроль версий для отслеживания файлов Word или PDF? Есть ли какие-либо ограничения или проблемы?

4 30

4 ответа:

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

Mercurial прекрасно способен отслеживать двоичные файлы:

Mercurial обычно не делает предположения о содержании файла. Таким образом, большинство вещей в Mercurial работают нормально с любым типом файла.

Mercurial хранит двоичный diff независимо от типа файла. Проблема с файлами PDF / Word заключается в том, что немного изменение их обычно вызывает огромную разницу в их двоичном представлении на диске. .docx документы хранятся как сжатый xml, из-за того, что один перевернутый бит внутри архива может привести к тому, что zip-архив будет выглядеть совершенно по-другому.

Если вы не увеличите свой репозиторий слишком большим, вы, вероятно, не испытаете никаких проблем с использованием Mercurial.

Да.

Вы будете иметь возможность делать значимые различия для документов MS Word.

  • Если у вас установлена TortoiseHg и вы создали хранилище, щелкните правой кнопкой мыши файл, для которого вы хочу проверить диффы.

  • В контекстном меню выберите TortoiseHg > Visual Diffs.

  • В диалоговом окне визуальные различия выберите docdiff, вместо kdiff3.

  • Дважды щелкните файл в визуальном окне Разницы диалог.

MS Word откроет документ Compare Result Word, в котором будут показаны различия между текущей версией документа и предыдущей версией в виде отслеживаемых изменений.

Остерегайтесь предложенного

cmd.pdfdiff = [\path\to\diffpdf.exe]
opts.pdfdiff= -a $local $other

$local и $other не имеют значения в контексте extdiff. Литеральные строки " $local "и" $other", а не имена файлов, будут переданы в " diffpdf.исполняемый". Я нашел это трудным путем.

cmd.pdfdiff = [\path\to\diffpdf.exe]
opts.pdfdiff= -a

Будет работать, и два файла будут переданы в качестве параметров после "- a". c. f. https://www.mercurial-scm.org/wiki/ExtdiffExtension где указано:

Каждая пользовательская команда diff может состоять из двух частей: "cmd" и "opts". часть. УМК.опция xxx определяет имя исполняемой программы, которая будет запущена, и выбирает.xxx определяет набор параметров командной строки, которые будут вставлены в команду между именем программы и файлами / каталогами в diff

Для Pdf-файлов я смог получить лицензию GPL DiffPDF, подключенную для сравнения версий 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 line.