Git有各种读/写内部数据库的操作.我已经读过Git中的写操作是原子的.但是,对于读取等其他操作,哪些操作会锁定数据库?
具体来说,我正在编写一个同时调用"git blame"的应用程序,我想确保这是我可以多线程的东西.
我没有在源代码中检查这一点,但是根据了解 git\xe2\x80\x99s 的内部结构,我会说除了git gc可以是多线程之外的所有内容。
Git只是一堆相互引用的目标文件,但只允许在一个方向上引用(\xe2\x80\x9cthe过去\xe2\x80\x9d)。除了分支头之外,git 存储库的内容无法修改(只能扩展),并且git gc是唯一将从 git 存储库中删除内容的操作。
这就是为什么 git 需要绝对最小的锁定,也是为什么你应该没问题。请注意,索引被排除在所有这些 \xe2\x80\x93 之外,这些 \xe2\x80\x93 将经常被锁定,但是git blame HEAD您在裸存储库上运行的每个命令都不使用索引。
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |