强制LibGit2Sharp与部分锁定的文件进行交互

时间:2014-06-14 02:52:47

标签: c# libgit2sharp filelock

我正在尝试使用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表现为documented

1 个答案:

答案 0 :(得分:1)

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

没有办法&#34;强迫LibGit2Sharp与部分锁定的文件进行交互&#34; 。因为这是一个错误,它不应该这样做。

您现在最好的行动方式是为 issue tracker 提供一个新条目,以便团队可以启动并开始寻找漏洞; - )