就在今天,我第一次遇到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(大文件存储),这是某种mutex locking吗?如果是这样,那么让git上的任何东西工作是绝对必要的吗? (最小的情况是,如何建立日志历史记录&#34;排序&#34;更糟糕的情况是,我不能通过同时写入来破坏二进制文件吗?)
我最近没有对此存储库执行任何不同的操作,与使用LFS建立的任何其他存储库相比,我也没有对此存储库执行任何不同的操作。
因此,我认为这是向全世界提供的新评论&#34;让我们知道新功能。然而,谷歌搜索和快速搜索他们的文档都没有引导我解释这一点。所以,我想知道:
答案 0 :(得分:19)
此处记录了锁定对Git LFS的支持https://github.com/git-lfs/git-lfs/wiki/File-Locking。
Git LFS v2.0.0包含File Locking的早期版本。文件锁定允许开发人员锁定他们正在更新的文件,以防止其他用户同时更新它们。 Git存储库中的并发编辑将导致合并冲突,这在大型二进制文件中很难解决。
一旦
.gitattributes
中的文件模式可锁定,Git LFS将自动在本地文件系统上使它们只读。这可以防止用户在不先锁定文件的情况下意外编辑文件。
Git LFS将在推送时验证您是否未修改其他用户锁定的文件。由于文件锁定是早期版本,并且很少有LFS服务器实现API,因此如果Git LFS无法验证锁定文件,则不会停止推送。你会看到这样的消息:
$ 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
“锁定”文件后,您可以对其进行编辑,然后存储库服务器会识别出您正在编辑它它主要用于帮助团队管理大型文件以防止合并冲突。