私は、作者のさまざまなGitブランチとレポートのコミット履歴とコミットメッセージのさまざまな詳細を定期的にスキャンするアプリケーションを構築しようとしています。私はこのためにLibGit2Sharpを使い始めました。コミット自体にアクセスするのは素晴らしいことですが、リポジトリを更新しようとするときに悩まされました。Git Checkoutと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());
私は手動でのGit Bashの中でそのブランチをチェックアウトし、私のプログラムを実行すると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)...
を実行しているとき、私はいつも次の例外を取得し、次のように私は私のアプリでこれを行うにしようとしています(checkoutコマンドの必要性を迂回して)、同じ例外を伴ってPullへの呼び出しに失敗します。
このエラーはあまりありませんが、私がこれまで見てきたことは、「あなたのリポジトリはライブラリが扱うには大きすぎます。私が使用しているリポジトリはかなりの規模のエンタープライズリポジトリですが、これらのコマンドはコンソールで非常に迅速に実行されます。私は、私がハンドラで私のコンソールをラップし、チェックアウトを実行し、CLI(yuck)を直接引き出す必要があるかどうか今は不思議です。
どのような考えですか?
LibGit2Sharpのどのバージョン? –
私はNuGetの最新の安定版を使用しています(v 0.22.0)。ネイティブバイナリ依存パッケージはv 1.0.129(LibGit2Sharp 0.22.0と互換性がある最高バージョン) – watkinsmatthewp
代わりにNuget.orgで最新のプレリリースを試すことができますか? –