Git (LFS): что такое поддержка блокировки? И должен ли я включить его?

" Новый " Git Комментарий:

только сегодня я наткнулся на следующий комментарий от Git в первый раз (по крайней мере, в первый раз, когда я его увидел):

Mikes-Mac$ git push
Locking support detected on remote "origin". Consider enabling it with:
  $ git config 'lfs.https://github.com/<my_repo>.git/info/lfs.locksverify' true
Everything up-to-date
Mikes-Mac$ 

что это Locking support? Это что-то вроде мьютекс замок для LFS (большое хранилище файлов)? Если это так, разве не абсолютно важно, чтобы что-нибудь на git работало? (Как минимум, как еще можно установить "порядок" истории журналов? Хуже того, не мог ли я иметь двоичный файл, поврежденный одновременная запись?)

Мои Действия

в последнее время я ничего не делал по-другому с этим репозиторием, и я ничего не делал по-другому с этим репозиторием по сравнению с любыми другими, которые я установил с LFS.

поэтому я предполагаю, что это новый комментарий, предоставляемый "миру", чтобы сообщить нам о новых функциях.

Нет Очевидной Документации

однако, ни поиск Google, ни быстрая поиск через их документацию я пришел к чему угодно, чтобы объяснить это. Итак, мне остается гадать:

  • что это за замок?
    • это мьютекс? Если да, то как мое РЕПО может функционировать без него?
    • это ограничивается только LFS? Чем это отличается от обычной блокировки файлов git?
  • каковы плюсы и минусы добавления поддержки блокировки для LFS?

1 ответов


поддержка блокировки Git LFS документирована здесь https://github.com/git-lfs/git-lfs/wiki/File-Locking.

Git LFS v2.0.0 включает ранний выпуск блокировки файлов. Блокировка файлов позволяет разработчикам блокировать файлы, которые они обновляют, чтобы запретить другим пользователям обновлять их одновременно. Одновременные изменения в репозиториях Git приведут к слиянию конфликтов, которые очень трудно разрешить в больших двоичных файлах.

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

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

$ git lfs push origin master --all
Remote "origin" does not support the LFS locking API. Consider disabling it with:
  $ git config 'lfs.http://git-server.com/user/test.locksverify' false
Git LFS: (0 of 0 files, 7 skipped) 0 B / 0 B, 879.11 KB skipped
$ git lfs push origin master --all
Locking support detected on remote "origin". Consider enabling it with:
  $ git config 'lfs.http://git-server.com/user/repo.locksverify' true
Git LFS: (0 of 0 files, 7 skipped) 0 B / 0 B, 879.11 KB skipped

поэтому в некотором смысле вы можете считать его консультативным мьютексом, потому что:

  • если вы не "блокировка" файл, вы не можете редактировать
  • как только вы "заблокируете" файл с помощью git lfs lock, вы можете редактировать его, и сервер репозитория распознает, что вы его редактируете
  • сервер не будет принимать коммиты, изменяющие файлы, которые вы заблокировали другими людьми.

это в основном добавлены в help team управление большими файлами для предотвращения конфликтов слияния.