Я пытаюсь создать приложение, которое периодически сканирует историю фиксации в различных ветвях Git и отчеты об авторах и различные подробности о сообщениях фиксации. Для этого я начал использовать LibGit2Sharp. Он отлично подходит для доступа к самим коммитам, но при попытке обновить репозиторий я столкнулся с проблемой.Git Checkout and Pull via 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 и запустить мою программу (минуя необходимость в команде проверки), он затем не выполняет вызов Pull с тем же исключением.
Здесь не так много об этой ошибке, но все, что я видел до сих пор, привело к ответам в объеме «Ваш репозиторий слишком велик для обработки библиотеки». Репозиторий, который я использую, представляет собой репозиторий корпоративного размера, но эти команды выполняются в консоли довольно быстро. Теперь мне интересно, нужно ли мне обернуть консоль в обработчик и выполнить проверку и вытащить непосредственно через CLI (yuck).
Любые мысли?
Какая версия LibGit2Sharp? –
Я использую последнюю стабильную версию от NuGet (v 0.22.0). Пакет зависимых двоичных файлов равен 1.0.129 (самая высокая версия, совместимая с LibGit2Sharp 0.22.0) – watkinsmatthewp
Вместо этого вы можете попробовать последнюю предварительную версию на Nuget.org? –