Чем отличаются Git LFS и git-приложение?

git-annex существует уже довольно давно, но так и не набрал обороты.
Git LFS довольно молод и уже поддерживается GitHub, Bitbucket и GitLab.

Оба инструмента обрабатывают двоичные файлы в репозиториях git. С другой стороны, GitLab, похоже, заменил git-приложение с Git LFS в течение одного года.

  • Каковы технические различия?
  • Они решают одну и ту же проблему?

person Stefanus    schedule 05.09.2016    source источник
comment
LFS = Поддержка больших файлов   -  person Roland Puntaier    schedule 14.03.2021
comment
Существует также git-portal.   -  person Roland Puntaier    schedule 14.03.2021


Ответы (2)


Они действительно решают одну и ту же проблему.

Позвольте мне начать с плюсов и минусов, затем я перейду к техническим различиям.

git-приложение

Плюсы:

  • Поддерживает несколько пультов, на которых можно хранить двоичные файлы.
  • Можно использовать без поддержки хостинг-провайдера (подробнее см. здесь).

Минусы:

  • Поддержка Windows в бета-версии, и была в течение длительного времени
  • Пользователям необходимо выучить отдельные команды для повседневной работы.
  • не поддерживается github и bitbucket

git-lfs

Плюсы:

  • Поддерживается github, bitbucket и gitlab.
  • Наиболее поддерживается на всех ОС
  • Легко использовать.
  • автоматизировано на основе фильтров

Минусы:

  • Для работы требуется специальная реализация сервера. Простого пульта ssh недостаточно. Эталонный сервер находится в разработке https://github.com/git-lfs/lfs-test-server.

Технические

git-приложение

git-annex работает, создавая символическую ссылку в вашем репо, которая фиксируется. Фактические данные сохраняются в отдельном бэкэнде (S3, rsync и МНОГИЕ другие). Он написан на хаскеле. Поскольку он использует символические ссылки, пользователи Windows вынуждены использовать приложение совершенно по-другому, что увеличивает кривую обучения.

git-lfs

Файлы указателей записываются. API git-lfs используется для записи больших двоичных объектов в lfs. В связи с этим требуется специальный сервер LFS. Git lfs использует фильтры, поэтому вам нужно настроить lfs только один раз и снова, когда вы хотите указать, какие типы файлов вы хотите отправить в lfs.

person grepsedawk    schedule 05.09.2016
comment
Отличное резюме! У меня есть еще два вопроса. Пользователи Windows git-annex теряют некоторые функции git-annex? Может ли быть несколько серверов LFS (сопоставимо с несколькими бэкэндами в git-приложении)? - person Stefanus; 06.09.2016
comment
Возможно, LFS работает НАМНОГО так же, как работают настоящие серверы git. Вы бы просто добавили еще один пульт и передали ветку на оба пульта. - person grepsedawk; 07.09.2016
comment
«автоматизировано на основе фильтров» Похоже, приложение git тоже может делать то же самое: git-annex.branchable .com/tips/largefiles - person Rufflewind; 20.01.2017
comment
Я приветствую любые изменения в этом списке, если кто-то хочет добавить плюсы и минусы. - person grepsedawk; 21.10.2017
comment
Все было настроено на использование git-lfs (поскольку в настоящее время я использую github для размещения своих репозиториев), а затем обнаружил, что структура ценообразования для этих провайдеров отличается для репозиториев LFS. Вероятно, вам придется платить не менее 5-10 долларов в месяц за репозиторий с любым файлом, который вы сочтете большим (хотя, возможно, вы сможете что-то сделать с бесплатными 10 ГБ GitLab). Не является препятствием для отраслевых пользователей, но, как правило, не подходит для исследовательского программного обеспечения, которое предназначено для публикации на неопределенный срок. - person Tom Close; 23.09.2019
comment
@TomClose: если это исследовательское программное обеспечение, вам лучше получить свою библиотеку, которая поможет вам в долгосрочном хранении. Никакое другое учреждение не может дать вам необходимую 10-летнюю гарантию. Zenodo — еще один вариант, если ваша библиотека мало что может. - person Julien Colomb; 23.01.2020
comment
@JulienColomb Да, либо экземпляр Gitlab, управляемый университетом, вероятно, является лучшим вариантом. Тем не менее, я не хотел отказываться от GitHub, и, поскольку большие файлы нужны только для запуска тестов, я в конечном итоге использовал git-annex со специальным удаленным доступом к инфраструктуре моего университета. - person Tom Close; 28.01.2020
comment
@TomClose звучит великолепно, вы все еще можете использовать интеграцию github-zenodo, хотя я не знаю, как это будет работать с git-приложением. хотелось бы посмотреть, у вас есть ссылка на репо? - person Julien Colomb; 29.01.2020
comment
@JulienColomb Репозиторий — github.com/MonashBI/banana, интеграция git-приложения по-прежнему находится в стадии разработки. хотя. План состоит в том, чтобы подключить его к CircleCI и получить там контейнер, который можно будет извлечь из моего специального пульта (на данном этапе это только мой uni GDrive, но как только я заработаю, я планирую переместить его в выделенную исследовательскую инфраструктуру) перед запуском тестов. - person Tom Close; 30.01.2020

Основным преимуществом приложения git является то, что вы можете выбрать, какой файл вы хотите загрузить.

Вы все еще знаете, какие файлы доступны благодаря символическим ссылкам.

Например, предположим, что у вас есть каталог, полный файлов ISO. Вы можете перечислить файлы, а затем решить, какой из них вы хотите загрузить, набрав: git annex get my_file.

Еще одним преимуществом является то, что файлы не дублируются в вашей кассе. В LFS файлы lfs присутствуют как объекты git как в .git/lfs/objects, так и в вашем рабочем репозитории. Итак, если у вас есть 20 ГБ файлов LFS, вам нужно 40 ГБ на диске. В то время как с приложением git файлы связаны символическими ссылками, поэтому в этом случае требуется только 20 ГБ.

person Karl Forner    schedule 07.04.2017
comment
Спасибо за этот ответ! Я все еще пытаюсь что-то понять, но не буду использовать GVFS (github.com/Microsoft/gvfs ) в сочетании с git/git-lfs решает проблему загрузки отдельных файлов. Из их readme... GVFS виртуализирует файловую систему под вашим репозиторием git, так что git и все инструменты видят то, что кажется обычным репо, но GVFS загружает объекты только по мере необходимости. - person Vivek Gani; 11.06.2017
comment
GVFS кажется окнами только на данный момент. - person Karl Forner; 12.06.2017
comment
Спасибо за упоминание дублирования данных LFS, я не видел, чтобы это упоминалось где-либо еще. Я бы предпочел не дублировать использование диска в медиа-каталоге без уважительной причины. - person Ragnar; 29.07.2017
comment
Я нашел эту статью (writequit.org/articles/getting-started-with -git-annex.html) от Lee Hinman полезен для понимания ответа Карла Форнера, поскольку он четко разделяет два рабочих процесса, которые вы можете использовать с git-annex: 1) отслеживание файла metadata без перемещения больших файлы и 2) перемещение и копирование больших файлов. - person John; 06.12.2020