我正在使用 boost::filesystem 和 libgit2 将 git 存储库克隆到我的电脑。一切正常,直到我完成并尝试删除我克隆存储库的目录。这样做时,我得到一个 R6010 abort()。这是到目前为止的代码。
{
boost::filessytem::path dir("C:/myfolder");
boost::filesystem::create_directory(dir);
git_repository * repo;
git_clone_options option = GIT_CLONE_OPTIONS_INIT;
options.transport_flags = GIT_TRANSPORTFLAGS_NO_CHECK_CERT;
int error = git_clone(&repo, gitUrl.c_str(), "C:/myfolder", &option);
if(error != 0)
{
std::cout << giterr_last()->message;
}
//i)
git_repository_free(repo);
if(boost::filesytem::exists(dir))
{
//ii) boost::filesystem::remove_all(dir);
}
}
i)这条线应该释放 repo 使用的内存,但似乎对问题没有影响。无论我使用它,git_repository__cleanup,还是什么都不用。
ii) 这就是问题所在。该代码在删除没有克隆 git 存储库的目录时有效,但在这种情况下使用时它会崩溃。