commit - 84a2cae442d6c7544bc5e515da4e4465f69ec128
commit + 44f875ad4b93ddb8d0e717a6ca564ce84de7f4e2
blob - 779d275d76ee4ec7de49b0eb3ac7c86b3f60da72
blob + b9059883b276557469eb6e0eee0207d19e630185
--- gotd/session.c
+++ gotd/session.c
struct gotd_imsg_ref_update iref;
struct got_object_id old_id, new_id;
struct got_object_id *id = NULL;
- struct got_object *obj = NULL;
char *refname = NULL;
size_t datalen;
int locked = 0;
memcpy(old_id.sha1, iref.old_id, SHA1_DIGEST_LENGTH);
memcpy(new_id.sha1, iref.new_id, SHA1_DIGEST_LENGTH);
- err = got_object_open(&obj, repo,
- iref.delete_ref ? &old_id : &new_id);
+ err = got_repo_find_object_id(iref.delete_ref ? &old_id : &new_id,
+ repo);
if (err)
goto done;
}
if (ref)
got_ref_close(ref);
- if (obj)
- got_object_close(obj);
if (repo)
got_repo_close(repo);
free(refname);
blob - f44259d099d9b70c547d238971a7cc147c4e209f
blob + 606d32e822167999828d4333a09b3b6ee296bf61
--- lib/got_lib_repository.h
+++ lib/got_lib_repository.h
const struct got_error *got_repo_temp_fds_get(int *, int *,
struct got_repository *);
void got_repo_temp_fds_put(int, struct got_repository *);
+
+const struct got_error *got_repo_find_object_id(struct got_object_id *,
+ struct got_repository *);
blob - d03adb90174241003324f223eadcf82466c3c87b
blob + 9e58244dfa2381523d54c703cd1e1059b769fe3f
--- lib/repository.c
+++ lib/repository.c
GOT_OBJ_LABEL_TAG, name);
return err;
}
+
+const struct got_error *
+got_repo_find_object_id(struct got_object_id *id, struct got_repository *repo)
+{
+ const struct got_error *err;
+ struct got_object_id *matched_id = NULL;
+ char *id_str = NULL;
+ err = got_object_id_str(&id_str, id);
+ if (err)
+ return err;
+
+ err = got_repo_match_object_id_prefix(&matched_id, id_str,
+ GOT_OBJ_TYPE_ANY, repo);
+ free(id_str);
+ return err;
+}
+
static const struct got_error *
alloc_added_blob_tree_entry(struct got_tree_entry **new_te,
const char *name, mode_t mode, struct got_object_id *blob_id)