Представьте, что у вас есть длительный процесс, который создает экземпляр объекта git_repository*
при запуске программы. Время от времени запрашиваются коммиты (git_commit_lookup
), проверка состояния репозитория (git_repository_head_unborn
), парсинг и список ссылок (git_revparse_single
, git_reference_lookup
, git_branch_iterator_new
, ...).
Однако независимо от этого процесса существуют другие процессы (например, vanilla git), работающие над этим рабочим деревом и изменяющие его (например, фиксация, вытягивание, отправка, перемещение, создание веток и т. д.).
- Должен ли я ожидать сбоев на основе, например. устаревшие кэшированные данные (например, структуры индексов или файлы odb) или файлы с отображением памяти?
- Должен ли я беспокоиться о том, что получу устаревшие данные?
- Должен ли я беспокоиться, потому что libgit2 начинает выделять все больше и больше памяти для кэширования?
- Или мне нужно
git_repository_free
и регулярно получать "свежий"git_repository*
указатель?
Я использую Visual Studio 2013 (Update4) и когда я работаю над рабочим деревом, оно время от времени вылетает в git2-...dll
... Вот и интересно, libgit2 вообще рассчитан на такие сценарии.
Первые тесты с моим собственным приложением показывают, что сбоев не происходит, но это, конечно, может зависеть от моих конкретных тестов...