VCS - не идеальное место для хранения любого элемента доставки (например, двоичных файлов), в основном потому, что:
- они не получат преимущества от функций VCS (ветвь, слияние, разность, ...)
- DVCS (распределенная VCS) будет видеть, что размер его репо значительно увеличивается при каждом выпуске, что затем делает любой клон указанного репо довольно громоздким.
Доставки лучше хранить в хранилище артефактов (например, Nexus ), где контрольная сумма ключей (SHA1, MD5) будет автоматически вычисляться и связываться с этими доставками, гарантируя, что вы может вернуть их для использования в производстве при проверке их целостности.
Так что это означает наличие отдельного хранилища (от VCS) для управления этими элементами.
Как упоминалось в Бесполезном * ответе , вы можете использовать git notes
, чтобы связать двоичный BLOB-объект с объектом git (включая тег)
В принципе, заметка - это обычный Git-блоб, и допускается любой (не) формат. Вы можете безопасно создавать двоичные заметки из произвольных файлов, используя git hash-object:
$ cc *.c
$ blob=$(git hash-object -w a.out)
$ git notes --ref=built add -C "$blob" HEAD
Единственная проблема - размер репо, который может выйти из-под контроля, если эти заметки регулярно не очищаются.
Другой подход заключается в использовании git-annex
, который позволяет связать git commit с внешним контентом (т. Е. Контентом, который может быть двоичный файл, настолько большой, насколько это необходимо).
git-annex
позволяет управлять файлами с помощью git, не проверяя содержимое файла в git.
Хотя это может показаться парадоксальным, но это полезно, когда вы имеете дело с файлами, размер которых больше не поддерживается в настоящее время git из-за ограничений памяти, времени или дискового пространства.