2017-03-04 1434 views
5

“新”混帐点评:

就在今天,我遇到了以下注释跑从Git的首次(至少是我第一次看到它):Git(LFS):什么是锁定支持?我应该启用它吗?

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上的任何东西工作? (微创,怎么回事可以在日志历史的“排序”来建立?更糟糕的情况下,不能我必须同时写入损坏的二进制文件?)

我的行动

我什么也没做不同于最近的这个版本库,与我使用LFS建立的其他版本相比,我也没有对这个版本库做过任何改变。

因此,我假设这是一个新的评论被提供给“世界”让我们知道新的功能。

没有明显的文档

然而,无论是谷歌搜索,也没有通过自己的文档一个快速搜索导致我任何解释这一点。所以,我很想知道:

  • 这是什么锁定?
    • 它是互斥量吗?如果是这样,我的回购如何在没有它的情况下起作用?
    • 这仅限于LFS吗?它与普通的git文件锁定有什么不同?
  • 为LFS添加锁定支持有哪些优缺点?

回答

6

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将验证你没有修改按下时,由其他用户锁定的文件。由于File Locking是早期版本,并且很少有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,您可以编辑,存储服务器会认识到你编辑
  • 服务器不会接受更改您已锁定其他人的文件的提交。

,主要增加帮助团队管理大型文件,以避免合并冲突。

+0

谢谢,肯尼!我认为这是这样的,但无法找到该文档! –

+0

嗨,之后'git config'lfs.http://git-server.com/user/repo.locksverify'true',**如何将**恢复为“正常状态”?我只需要做一个'git push -f origin 99157a1b1b27820dfba48c5e9d3c4f075670670c:master'并且回到正常的生活。 –

相关问题