зеркало из https://github.com/microsoft/git.git
Make "parse_object()" also fill in commit message buffer data.
And teach fsck to free it to save memory.
This commit is contained in:
Родитель
a6f68d4767
Коммит
bd1e17e245
2
commit.h
2
commit.h
|
@ -14,7 +14,7 @@ struct commit {
|
|||
unsigned long date;
|
||||
struct commit_list *parents;
|
||||
struct tree *tree;
|
||||
const char *buffer;
|
||||
char *buffer;
|
||||
};
|
||||
|
||||
extern const char *commit_type;
|
||||
|
|
|
@ -203,6 +203,8 @@ static int fsck_tree(struct tree *item)
|
|||
|
||||
static int fsck_commit(struct commit *commit)
|
||||
{
|
||||
free(commit->buffer);
|
||||
commit->buffer = NULL;
|
||||
if (!commit->tree)
|
||||
return -1;
|
||||
if (!commit->parents && show_root)
|
||||
|
|
4
object.c
4
object.c
|
@ -129,6 +129,10 @@ struct object *parse_object(unsigned char *sha1)
|
|||
} else if (!strcmp(type, "commit")) {
|
||||
struct commit *commit = lookup_commit(sha1);
|
||||
parse_commit_buffer(commit, buffer, size);
|
||||
if (!commit->buffer) {
|
||||
commit->buffer = buffer;
|
||||
buffer = NULL;
|
||||
}
|
||||
obj = &commit->object;
|
||||
} else if (!strcmp(type, "tag")) {
|
||||
struct tag *tag = lookup_tag(sha1);
|
||||
|
|
Загрузка…
Ссылка в новой задаче