如果没有Git LFS锁会发生什么?

5

使用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锁的作用,但如果我不启用它们,我不太确定会发生什么。它们是在服务器上启用还是在客户端上启用?有人能否解释一下这个问题?如果可能的话,我应该总是启用它吗?谢谢!


相关链接:https://dev59.com/rFgQ5IYBdhLWcg3wi0g9,https://github.blog/2015-04-08-announcing-git-large-file-storage-lfs/,https://docs.gitlab.com/ee/administration/lfs/manage_large_binaries_with_git_lfs.html,https://www.atlassian.com/git/tutorials/git-lfs - tkruse
相关链接:https://dev59.com/TKrka4cB1Zd3GeqPdGYd,https://stackoverflow.com/questions/49033359/trying-to-git-push-three-large-text-files-to-github-using-git-lfs,https://github.com/git-lfs/git-lfs/wiki/File-Locking - tkruse
请问您使用的是哪个操作系统上的哪个git版本,并且您是如何设置origin的? - tkruse
你也可以将你 .gitconfig 文件中相关的部分添加到你的问题中。 - tkruse
1个回答

3
我相信git服务器上会实现锁定功能,但不同的git主机可能以不同的方式实现或尚未支持。在本地,您可以配置存储库以在推送之前检查远程锁定。我认为如果没有在本地配置此设置,则您的git命令仍将传输大文件到git push,即使它们在服务器上被锁定,如果您的远程主机服务器未实现早期验证,这可能只是浪费你的时间和网络。
我认为这个设置只是解决了不同提供商(GitHub、bitbucket、gitlab、azure)实现锁定的不一致性的问题。
似乎默认值为null,如果为null,则git lfs将根据服务器响应自动设置为true或false。
来自https://manpages.debian.org/testing/git-lfs/git-lfs-config.5.en.html
“lfs..locksverify” 确定Git推送之前是否检查锁定。这可以防止您将更改推送到其他用户已锁定的文件中。 Git LFS预推挂钩根据此配置键的值而变化其行为。
- null - 在没有值的情况下,Git LFS将尝试调用,并在返回错误时发出警告。 如果响应有效,则Git LFS将设置值为true,并在用户尝试更新另一个用户锁定的文件时停止推送。 如果服务器返回501未实现的响应,则Git LFS将将值设置为false。 - true - Git LFS将尝试验证锁定,如果存在任何服务器问题或用户尝试更新其他用户锁定的文件,则停止Git推送。 - false - Git LFS将在预推挂钩中完全跳过锁定检查。 如果您不使用文件锁定或您的Git服务器自动验证推送上的锁定文件,则应将其设置为此选项。
来自https://github.com/git-lfs/git-lfs/wiki/File-Locking
由于文件锁定是早期版本,很少有LFS服务器实现API,如果Git LFS无法验证已锁定的文件,则不会停止推送。 您将看到类似于以下消息的消息: $ git lfs push origin master --all 远程“origin”不支持LFS锁定API。 考虑使用...禁用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接