diff options
Diffstat (limited to 'src/repository.c')
| -rw-r--r-- | src/repository.c | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/src/repository.c b/src/repository.c index 9d457b7d2..77ce0c0f4 100644 --- a/src/repository.c +++ b/src/repository.c @@ -379,125 +379,6 @@ git_odb *git_repository_database(git_repository *repo) return repo->db; } -static int create_object(git_object **object_out, git_otype type) -{ - git_object *object = NULL; - - assert(object_out); - - *object_out = NULL; - - switch (type) { - case GIT_OBJ_COMMIT: - case GIT_OBJ_TAG: - case GIT_OBJ_BLOB: - object = git__malloc(git_object__size(type)); - if (object == NULL) - return GIT_ENOMEM; - memset(object, 0x0, git_object__size(type)); - break; - - case GIT_OBJ_TREE: - object = (git_object *)git_tree__new(); - if (object == NULL) - return GIT_ENOMEM; - break; - - default: - return GIT_EINVALIDTYPE; - } - - *object_out = object; - return GIT_SUCCESS; -} - -int git_repository_newobject(git_object **object_out, git_repository *repo, git_otype type) -{ - git_object *object = NULL; - int error; - - assert(object_out && repo); - - if ((error = create_object(&object, type)) < GIT_SUCCESS) - return error; - - object->repo = repo; - object->in_memory = 1; - object->modified = 1; - - object->source.raw.type = type; - - *object_out = object; - return GIT_SUCCESS; -} - -int git_repository_lookup(git_object **object_out, git_repository *repo, const git_oid *id, git_otype type) -{ - git_object *object = NULL; - git_rawobj obj_file; - int error = GIT_SUCCESS; - - assert(repo && object_out && id); - - object = git_hashtable_lookup(repo->objects, id); - if (object != NULL) { - *object_out = object; - return GIT_SUCCESS; - } - - error = git_odb_read(&obj_file, repo->db, id); - if (error < GIT_SUCCESS) - return error; - - if (type != GIT_OBJ_ANY && type != obj_file.type) { - git_rawobj_close(&obj_file); - return GIT_EINVALIDTYPE; - } - - type = obj_file.type; - - if ((error = create_object(&object, type)) < GIT_SUCCESS) - return error; - - /* Initialize parent object */ - git_oid_cpy(&object->id, id); - object->repo = repo; - memcpy(&object->source.raw, &obj_file, sizeof(git_rawobj)); - object->source.open = 1; - - switch (type) { - case GIT_OBJ_COMMIT: - error = git_commit__parse((git_commit *)object); - break; - - case GIT_OBJ_TREE: - error = git_tree__parse((git_tree *)object); - break; - - case GIT_OBJ_TAG: - error = git_tag__parse((git_tag *)object); - break; - - case GIT_OBJ_BLOB: - error = git_blob__parse((git_blob *)object); - break; - - default: - break; - } - - if (error < GIT_SUCCESS) { - git_object_free(object); - return error; - } - - git_object__source_close(object); - git_hashtable_insert(repo->objects, &object->id, object); - - *object_out = object; - return GIT_SUCCESS; -} - static int repo_init_reinit(repo_init *results) { /* TODO: reinit the repository */ |
