Действительно ли нужно использовать Git LFS?

Каковы конкретные преимущества использования Git LFS, особенно для репозиториев, содержащих разнообразные типы бинарных файлов, такие как изображения, видео и аудио? Хотелось бы понять, действительно ли Git LFS обеспечивает более компактное хранение файлов и повышенную производительность при работе с репозиториями, содержащими большое количество бинарных данных.
  • 25 декабря 2023 г. 15:07
Ответы на вопрос 2
Git LFS (Git Large File Storage) предоставляет возможность эффективно хранить и управлять большими бинарными файлами в репозитории Git. 

Основные преимущества использования Git LFS для репозиториев с разнообразными типами бинарных файлов, такими как изображения, видео и аудио, включают:

1. Экономия места: Git LFS сохраняет только указатели на большие бинарные файлы, вместо непосредственно хранения их в истории коммитов Git. Это позволяет значительно снизить объем репозитория, особенно при наличии большого количества бинарных данных.

2. Улучшенная производительность: При использовании Git LFS, бинарные файлы не загружаются полностью при каждом клонировании или обновлении репозитория. Вместо этого, вместо указателей загружаются только необходимые версии файлов. Это уменьшает время работы с репозиторием и ускоряет операции клонирования и обновления.

3. Возможность работы с большими файлами: Git LFS позволяет работать с файлами размером до многих гигабайт, которые ограничены размером файлов системы контроля версий Git. Это особенно полезно для проектов, требующих обработки или хранения больших файлов, таких как 3D-модели или видеофайлы.

4. Удобство использования: Git LFS обеспечивает прозрачное использование для разработчиков. Они могут обращаться к бинарным файлам как к обычным файлам, не заботясь о механизмах хранения и управления большими файлами.

Однако, следует отметить, что требование использования Git LFS зависит от конкретных потребностей и размера бинарных файлов в проекте. Для проектов с небольшими бинарными файлами или отсутствием необходимости в контроле версий для этих файлов, Git LFS может быть необязательным. В таких случаях использование обычного Git может быть достаточным.
Мое мнение - абсолютно бесполезен (из-за особенностей реализации и избытка функционала). 

Главная фича git и других систем контроля изменений - это контроль за изменениями, возможность быстро откатиться к нужной версии, мержить версии, переносить изменения из одной ветки в другую и т.п. и все заточено на работу с текстом . большие файлы - это про бинарные или не редактируемые данные. Даже sql дампы таким образом адекватно не будут обработаны (пример - добавлена колонка)

Ни один адекватный юзкейс не подразумевает все это при использовании именно больших файлов, за исключением может быть только автоматического приведения контента к нужной версии (и это достигается гораздо более легковестными инструментами, например тот же rsync умеет собирать бакап с использованием симлинков от предыдущего бакапа, т.е. в любой момент тебе доступна любая сохраненная версия, с оговорками на чтение, но тут вступают снапшоты файловой системы и все становится очень просто)

git-lfs работает очень не эффективно, банальный git clone репозитарием из 20-гигабайтовых файлов требует сравнимый объем оперативной памяти, потому что там на любой файл идет diff/patch, что бессмысленно для бинарных файлов в подавляющем большинстве случаев.
Похожие вопросы