2014-04-22 20 views
7

有時候我會嘗試同時讀取和寫入Git存儲庫。 但是之後當我嘗試提交文件時,我收到以下錯誤消息:LibGit2Sharp索引已鎖定 - 錯誤

libgit2引發了一個錯誤。 Category = Index(LockedFile)。 索引被鎖定。這可能是由於併發或崩潰 進程。

提交按預期完成,爲什麼我收到此錯誤消息?我如何擺脫它?

(如果LibGit2Sharp顯影劑看到這一點:有一個在錯誤消息中的拼寫misstake:concuRRRent):d

回答

5

這一指數是GIT中對象數據庫和工作目錄之間的網關信道。它用於創建提交(即暫存,暫停,...)或檢出文件時。因此,同時執行這些操作可能會引發這樣的錯誤,因爲兩種操作都會競相獲得對索引的訪問權。

在該libgit2水平正在做的做出螺紋更好的體驗讀取操作的指數使用一些工作(見libgit2/libgit2#2108例如)。

然而,根據其種類,你進行讀/寫操作的,你可能不需要去通過指數:

  • 例如,導航的提交,樹或檢索的內容Blob不會利用索引。
  • 您也可以在不通過索引的情況下通過直接在對象數據庫中插入對象來創建Blob,樹和提交(請參閱此StackOverflow answer快速入門)。

如果LibGit2Sharp開發商看到這樣的:有一個在錯誤信息的拼寫錯誤:concuRRRent。

好抓!您是否想開一個Pull請求來幫助我們解決這個問題? ;-)

+1

我有循環哪個階段和提交文件1000次。文件內容在每次提交後都會更改。與此同時,我正在迭代存儲庫中的所有提交以獲取文件的歷史記錄。在某些時候,我收到消息 「libgit2引發了一個錯誤。Category = Os(Error)。無法將lockfile重命名爲.git/index:訪問被拒絕。」 之後,我在每次提交後都從我的開始帖子收到錯誤消息。我能以某種方式修復信息庫嗎? – JoeLiBuDa

+10

如果'index.lock'文件來自崩潰的進程,則可以將其刪除。這不會自動發生,因爲它可能來自併發實時進程。 –

+0

@CarlosMartínNieto解決了我的問題!大! – JoeLiBuDa

8

Dropbox也會干擾git操作。在任何git同步之前,我暫停Dropbox同步。

+0

我沒有安裝Dropbox ... – JoeLiBuDa