1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-31 00:16:20 +02:00

blame.c: remove implicit dependency the_repository

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Nguyễn Thái Ngọc Duy 2018-11-10 06:48:58 +01:00 committed by Junio C Hamano
parent 005af339c9
commit fb998eae6c

39
blame.c
View File

@ -116,35 +116,38 @@ static void verify_working_tree_path(struct repository *r,
die("no such path '%s' in HEAD", path); 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; struct commit *parent;
parent = lookup_commit_reference(the_repository, oid); parent = lookup_commit_reference(r, oid);
if (!parent) if (!parent)
die("no such commit %s", oid_to_hex(oid)); die("no such commit %s", oid_to_hex(oid));
return &commit_list_insert(parent, tail)->next; 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; int merge_head;
struct strbuf line = STRBUF_INIT; 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 (merge_head < 0) {
if (errno == ENOENT) if (errno == ENOENT)
return; return;
die("cannot open '%s' for reading", 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')) { while (!strbuf_getwholeline_fd(&line, merge_head, '\n')) {
struct object_id oid; struct object_id oid;
if (line.len < GIT_SHA1_HEXSZ || get_oid_hex(line.buf, &oid)) if (line.len < GIT_SHA1_HEXSZ || get_oid_hex(line.buf, &oid))
die("unknown line in '%s': %s", die("unknown line in '%s': %s",
git_path_merge_head(the_repository), line.buf); git_path_merge_head(r), line.buf);
tail = append_parent(tail, &oid); tail = append_parent(r, tail, &oid);
} }
close(merge_head); close(merge_head);
strbuf_release(&line); 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 * want to transfer ownership of the buffer to the commit (so we
* must use detach). * 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; size_t len;
void *buf = strbuf_detach(sb, &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); read_index(r->index);
time(&now); time(&now);
commit = alloc_commit_node(the_repository); commit = alloc_commit_node(r);
commit->object.parsed = 1; commit->object.parsed = 1;
commit->date = now; commit->date = now;
parent_tail = &commit->parents; 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)) if (!resolve_ref_unsafe("HEAD", RESOLVE_REF_READING, &head_oid, NULL))
die("no such ref: HEAD"); die("no such ref: HEAD");
parent_tail = append_parent(parent_tail, &head_oid); parent_tail = append_parent(r, parent_tail, &head_oid);
append_merge_parents(parent_tail); append_merge_parents(r, parent_tail);
verify_working_tree_path(r, commit, path); verify_working_tree_path(r, commit, path);
origin = make_origin(commit, path); origin = make_origin(commit, path);
@ -211,7 +216,7 @@ static struct commit *fake_working_tree_commit(struct repository *r,
ident, ident, path, ident, ident, path,
(!contents_from ? path : (!contents_from ? path :
(!strcmp(contents_from, "-") ? "standard input" : contents_from))); (!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)) { if (!contents_from || strcmp("-", contents_from)) {
struct stat st; 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; struct object *obj = revs->pending.objects[i].item;
if (obj->flags & UNINTERESTING) if (obj->flags & UNINTERESTING)
continue; continue;
obj = deref_tag(the_repository, obj, NULL, 0); obj = deref_tag(revs->repo, obj, NULL, 0);
if (obj->type != OBJ_COMMIT) if (obj->type != OBJ_COMMIT)
die("Non commit %s?", revs->pending.objects[i].name); die("Non commit %s?", revs->pending.objects[i].name);
if (found) if (found)
@ -1709,14 +1714,14 @@ static struct commit *dwim_reverse_initial(struct rev_info *revs,
/* Is that sole rev a committish? */ /* Is that sole rev a committish? */
obj = revs->pending.objects[0].item; 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) if (obj->type != OBJ_COMMIT)
return NULL; return NULL;
/* 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(the_repository, head_commit = lookup_commit_reference_gently(revs->repo,
&head_oid, 1); &head_oid, 1);
if (!head_commit) if (!head_commit)
return NULL; return NULL;
@ -1745,7 +1750,7 @@ static struct commit *find_single_initial(struct rev_info *revs,
struct object *obj = revs->pending.objects[i].item; struct object *obj = revs->pending.objects[i].item;
if (!(obj->flags & UNINTERESTING)) if (!(obj->flags & UNINTERESTING))
continue; continue;
obj = deref_tag(the_repository, obj, NULL, 0); obj = deref_tag(revs->repo, obj, NULL, 0);
if (obj->type != OBJ_COMMIT) if (obj->type != OBJ_COMMIT)
die("Non commit %s?", revs->pending.objects[i].name); die("Non commit %s?", revs->pending.objects[i].name);
if (found) if (found)