Commit 21e1ee8f authored by Stefan Beller's avatar Stefan Beller Committed by Junio C Hamano

commit: add repository argument to lookup_commit_reference_gently

Add a repository argument to allow callers of
lookup_commit_reference_gently to be more specific about which
repository to handle. This is a small mechanical change; it doesn't
change the implementation to handle repositories other than
the_repository yet.

As with the previous commits, use a macro to catch callers passing a
repository other than the_repository at compile time.
Signed-off-by: Stefan Beller's avatarStefan Beller <sbeller@google.com>
Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
parent f86bcc7b
...@@ -380,7 +380,7 @@ static void parse_treeish_arg(const char **argv, ...@@ -380,7 +380,7 @@ static void parse_treeish_arg(const char **argv,
if (get_oid(name, &oid)) if (get_oid(name, &oid))
die("Not a valid object name"); die("Not a valid object name");
commit = lookup_commit_reference_gently(&oid, 1); commit = lookup_commit_reference_gently(the_repository, &oid, 1);
if (commit) { if (commit) {
commit_sha1 = commit->object.oid.hash; commit_sha1 = commit->object.oid.hash;
archive_time = commit->date; archive_time = commit->date;
......
...@@ -1712,7 +1712,8 @@ static struct commit *dwim_reverse_initial(struct rev_info *revs, ...@@ -1712,7 +1712,8 @@ static struct commit *dwim_reverse_initial(struct rev_info *revs,
/* Do we have HEAD? */ /* Do we have HEAD? */
if (!resolve_ref_unsafe("HEAD", RESOLVE_REF_READING, &head_oid, NULL)) if (!resolve_ref_unsafe("HEAD", RESOLVE_REF_READING, &head_oid, NULL))
return NULL; return NULL;
head_commit = lookup_commit_reference_gently(&head_oid, 1); head_commit = lookup_commit_reference_gently(the_repository,
&head_oid, 1);
if (!head_commit) if (!head_commit)
return NULL; return NULL;
......
...@@ -379,7 +379,7 @@ static int checkout_paths(const struct checkout_opts *opts, ...@@ -379,7 +379,7 @@ static int checkout_paths(const struct checkout_opts *opts,
die(_("unable to write new index file")); die(_("unable to write new index file"));
read_ref_full("HEAD", 0, &rev, NULL); read_ref_full("HEAD", 0, &rev, NULL);
head = lookup_commit_reference_gently(&rev, 1); head = lookup_commit_reference_gently(the_repository, &rev, 1);
errs |= post_checkout_hook(head, head, 0); errs |= post_checkout_hook(head, head, 0);
return errs; return errs;
...@@ -830,7 +830,7 @@ static int switch_branches(const struct checkout_opts *opts, ...@@ -830,7 +830,7 @@ static int switch_branches(const struct checkout_opts *opts,
memset(&old_branch_info, 0, sizeof(old_branch_info)); memset(&old_branch_info, 0, sizeof(old_branch_info));
old_branch_info.path = path_to_free = resolve_refdup("HEAD", 0, &rev, &flag); old_branch_info.path = path_to_free = resolve_refdup("HEAD", 0, &rev, &flag);
if (old_branch_info.path) if (old_branch_info.path)
old_branch_info.commit = lookup_commit_reference_gently(&rev, 1); old_branch_info.commit = lookup_commit_reference_gently(the_repository, &rev, 1);
if (!(flag & REF_ISSYMREF)) if (!(flag & REF_ISSYMREF))
old_branch_info.path = NULL; old_branch_info.path = NULL;
...@@ -1004,7 +1004,7 @@ static int parse_branchname_arg(int argc, const char **argv, ...@@ -1004,7 +1004,7 @@ static int parse_branchname_arg(int argc, const char **argv,
else else
new_branch_info->path = NULL; /* not an existing branch */ new_branch_info->path = NULL; /* not an existing branch */
new_branch_info->commit = lookup_commit_reference_gently(rev, 1); new_branch_info->commit = lookup_commit_reference_gently(the_repository, rev, 1);
if (!new_branch_info->commit) { if (!new_branch_info->commit) {
/* not a commit */ /* not a commit */
*source_tree = parse_tree_indirect(rev); *source_tree = parse_tree_indirect(rev);
......
...@@ -331,7 +331,8 @@ static void describe_commit(struct object_id *oid, struct strbuf *dst) ...@@ -331,7 +331,8 @@ static void describe_commit(struct object_id *oid, struct strbuf *dst)
init_commit_names(&commit_names); init_commit_names(&commit_names);
n = hashmap_iter_first(&names, &iter); n = hashmap_iter_first(&names, &iter);
for (; n; n = hashmap_iter_next(&iter)) { for (; n; n = hashmap_iter_next(&iter)) {
c = lookup_commit_reference_gently(&n->peeled, 1); c = lookup_commit_reference_gently(the_repository,
&n->peeled, 1);
if (c) if (c)
*commit_names_at(&commit_names, c) = n; *commit_names_at(&commit_names, c) = n;
} }
...@@ -509,7 +510,7 @@ static void describe(const char *arg, int last_one) ...@@ -509,7 +510,7 @@ static void describe(const char *arg, int last_one)
if (get_oid(arg, &oid)) if (get_oid(arg, &oid))
die(_("Not a valid object name %s"), arg); die(_("Not a valid object name %s"), arg);
cmit = lookup_commit_reference_gently(&oid, 1); cmit = lookup_commit_reference_gently(the_repository, &oid, 1);
if (cmit) if (cmit)
describe_commit(&oid, &sb); describe_commit(&oid, &sb);
......
...@@ -684,8 +684,10 @@ static int update_local_ref(struct ref *ref, ...@@ -684,8 +684,10 @@ static int update_local_ref(struct ref *ref,
return r; return r;
} }
current = lookup_commit_reference_gently(&ref->old_oid, 1); current = lookup_commit_reference_gently(the_repository,
updated = lookup_commit_reference_gently(&ref->new_oid, 1); &ref->old_oid, 1);
updated = lookup_commit_reference_gently(the_repository,
&ref->new_oid, 1);
if (!current || !updated) { if (!current || !updated) {
const char *msg; const char *msg;
const char *what; const char *what;
...@@ -818,7 +820,8 @@ static int store_updated_refs(const char *raw_url, const char *remote_name, ...@@ -818,7 +820,8 @@ static int store_updated_refs(const char *raw_url, const char *remote_name,
continue; continue;
} }
commit = lookup_commit_reference_gently(&rm->old_oid, commit = lookup_commit_reference_gently(the_repository,
&rm->old_oid,
1); 1);
if (!commit) if (!commit)
rm->fetch_head_status = FETCH_HEAD_NOT_FOR_MERGE; rm->fetch_head_status = FETCH_HEAD_NOT_FOR_MERGE;
......
...@@ -196,7 +196,7 @@ static int keep_entry(struct commit **it, struct object_id *oid) ...@@ -196,7 +196,7 @@ static int keep_entry(struct commit **it, struct object_id *oid)
if (is_null_oid(oid)) if (is_null_oid(oid))
return 1; return 1;
commit = lookup_commit_reference_gently(oid, 1); commit = lookup_commit_reference_gently(the_repository, oid, 1);
if (!commit) if (!commit)
return 0; return 0;
...@@ -265,7 +265,8 @@ static int unreachable(struct expire_reflog_policy_cb *cb, struct commit *commit ...@@ -265,7 +265,8 @@ static int unreachable(struct expire_reflog_policy_cb *cb, struct commit *commit
if (is_null_oid(oid)) if (is_null_oid(oid))
return 0; return 0;
commit = lookup_commit_reference_gently(oid, 1); commit = lookup_commit_reference_gently(the_repository, oid,
1);
/* Not a commit -- keep it */ /* Not a commit -- keep it */
if (!commit) if (!commit)
...@@ -322,7 +323,7 @@ static int push_tip_to_list(const char *refname, const struct object_id *oid, ...@@ -322,7 +323,7 @@ static int push_tip_to_list(const char *refname, const struct object_id *oid,
struct commit *tip_commit; struct commit *tip_commit;
if (flags & REF_ISSYMREF) if (flags & REF_ISSYMREF)
return 0; return 0;
tip_commit = lookup_commit_reference_gently(oid, 1); tip_commit = lookup_commit_reference_gently(the_repository, oid, 1);
if (!tip_commit) if (!tip_commit)
return 0; return 0;
commit_list_insert(tip_commit, list); commit_list_insert(tip_commit, list);
...@@ -339,7 +340,8 @@ static void reflog_expiry_prepare(const char *refname, ...@@ -339,7 +340,8 @@ static void reflog_expiry_prepare(const char *refname,
cb->tip_commit = NULL; cb->tip_commit = NULL;
cb->unreachable_expire_kind = UE_HEAD; cb->unreachable_expire_kind = UE_HEAD;
} else { } else {
cb->tip_commit = lookup_commit_reference_gently(oid, 1); cb->tip_commit = lookup_commit_reference_gently(the_repository,
oid, 1);
if (!cb->tip_commit) if (!cb->tip_commit)
cb->unreachable_expire_kind = UE_ALWAYS; cb->unreachable_expire_kind = UE_ALWAYS;
else else
......
...@@ -378,7 +378,8 @@ static void sort_ref_range(int bottom, int top) ...@@ -378,7 +378,8 @@ static void sort_ref_range(int bottom, int top)
static int append_ref(const char *refname, const struct object_id *oid, static int append_ref(const char *refname, const struct object_id *oid,
int allow_dups) int allow_dups)
{ {
struct commit *commit = lookup_commit_reference_gently(oid, 1); struct commit *commit = lookup_commit_reference_gently(the_repository,
oid, 1);
int i; int i;
if (!commit) if (!commit)
......
...@@ -180,7 +180,7 @@ int verify_bundle(struct bundle_header *header, int verbose) ...@@ -180,7 +180,7 @@ int verify_bundle(struct bundle_header *header, int verbose)
/* Clean up objects used, as they will be reused. */ /* Clean up objects used, as they will be reused. */
for (i = 0; i < p->nr; i++) { for (i = 0; i < p->nr; i++) {
struct ref_list_entry *e = p->list + i; struct ref_list_entry *e = p->list + i;
commit = lookup_commit_reference_gently(&e->oid, 1); commit = lookup_commit_reference_gently(the_repository, &e->oid, 1);
if (commit) if (commit)
clear_commit_marks(commit, ALL_REV_FLAGS); clear_commit_marks(commit, ALL_REV_FLAGS);
} }
......
...@@ -701,7 +701,7 @@ void write_commit_graph(const char *obj_dir, ...@@ -701,7 +701,7 @@ void write_commit_graph(const char *obj_dir,
if (commit_hex[i] && parse_oid_hex(commit_hex[i], &oid, &end)) if (commit_hex[i] && parse_oid_hex(commit_hex[i], &oid, &end))
continue; continue;
result = lookup_commit_reference_gently(&oid, 1); result = lookup_commit_reference_gently(the_repository, &oid, 1);
if (result) { if (result) {
ALLOC_GROW(oids.list, oids.nr + 1, oids.alloc); ALLOC_GROW(oids.list, oids.nr + 1, oids.alloc);
......
...@@ -24,8 +24,8 @@ int save_commit_buffer = 1; ...@@ -24,8 +24,8 @@ int save_commit_buffer = 1;
const char *commit_type = "commit"; const char *commit_type = "commit";
struct commit *lookup_commit_reference_gently(const struct object_id *oid, struct commit *lookup_commit_reference_gently_the_repository(
int quiet) const struct object_id *oid, int quiet)
{ {
struct object *obj = deref_tag(parse_object(the_repository, oid), struct object *obj = deref_tag(parse_object(the_repository, oid),
NULL, 0); NULL, 0);
...@@ -37,7 +37,7 @@ struct commit *lookup_commit_reference_gently(const struct object_id *oid, ...@@ -37,7 +37,7 @@ struct commit *lookup_commit_reference_gently(const struct object_id *oid,
struct commit *lookup_commit_reference(const struct object_id *oid) struct commit *lookup_commit_reference(const struct object_id *oid)
{ {
return lookup_commit_reference_gently(oid, 0); return lookup_commit_reference_gently(the_repository, oid, 0);
} }
struct commit *lookup_commit_or_die(const struct object_id *oid, const char *ref_name) struct commit *lookup_commit_or_die(const struct object_id *oid, const char *ref_name)
......
...@@ -65,7 +65,10 @@ const struct name_decoration *get_name_decoration(const struct object *obj); ...@@ -65,7 +65,10 @@ const struct name_decoration *get_name_decoration(const struct object *obj);
struct commit *lookup_commit(const struct object_id *oid); struct commit *lookup_commit(const struct object_id *oid);
struct commit *lookup_commit_reference(const struct object_id *oid); struct commit *lookup_commit_reference(const struct object_id *oid);
struct commit *lookup_commit_reference_gently(const struct object_id *oid, #define lookup_commit_reference_gently(r, o, q) \
lookup_commit_reference_gently_##r(o, q)
struct commit *lookup_commit_reference_gently_the_repository(
const struct object_id *oid,
int quiet); int quiet);
struct commit *lookup_commit_reference_by_name(const char *name); struct commit *lookup_commit_reference_by_name(const char *name);
......
...@@ -1724,8 +1724,10 @@ static int update_branch(struct branch *b) ...@@ -1724,8 +1724,10 @@ static int update_branch(struct branch *b)
if (!force_update && !is_null_oid(&old_oid)) { if (!force_update && !is_null_oid(&old_oid)) {
struct commit *old_cmit, *new_cmit; struct commit *old_cmit, *new_cmit;
old_cmit = lookup_commit_reference_gently(&old_oid, 0); old_cmit = lookup_commit_reference_gently(the_repository,
new_cmit = lookup_commit_reference_gently(&b->oid, 0); &old_oid, 0);
new_cmit = lookup_commit_reference_gently(the_repository,
&b->oid, 0);
if (!old_cmit || !new_cmit) if (!old_cmit || !new_cmit)
return error("Branch %s is missing commits.", b->name); return error("Branch %s is missing commits.", b->name);
......
#include "cache.h" #include "cache.h"
#include "notes-cache.h" #include "notes-cache.h"
#include "object-store.h" #include "object-store.h"
#include "repository.h"
#include "commit.h" #include "commit.h"
#include "refs.h" #include "refs.h"
...@@ -15,7 +16,7 @@ static int notes_cache_match_validity(const char *ref, const char *validity) ...@@ -15,7 +16,7 @@ static int notes_cache_match_validity(const char *ref, const char *validity)
if (read_ref(ref, &oid) < 0) if (read_ref(ref, &oid) < 0)
return 0; return 0;
commit = lookup_commit_reference_gently(&oid, 1); commit = lookup_commit_reference_gently(the_repository, &oid, 1);
if (!commit) if (!commit)
return 0; return 0;
......
...@@ -2026,7 +2026,8 @@ static int ref_filter_handler(const char *refname, const struct object_id *oid, ...@@ -2026,7 +2026,8 @@ static int ref_filter_handler(const char *refname, const struct object_id *oid,
* non-commits early. The actual filtering is done later. * non-commits early. The actual filtering is done later.
*/ */
if (filter->merge_commit || filter->with_commit || filter->no_commit || filter->verbose) { if (filter->merge_commit || filter->with_commit || filter->no_commit || filter->verbose) {
commit = lookup_commit_reference_gently(oid, 1); commit = lookup_commit_reference_gently(the_repository, oid,
1);
if (!commit) if (!commit)
return 0; return 0;
/* We perform the filtering for the '--contains' option... */ /* We perform the filtering for the '--contains' option... */
...@@ -2383,7 +2384,8 @@ int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset) ...@@ -2383,7 +2384,8 @@ int parse_opt_merge_filter(const struct option *opt, const char *arg, int unset)
if (get_oid(arg, &oid)) if (get_oid(arg, &oid))
die(_("malformed object name %s"), arg); die(_("malformed object name %s"), arg);
rf->merge_commit = lookup_commit_reference_gently(&oid, 0); rf->merge_commit = lookup_commit_reference_gently(the_repository,
&oid, 0);
if (!rf->merge_commit) if (!rf->merge_commit)
return opterror(opt, "must point to a commit", 0); return opterror(opt, "must point to a commit", 0);
......
...@@ -1149,7 +1149,7 @@ static void add_to_tips(struct tips *tips, const struct object_id *oid) ...@@ -1149,7 +1149,7 @@ static void add_to_tips(struct tips *tips, const struct object_id *oid)
if (is_null_oid(oid)) if (is_null_oid(oid))
return; return;
commit = lookup_commit_reference_gently(oid, 1); commit = lookup_commit_reference_gently(the_repository, oid, 1);
if (!commit || (commit->object.flags & TMP_MARK)) if (!commit || (commit->object.flags & TMP_MARK))
return; return;
commit->object.flags |= TMP_MARK; commit->object.flags |= TMP_MARK;
...@@ -1211,7 +1211,8 @@ static void add_missing_tags(struct ref *src, struct ref **dst, struct ref ***ds ...@@ -1211,7 +1211,8 @@ static void add_missing_tags(struct ref *src, struct ref **dst, struct ref ***ds
if (is_null_oid(&ref->new_oid)) if (is_null_oid(&ref->new_oid))
continue; continue;
commit = lookup_commit_reference_gently(&ref->new_oid, commit = lookup_commit_reference_gently(the_repository,
&ref->new_oid,
1); 1);
if (!commit) if (!commit)
/* not pushing a commit, which is not an error */ /* not pushing a commit, which is not an error */
...@@ -1435,8 +1436,8 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror, ...@@ -1435,8 +1436,8 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
reject_reason = REF_STATUS_REJECT_ALREADY_EXISTS; reject_reason = REF_STATUS_REJECT_ALREADY_EXISTS;
else if (!has_object_file(&ref->old_oid)) else if (!has_object_file(&ref->old_oid))
reject_reason = REF_STATUS_REJECT_FETCH_FIRST; reject_reason = REF_STATUS_REJECT_FETCH_FIRST;
else if (!lookup_commit_reference_gently(&ref->old_oid, 1) || else if (!lookup_commit_reference_gently(the_repository, &ref->old_oid, 1) ||
!lookup_commit_reference_gently(&ref->new_oid, 1)) !lookup_commit_reference_gently(the_repository, &ref->new_oid, 1))
reject_reason = REF_STATUS_REJECT_NEEDS_FORCE; reject_reason = REF_STATUS_REJECT_NEEDS_FORCE;
else if (!ref_newer(&ref->new_oid, &ref->old_oid)) else if (!ref_newer(&ref->new_oid, &ref->old_oid))
reject_reason = REF_STATUS_REJECT_NONFASTFORWARD; reject_reason = REF_STATUS_REJECT_NONFASTFORWARD;
......
...@@ -3610,7 +3610,7 @@ int sequencer_pick_revisions(struct replay_opts *opts) ...@@ -3610,7 +3610,7 @@ int sequencer_pick_revisions(struct replay_opts *opts)
continue; continue;
if (!get_oid(name, &oid)) { if (!get_oid(name, &oid)) {
if (!lookup_commit_reference_gently(&oid, 1)) { if (!lookup_commit_reference_gently(the_repository, &oid, 1)) {
enum object_type type = oid_object_info(the_repository, enum object_type type = oid_object_info(the_repository,
&oid, &oid,
NULL); NULL);
......
...@@ -1251,13 +1251,13 @@ int get_oid_mb(const char *name, struct object_id *oid) ...@@ -1251,13 +1251,13 @@ int get_oid_mb(const char *name, struct object_id *oid)
} }
if (st) if (st)
return st; return st;
one = lookup_commit_reference_gently(&oid_tmp, 0); one = lookup_commit_reference_gently(the_repository, &oid_tmp, 0);
if (!one) if (!one)
return -1; return -1;
if (get_oid_committish(dots[3] ? (dots + 3) : "HEAD", &oid_tmp)) if (get_oid_committish(dots[3] ? (dots + 3) : "HEAD", &oid_tmp))
return -1; return -1;
two = lookup_commit_reference_gently(&oid_tmp, 0); two = lookup_commit_reference_gently(the_repository, &oid_tmp, 0);
if (!two) if (!two)
return -1; return -1;
mbs = get_merge_bases(one, two); mbs = get_merge_bases(one, two);
......
...@@ -492,7 +492,8 @@ static void paint_down(struct paint_info *info, const struct object_id *oid, ...@@ -492,7 +492,8 @@ static void paint_down(struct paint_info *info, const struct object_id *oid,
struct commit_list *head = NULL; struct commit_list *head = NULL;
int bitmap_nr = DIV_ROUND_UP(info->nr_bits, 32); int bitmap_nr = DIV_ROUND_UP(info->nr_bits, 32);
size_t bitmap_size = st_mult(sizeof(uint32_t), bitmap_nr); size_t bitmap_size = st_mult(sizeof(uint32_t), bitmap_nr);
struct commit *c = lookup_commit_reference_gently(oid, 1); struct commit *c = lookup_commit_reference_gently(the_repository, oid,
1);
uint32_t *tmp; /* to be freed before return */ uint32_t *tmp; /* to be freed before return */
uint32_t *bitmap; uint32_t *bitmap;
...@@ -554,7 +555,8 @@ static void paint_down(struct paint_info *info, const struct object_id *oid, ...@@ -554,7 +555,8 @@ static void paint_down(struct paint_info *info, const struct object_id *oid,
static int mark_uninteresting(const char *refname, const struct object_id *oid, static int mark_uninteresting(const char *refname, const struct object_id *oid,
int flags, void *cb_data) int flags, void *cb_data)
{ {
struct commit *commit = lookup_commit_reference_gently(oid, 1); struct commit *commit = lookup_commit_reference_gently(the_repository,
oid, 1);
if (!commit) if (!commit)
return 0; return 0;
commit->object.flags |= UNINTERESTING; commit->object.flags |= UNINTERESTING;
...@@ -664,7 +666,8 @@ static int add_ref(const char *refname, const struct object_id *oid, ...@@ -664,7 +666,8 @@ static int add_ref(const char *refname, const struct object_id *oid,
{ {
struct commit_array *ca = cb_data; struct commit_array *ca = cb_data;
ALLOC_GROW(ca->commits, ca->nr + 1, ca->alloc); ALLOC_GROW(ca->commits, ca->nr + 1, ca->alloc);
ca->commits[ca->nr] = lookup_commit_reference_gently(oid, 1); ca->commits[ca->nr] = lookup_commit_reference_gently(the_repository,
oid, 1);
if (ca->commits[ca->nr]) if (ca->commits[ca->nr])
ca->nr++; ca->nr++;
return 0; return 0;
......
...@@ -207,7 +207,8 @@ static int interpret_target(struct walker *walker, char *target, struct object_i ...@@ -207,7 +207,8 @@ static int interpret_target(struct walker *walker, char *target, struct object_i
static int mark_complete(const char *path, const struct object_id *oid, static int mark_complete(const char *path, const struct object_id *oid,
int flag, void *cb_data) int flag, void *cb_data)
{ {
struct commit *commit = lookup_commit_reference_gently(oid, 1); struct commit *commit = lookup_commit_reference_gently(the_repository,
oid, 1);
if (commit) { if (commit) {
commit->object.flags |= COMPLETE; commit->object.flags |= COMPLETE;
......
...@@ -1489,7 +1489,7 @@ static void wt_status_get_detached_from(struct wt_status_state *state) ...@@ -1489,7 +1489,7 @@ static void wt_status_get_detached_from(struct wt_status_state *state)
/* sha1 is a commit? match without further lookup */ /* sha1 is a commit? match without further lookup */
(!oidcmp(&cb.noid, &oid) || (!oidcmp(&cb.noid, &oid) ||
/* perhaps sha1 is a tag, try to dereference to a commit */ /* perhaps sha1 is a tag, try to dereference to a commit */
((commit = lookup_commit_reference_gently(&oid, 1)) != NULL && ((commit = lookup_commit_reference_gently(the_repository, &oid, 1)) != NULL &&
!oidcmp(&cb.noid, &commit->object.oid)))) { !oidcmp(&cb.noid, &commit->object.oid)))) {
const char *from = ref; const char *from = ref;
if (!skip_prefix(from, "refs/tags/", &from)) if (!skip_prefix(from, "refs/tags/", &from))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment