Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- blame.c | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/blame.c b/blame.c index d84c937780..43861437f7 100644 --- a/blame.c +++ b/blame.c @@ -116,35 +116,38 @@ static void verify_working_tree_path(struct repository *r, die("no such path '%s' in HEAD", path); } -static struct commit_list **append_parent(struct commit_list **tail, const struct object_id *oid) +static struct commit_list **append_parent(struct repository *r, + struct commit_list **tail, + const struct object_id *oid) { struct commit *parent; - parent = lookup_commit_reference(the_repository, oid); + parent = lookup_commit_reference(r, oid); if (!parent) die("no such commit %s", oid_to_hex(oid)); return &commit_list_insert(parent, tail)->next; } -static void append_merge_parents(struct commit_list **tail) +static void append_merge_parents(struct repository *r, + struct commit_list **tail) { int merge_head; struct strbuf line = STRBUF_INIT; - merge_head = open(git_path_merge_head(the_repository), O_RDONLY); + merge_head = open(git_path_merge_head(r), O_RDONLY); if (merge_head < 0) { if (errno == ENOENT) return; die("cannot open '%s' for reading", - git_path_merge_head(the_repository)); + git_path_merge_head(r)); } while (!strbuf_getwholeline_fd(&line, merge_head, '\n')) { struct object_id oid; if (line.len < GIT_SHA1_HEXSZ || get_oid_hex(line.buf, &oid)) die("unknown line in '%s': %s", - git_path_merge_head(the_repository), line.buf); - tail = append_parent(tail, &oid); + git_path_merge_head(r), line.buf); + tail = append_parent(r, tail, &oid); } close(merge_head); strbuf_release(&line); @@ -155,11 +158,13 @@ static void append_merge_parents(struct commit_list **tail) * want to transfer ownership of the buffer to the commit (so we * must use detach). */ -static void set_commit_buffer_from_strbuf(struct commit *c, struct strbuf *sb) +static void set_commit_buffer_from_strbuf(struct repository *r, + struct commit *c, + struct strbuf *sb) { size_t len; void *buf = strbuf_detach(sb, &len); - set_commit_buffer(the_repository, c, buf, len); + set_commit_buffer(r, c, buf, len); } /* @@ -185,7 +190,7 @@ static struct commit *fake_working_tree_commit(struct repository *r, read_index(r->index); time(&now); - commit = alloc_commit_node(the_repository); + commit = alloc_commit_node(r); commit->object.parsed = 1; commit->date = now; parent_tail = &commit->parents; @@ -193,8 +198,8 @@ static struct commit *fake_working_tree_commit(struct repository *r, if (!resolve_ref_unsafe("HEAD", RESOLVE_REF_READING, &head_oid, NULL)) die("no such ref: HEAD"); - parent_tail = append_parent(parent_tail, &head_oid); - append_merge_parents(parent_tail); + parent_tail = append_parent(r, parent_tail, &head_oid); + append_merge_parents(r, parent_tail); verify_working_tree_path(r, commit, path); origin = make_origin(commit, path); @@ -211,7 +216,7 @@ static struct commit *fake_working_tree_commit(struct repository *r, ident, ident, path, (!contents_from ? path : (!strcmp(contents_from, "-") ? "standard input" : contents_from))); - set_commit_buffer_from_strbuf(commit, &msg); + set_commit_buffer_from_strbuf(r, commit, &msg); if (!contents_from || strcmp("-", contents_from)) { struct stat st; @@ -1678,7 +1683,7 @@ static struct commit *find_single_final(struct rev_info *revs, struct object *obj = revs->pending.objects[i].item; if (obj->flags & UNINTERESTING) continue; - obj = deref_tag(the_repository, obj, NULL, 0); + obj = deref_tag(revs->repo, obj, NULL, 0); if (obj->type != OBJ_COMMIT) die("Non commit %s?", revs->pending.objects[i].name); if (found) @@ -1709,14 +1714,14 @@ static struct commit *dwim_reverse_initial(struct rev_info *revs, /* Is that sole rev a committish? */ obj = revs->pending.objects[0].item; - obj = deref_tag(the_repository, obj, NULL, 0); + obj = deref_tag(revs->repo, obj, NULL, 0); if (obj->type != OBJ_COMMIT) return NULL; /* Do we have HEAD? */ if (!resolve_ref_unsafe("HEAD", RESOLVE_REF_READING, &head_oid, NULL)) return NULL; - head_commit = lookup_commit_reference_gently(the_repository, + head_commit = lookup_commit_reference_gently(revs->repo, &head_oid, 1); if (!head_commit) return NULL; @@ -1745,7 +1750,7 @@ static struct commit *find_single_initial(struct rev_info *revs, struct object *obj = revs->pending.objects[i].item; if (!(obj->flags & UNINTERESTING)) continue; - obj = deref_tag(the_repository, obj, NULL, 0); + obj = deref_tag(revs->repo, obj, NULL, 0); if (obj->type != OBJ_COMMIT) die("Non commit %s?", revs->pending.objects[i].name); if (found) -- 2.19.1.1231.g84aef82467