Что произойдет, если у меня нет блокировки git lfs - PullRequest
2 голосов
/ 25 марта 2020

При использовании git push я получаю ряд следующих выводов консоли:

Locking support detected on remote "origin". Consider enabling it with:
  $ git config lfs.https://127.0.0.1/foo/bar.git/info/lfs.locksverify true

Я вроде понимаю, что должны делать блокировки LFS, но я не совсем уверен, что произойдет, если я надену не включить их. Они включены на сервере? Или на клиенте? Может кто-нибудь пролить некоторый свет на это? Должен ли я всегда включать его, если это возможно? Спасибо!

1 Ответ

2 голосов
/ 27 марта 2020

Я считаю, что блокировка реализована на git серверах, но разные git хосты могут реализовать ее по-разному или пока не поддерживать ее. Локально, вы можете настроить свой репозиторий для проверки удаленной блокировки перед нажатием. Я предполагаю, что, если это не настроено локально, ваши git команды все равно будут передавать большие файлы на git pu sh, даже если они заблокированы на сервере, что может просто потратить ваше время и сеть, если ваш удаленный хост-сервер не реализует раннюю проверку.

Я думаю, что этот параметр - всего лишь обходной путь для несоответствий в том, как различные провайдеры (GitHub, bitbucket, gitlab, azure) реализуют блокировку.

It кажется, что значение по умолчанию для этого является нулевым, и если ноль, git lfs будет автоматически установлен в true или false на основе ответа сервера.

From https://manpages.debian.org/testing/git-lfs/git-lfs-config.5.en.html

lfs.<url>.locksverify Определяет, проверяются ли блокировки перед нажатием Git. Это предотвращает внесение изменений в файлы, заблокированные другими пользователями. Хук Git LFS pre-pu sh меняет свое поведение в зависимости от значения этого ключа конфигурации.

  • null - При отсутствии значения Git LFS предпримет попытку вызова и предупредит, если вернет ошибку. Если ответ правильный, Git LFS установит значение true и остановит pu sh, если пользователь попытается обновить файл, заблокированный другим пользователем. Если сервер возвращает ответ 501 Не реализовано, Git LFS установит значение false.
  • true - Git LFS попытается проверить блокировки остановка Git pu sh в случае проблем с сервером или если пользователь пытается обновить файл, заблокированный другим пользователем.
  • false - Git LFS будет полностью пропустите проверку блокировки в крюке pre-pu sh. Вы должны установить это, если вы не используете блокировку файлов, или ваш сервер Git автоматически проверяет заблокированные файлы при нажатии.

С https://github.com/git-lfs/git-lfs/wiki/File-Locking:

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

$ git lfs push origin master --all

Remote "origin" does not support the LFS locking API. Consider disabling it with ...

...