int git_odb_open(git_odb **out, const char *objects_dir) { git_odb *db; int error; assert(out && objects_dir); *out = NULL; if ((error = git_odb_new(&db)) < 0) return error; if ((error = add_default_backends(db, objects_dir, 0)) < GIT_SUCCESS) goto cleanup; if ((error = load_alternates(db, objects_dir)) < GIT_SUCCESS) goto cleanup; *out = db; return GIT_SUCCESS; cleanup: git_odb_close(db); return error; }
void git_repository_free(git_repository *repo) { git_hashtable_iterator it; git_object *object; if (repo == NULL) return; free(repo->path_workdir); free(repo->path_index); free(repo->path_repository); free(repo->path_odb); git_hashtable_iterator_init(repo->objects, &it); while ((object = (git_object *) git_hashtable_iterator_next(&it)) != NULL) git_object_free(object); git_hashtable_free(repo->objects); git_repository__refcache_free(&repo->references); if (repo->db != NULL) git_odb_close(repo->db); if (repo->index != NULL) git_index_free(repo->index); free(repo); }
void git_repository_free(git_repository *repo) { if (repo == NULL) return; git_cache_free(&repo->objects); git_repository__refcache_free(&repo->references); free(repo->path_workdir); free(repo->path_index); free(repo->path_repository); free(repo->path_odb); if (repo->db != NULL) git_odb_close(repo->db); if (repo->index != NULL) git_index_free(repo->index); free(repo); }
void git_repository_free(git_repository *repo) { git_hashtable_iterator it; git_object *object; assert(repo); free(repo->path_workdir); free(repo->path_index); free(repo->path_repository); free(repo->path_odb); git_hashtable_iterator_init(repo->objects, &it); while ((object = (git_object *) git_hashtable_iterator_next(&it)) != NULL) git_object_free(object); git_hashtable_free(repo->objects); git_odb_close(repo->db); git_index_free(repo->index); free(repo); }