我正在嘗試構建一個應用程序,它定期掃描各種Git分支上的提交歷史記錄,並報告作者和有關提交消息的各種詳細信息。我已經開始爲此使用LibGit2Sharp。它本身非常適合訪問提交,但在嘗試更新存儲庫時遇到了一些障礙。Git簽出並通過Lib2GitSharp提取
每次運行我的任務時,我都需要從遠程存儲庫獲取最新的更改。我的理解是我需要簽出追蹤有問題的遠程分支的本地分支,然後執行提取或拉取。我試圖做到這一點在我的應用程序如下:
// Get the branch
var localBranch = repo.Branches[localbranchName];
// Switch to this branch
if (!localBranch.IsCurrentRepositoryHead)
{
repo.Checkout(localBranch);
}
// Do a pull to get latest
var result = repo.Network.Pull(signature, new PullOptions());
不過,我總是得到下面的異常運行repo.Checkout(localBranch);
LibGit2Sharp.LibGit2SharpException: Failed to mmap. No data written: Not enough storage is available to process this command.
at LibGit2Sharp.Core.Ensure.HandleError(Int32 result) in c:\Git\libgit2sharp\LibGit2Sharp\Core\Ensure.cs:line 160
at LibGit2Sharp.Core.Ensure.ZeroResult(Int32 result) in c:\Git\libgit2sharp\LibGit2Sharp\Core\Ensure.cs:line 178
at LibGit2Sharp.Core.Proxy.git_checkout_tree(RepositorySafeHandle repo, ObjectId treeId, GitCheckoutOpts& opts) in c:\Git\libgit2sharp\LibGit2Sharp\Core\Proxy.cs:line 295
at LibGit2Sharp.Repository.CheckoutTree(Tree tree, IList`1 paths, IConvertableToGitCheckoutOpts opts)...
當我手動籤分支在Git的Bash和運行我的程序(繞過對checkout命令的需要),然後在調用Pull時出現相同的異常。
關於這個錯誤沒有太多,但是迄今爲止我看到的所有內容都導致了「您的存儲庫對於庫處理太大」的程度的答案。我使用的存儲庫是一個合理大小的企業存儲庫,但這些命令在控制檯中很快就會執行。我想知道現在是否需要將控制檯包裝在處理程序中,並執行結帳並通過CLI直接取出(yuck)。
有什麼想法?
LibGit2Sharp的哪個版本? –
我正在使用來自NuGet的最新穩定版(v 0.22.0)。本地二進制文件依賴包是v 1.0.129(與LibGit2Sharp 0.22.0兼容的最高版本) – watkinsmatthewp
您可以嘗試Nuget.org上最新的預發佈嗎? –