Git には、内部データベースへの読み取り/書き込みのためのさまざまな操作があります。Git では書き込み操作がアトミックであることを読みました。ただし、読み取りなどの他の操作では、データベースをロックする操作は何ですか?
具体的には、「git Blame」を同時に呼び出すアプリケーションを作成しており、これがマルチスレッドできるものであることを確認したいと考えています。
これはソースでは確認していませんが、git の内部構造を知っていると、それ以外はすべてgit gc
マルチスレッド化できると言えます。
Git は、相互に参照するオブジェクト ファイルの集まりにすぎませんが、一方向 (「過去」) への参照のみが許可されています。ブランチ ヘッドを除いて、git リポジトリの内容は変更できず (拡張のみ) git gc
、git リポジトリから内容を削除する唯一の操作です。
それが、git が絶対に最小限のロックを必要とする理由であり、また、あなたが大丈夫であるべき理由でもあります。インデックスはこれらすべてから除外されていることに注意してください。これは頻繁にロックされgit blame HEAD
ますが、裸のリポジトリで実行するすべてのコマンドはインデックスを使用しません。