【问题标题】:LibGit2Sharp The Index is locked - ErrorLibGit2Sharp 索引被锁定 - 错误
【发布时间】:2014-04-22 20:19:40
【问题描述】:

有时我会尝试同时读取和写入 Git 存储库。 但是之后我在尝试提交文件时收到以下错误消息:

libgit2 引发错误。类别 = 索引 (LockedFile)。这 索引被锁定。这可能是由于并发或崩溃 过程。

提交按预期完成,为什么我会收到此错误消息?我该如何摆脱它?

(如果 LibGit2Sharp 开发人员看到:错误消息中存在拼写错误:concuRRRent。):D

【问题讨论】:

    标签: git github versioning libgit2 libgit2sharp


    【解决方案1】:

    Dropbox 也会干扰 git 操作。我在任何 git 同步之前暂停 Dropbox 同步。

    【讨论】:

      【解决方案2】:

      索引是 git 对象数据库和工作目录之间的网关通道。它用于制作提交(即暂存,取消暂存,..)或签出文件时。因此,同时执行这些操作可能会引发此类错误,因为这两个操作都将竞相访问索引。

      在 libgit2 级别上进行了一些工作,以使索引的使用成为线程读取操作的更好体验(例如,参见 libgit2/libgit2#2108)。

      但是,根据您执行的读/写操作类型,您可能不需要遍历索引:

      • 例如,导航 Commit、Tree 或检索 Blob 的内容不会利用索引。
      • 您还可以通过直接在对象数据库中插入对象来创建 Blob、树和提交,而无需通过索引(快速入门,请参阅此 StackOverflow answer)。

      如果 LibGit2Sharp 开发人员看到:错误消息中存在拼写错误:concuRRRent。

      好收获!你想打开一个拉取请求来帮助我们解决这个问题吗? ;-)

      【讨论】:

      • 我有循环分阶段和提交文件 1000 次。每次提交后文件内容都会更改。同时,我正在迭代存储库中的所有提交以获取文件的历史记录。在某些时候,我收到消息“libgit2 引发错误。类别 = Os(错误)。无法将锁定文件重命名为 .git/index:访问被拒绝。”之后,每次提交后,我都会从我的开始帖子中收到错误消息。我可以以某种方式修复存储库吗?
      • 如果index.lock 文件来自崩溃的进程,您可以将其删除。这不会自动发生,因为它可能来自并发的实时进程。
      • 重启、杀死进程等对我不起作用。但是手动删除 index.lock (位于隐藏文件夹“.git”中)。
      【解决方案3】:

      我遇到了同样的错误,我删除了创建存储库的 .git 文件夹中的 index.lock 文件,然后问题得到解决。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-09
        • 2018-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-18
        • 2021-04-22
        相关资源
        最近更新 更多