web-dev-qa-db-ja.com

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(大容量ファイルストレージ)の mutex locking のようなものですか?もしそうなら、gitで何かを動作させることは絶対に不可欠ではありませんか? (最低限、ログ履歴の「順序付け」は他にどのように確立できますか?最悪の場合、同時書き込みによってバイナリファイルが破損することはありませんか?)

私の行動

私は最近、このリポジトリに対して何も別のことをしませんでしたし、LFSで確立した他のリポジトリと比較してこのリポジトリで別のこともしませんでした。

したがって、これは新しい機能をお知らせするために「世界」に提供される新しいコメントであると想定しています。

明らかなドキュメントなし

しかし、Google検索もquick彼らのドキュメントを検索しても、これを説明するものは何もありませんでした。だから、私は疑問に思っています:

  • このロックとは何ですか?
    • ミューテックスですか?もしそうなら、どうして私のレポはそれなしでも機能しますか?
    • これはLFSだけに制限されていますか?通常のgitファイルロックとはどう違うのですか?
  • LFSのロックサポートを追加することの長所と短所は何ですか?
17
Mike Williamson

Git LFSのロックのサポートについては、こちらで説明しています https://github.com/git-lfs/git-lfs/wiki/File-Locking .

Git LFS v2.0.0には、ファイルロックの初期リリースが含まれています。ファイルロックを使用すると、開発者は更新中のファイルをロックして、他のユーザーが同時にファイルを更新できないようにすることができます。 Gitリポジトリで同時に編集すると、マージの競合が発生します。これは、大きなバイナリファイルでは解決が非常に困難です。

.gitattributesのファイルパターンがロック可能になると、Git LFSはローカルファイルシステム上でそれらを自動的に読み取り専用にします。これにより、ユーザーがファイルを最初にロックせずに誤って編集することを防ぎます。

Git LFSは、プッシュ時に別のユーザーによってロックされたファイルを変更していないことを確認します。ファイルロックは初期リリースであり、APIを実装しているLFSサーバーはほとんどないため、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でファイルを「ロック」すると、編集できるようになり、リポジトリサーバーは編集中であることを認識します
  • サーバーは、他の人がロックしたファイルを変更するコミットを受け入れません。

主に、マージの競合を防ぐために大きなファイルを管理するチームを支援するために追加されます。

24
kennytm