“.git/index.lock”文件实际上是做什么用的?

7
我最近遇到了一个问题,需要删除.git/index.lock文件。不过,我猜想这个文件会锁定能够访问git repo的进程。但是,我找不到关于这个文件实际用途和为什么会出现类似于这个问题(link)的相关描述和文档。

那么,index.lock具体有什么作用?人们为什么与该文件相关的问题?

知道这些信息将非常有帮助,可以防止未来出现此类问题。

1个回答

6
我从https://www.kernel.org/pub/software/scm/git/docs/technical/api-lockfile.html找到了这个信息。它告诉你 .git/index.lock 的作用。
  • 互斥。当我们写一个新的索引文件时,首先我们创建一个新文件$GIT_DIR/index.lock,将新内容写入其中,然后将其重命名为最终目标$GIT_DIR/index。我们尝试使用 O_EXCL 创建 $GIT_DIR/index.lock 文件,以便在其他人已经尝试更新索引文件时注意到并失败。
  • 自动清理垃圾。在创建“锁”文件后,我们可能决定 die(),我们希望确保删除未提交到最终目标的文件。这是通过记住我们在链表中创建的锁文件并从atexit(3)处理程序中清除它们来完成的。当程序因信号而死亡时,未完成的锁文件也会被删除。
我猜你所说的问题原因是某些操作系统上自动清理垃圾出现故障。我使用 Git 在 Linux 上几年了,但还没有遇到过���种问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接