强制LibGit2Sharp与它认为部分锁定的文件交互

本文关键字:锁定 文件 交互 LibGit2Sharp 强制 | 更新日期: 2023-09-27 18:08:29

我试图使用c#库LibGit2Sharp添加和提交二进制文件,而它是由另一个程序打开。Repository.Index.RetrieveStatus()调用失败,出现异常:

读取哈希文件错误:进程无法访问文件,因为另一个进程锁定了文件的一部分。

但是从shell调用的git二进制文件执行相同的操作没有问题:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   files/foo.bin
no changes added to commit (use "git add" and/or "git commit -a")
$ git add files/foo.bin
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        modified:   files/foo.bin

是否有办法说服LibGit2Sharp的行为作为文档?

强制LibGit2Sharp与它认为部分锁定的文件交互

给定一个文件由另一个进程持有,如果git在处理它时不畏缩,那么libgit2和LibGit2Sharp也不应该畏缩。

没有办法"强制LibGit2Sharp与它说部分锁定的文件交互"。因为这是一个bug,它不应该这样做。

现在最好的做法是为问题跟踪器提供一个新的条目,这样团队就可以开始寻找bug;-)