Сравнение PDF между коммитами

Если нужно посмотреть визуальную разницу между двумя версиями диплома, используйте задачу:
task diff -- <commit_1> <commit_2>
uvx diff-pdf-commits --build "<команда сборки>" --pdf "<PDF из TARGET>" --view <commit_1> <commit_2>
Пакет diff-pdf-commits принимает два хэша коммита, собирает PDF в отдельных worktree через Docker, складывает две версии во временную папку и открывает diff-pdf.1
flowchart TD
CLEAN{"Рабочее дерево<br/>чистое?"}
CLEAN -->|"нет"| STOP["остановить запуск"]
CLEAN -->|"да"| A["checkout commit_1"]
A --> BUILD_A["собрать PDF через Docker<br/>в worktree"]
BUILD_A --> SAVE_A["сохранить первую версию"]
SAVE_A --> B["checkout commit_2"]
B --> BUILD_B["собрать PDF через Docker<br/>в worktree"]
BUILD_B --> SAVE_B["сохранить вторую версию"]
SAVE_B --> DIFF["diff-pdf"]
DIFF --> CLEANUP["удалить временные worktree"]
По умолчанию задача открывает diff. Результат можно также сохранить в PDF:
task diff -- <commit_1> <commit_2> --view
task diff -- <commit_1> <commit_2> --diff-output path/to/diff.pdf
task diff -- <commit_1> <commit_2> --diff-output path/to/diff.pdf --no-view
uvx diff-pdf-commits --build "<команда сборки>" --pdf "<PDF из TARGET>" --view <commit_1> <commit_2>
uvx diff-pdf-commits --build "<команда сборки>" --pdf "<PDF из TARGET>" --diff-output path/to/diff.pdf <commit_1> <commit_2>
Скачать diff-pdf можно в репозитории: https://github.com/vslavik/diff-pdf/
Сборка
flowchart LR
MERMAID["mermaid"] --> PYTHON["python"]
PYTHON --> LATEX["latex"]
LATEX --> RESULT["PDF для сравнения"]
Задача task diff передает в uvx diff-pdf-commits готовую команду сборки: сначала Mermaid-диаграммы, затем Python-диаграммы, затем LaTeX. Имя PDF берется из TARGET в .env заменой расширения .tex на .pdf. Если нужно изменить последовательность, правьте переменную DIFF_PDF_BUILD_CMD в tasks/tools.yml.
Рабочее дерево Git
Перед запуском рабочее дерево Git должно быть чистым. Файлы, которые нужны для сборки, но могут отсутствовать в старых коммитах, задача передает через --copy: .env, титульные PDF и вспомогательные build-скрипты.
-
diff-pdfсравнивает визуальное представление страниц, а не исходный.tex. Это удобно для проверки итогового документа: переносы, рисунки, таблицы и титульные страницы видны как изменения в PDF. ↩