mirror of
				https://git.proxmox.com/git/libgit2
				synced 2025-10-31 19:49:16 +00:00 
			
		
		
		
	Add setter methods & write support for git_commit
All the required git_commit_set_XXX methods have been implemented; all the attributes of a commit object can now be modified in-memory. The new method git_object_write() automatically writes back the in-memory changes of any object to the repository. So far it only supports git_commit objects. Signed-off-by: Vicent Marti <tanoku@gmail.com>
This commit is contained in:
		
							parent
							
								
									e802d8cca8
								
							
						
					
					
						commit
						0c3596f18a
					
				
							
								
								
									
										222
									
								
								src/commit.c
									
									
									
									
									
								
							
							
						
						
									
										222
									
								
								src/commit.c
									
									
									
									
									
								
							| @ -29,6 +29,9 @@ | ||||
| #include "git/odb.h" | ||||
| #include "git/repository.h" | ||||
| 
 | ||||
| #define COMMIT_BASIC_PARSE 0x0 | ||||
| #define COMMIT_FULL_PARSE 0x1 | ||||
| 
 | ||||
| #define COMMIT_PRINT(commit) {\ | ||||
| 	char oid[41]; oid[40] = 0;\ | ||||
| 	git_oid_fmt(oid, &commit->object.id);\ | ||||
| @ -65,15 +68,16 @@ const git_oid *git_commit_id(git_commit *c) | ||||
| 	return &c->object.id; | ||||
| } | ||||
| 
 | ||||
| int git_commit__parse(git_commit *commit, unsigned int parse_flags, int close_db_object) | ||||
| int git_commit__parse(git_commit *commit) | ||||
| { | ||||
| 	const int close_db_object = 1; | ||||
| 	int error = 0; | ||||
| 
 | ||||
| 	if ((error = git_object__source_open((git_object *)commit)) < 0) | ||||
| 		return error; | ||||
| 
 | ||||
| 	error = git_commit__parse_buffer(commit, | ||||
| 			commit->object.source.raw.data, commit->object.source.raw.len, parse_flags); | ||||
| 			commit->object.source.raw.data, commit->object.source.raw.len, COMMIT_BASIC_PARSE); | ||||
| 
 | ||||
| 	if (close_db_object) | ||||
| 		git_object__source_close((git_object *)commit); | ||||
| @ -81,21 +85,23 @@ int git_commit__parse(git_commit *commit, unsigned int parse_flags, int close_db | ||||
| 	return error; | ||||
| } | ||||
| 
 | ||||
| int git_commit__parse_basic(git_commit *commit) | ||||
| int git_commit__parse_full(git_commit *commit) | ||||
| { | ||||
| 	int error; | ||||
| 
 | ||||
| 	if (commit->basic_parse) | ||||
| 	if (commit->full_parse) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	error = git_commit__parse(commit, | ||||
| 			(GIT_COMMIT_TREE | GIT_COMMIT_PARENTS | GIT_COMMIT_TIME), 1); | ||||
| 	if (git_object__source_open((git_object *)commit) < 0) | ||||
| 		return GIT_ERROR; | ||||
| 
 | ||||
| 	if (error < 0) | ||||
| 		return error; | ||||
| 	error = git_commit__parse_buffer(commit, | ||||
| 			commit->object.source.raw.data, commit->object.source.raw.len, COMMIT_FULL_PARSE); | ||||
| 
 | ||||
| 	commit->basic_parse = 1; | ||||
| 	return 0; | ||||
| 	git_object__source_close((git_object *)commit); | ||||
| 
 | ||||
| 	commit->full_parse = 1; | ||||
| 	return error; | ||||
| } | ||||
| 
 | ||||
| git_commit *git_commit_lookup(git_repository *repo, const git_oid *id) | ||||
| @ -162,6 +168,11 @@ int git__parse_person(git_person *person, char **buffer_out, | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int git__write_person(git_odb_source *src, const char *header, const git_person *person) | ||||
| { | ||||
| 	return git__source_printf(src, "%s %s <%s> %u\n", header, person->name, person->email, person->time); | ||||
| } | ||||
| 
 | ||||
| int git__parse_oid(git_oid *oid, char **buffer_out, | ||||
| 		const char *buffer_end, const char *header) | ||||
| { | ||||
| @ -187,6 +198,48 @@ int git__parse_oid(git_oid *oid, char **buffer_out, | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int git__write_oid(git_odb_source *src, const char *header, const git_oid *oid) | ||||
| { | ||||
| 	char hex_oid[41]; | ||||
| 
 | ||||
| 	git_oid_fmt(hex_oid, oid); | ||||
| 	hex_oid[40] = 0; | ||||
| 
 | ||||
| 	return git__source_printf(src, "%s %s\n", header, hex_oid); | ||||
| } | ||||
| 
 | ||||
| int git_commit__writeback(git_commit *commit, git_odb_source *src) | ||||
| { | ||||
| 	git_commit_parents *parent; | ||||
| 
 | ||||
| 	if (commit->tree == NULL) | ||||
| 		return GIT_ERROR; | ||||
| 
 | ||||
| 	git__write_oid(src, "tree", git_tree_id(commit->tree)); | ||||
| 
 | ||||
| 	parent = commit->parents; | ||||
| 
 | ||||
| 	while (parent != NULL) { | ||||
| 		git__write_oid(src, "parent", git_commit_id(parent->commit)); | ||||
| 		parent = parent->next; | ||||
| 	} | ||||
| 
 | ||||
| 	if (commit->author == NULL) | ||||
| 		return GIT_ERROR; | ||||
| 
 | ||||
| 	git__write_person(src, "author", commit->author); | ||||
| 
 | ||||
| 	if (commit->committer == NULL) | ||||
| 		return GIT_ERROR; | ||||
| 
 | ||||
| 	git__write_person(src, "committer", commit->committer); | ||||
| 
 | ||||
| 	if (commit->message != NULL) | ||||
| 		git__source_printf(src, "\n%s", commit->message); | ||||
| 
 | ||||
| 	return GIT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| int git_commit__parse_buffer(git_commit *commit, void *data, size_t len, unsigned int parse_flags) | ||||
| { | ||||
| 	char *buffer = (char *)data; | ||||
| @ -198,23 +251,18 @@ int git_commit__parse_buffer(git_commit *commit, void *data, size_t len, unsigne | ||||
| 	if (git__parse_oid(&oid, &buffer, buffer_end, "tree ") < 0) | ||||
| 		return GIT_EOBJCORRUPTED; | ||||
| 
 | ||||
| 	if (parse_flags & GIT_COMMIT_TREE) | ||||
| 		commit->tree = git_tree_lookup(commit->object.repo, &oid); | ||||
| 	commit->tree = git_tree_lookup(commit->object.repo, &oid); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * TODO: commit grafts! | ||||
| 	 */ | ||||
| 
 | ||||
| 	if (parse_flags & GIT_COMMIT_PARENTS) | ||||
| 		clear_parents(commit); | ||||
| 	clear_parents(commit); | ||||
| 
 | ||||
| 	while (git__parse_oid(&oid, &buffer, buffer_end, "parent ") == 0) { | ||||
| 		git_commit *parent; | ||||
| 		git_commit_parents *node; | ||||
| 
 | ||||
| 		if ((parse_flags & GIT_COMMIT_PARENTS) == 0) | ||||
| 			continue; | ||||
| 
 | ||||
| 		if ((parent = git_commit_lookup(commit->object.repo, &oid)) == NULL) | ||||
| 			return GIT_ENOTFOUND; | ||||
| 
 | ||||
| @ -229,7 +277,7 @@ int git_commit__parse_buffer(git_commit *commit, void *data, size_t len, unsigne | ||||
| 	if (git__parse_person(&person, &buffer, buffer_end, "author ") < 0) | ||||
| 		return GIT_EOBJCORRUPTED; | ||||
| 
 | ||||
| 	if (parse_flags & GIT_COMMIT_AUTHOR) { | ||||
| 	if (parse_flags & COMMIT_FULL_PARSE) { | ||||
| 		if (commit->author) | ||||
| 			free(commit->author); | ||||
| 
 | ||||
| @ -240,10 +288,9 @@ int git_commit__parse_buffer(git_commit *commit, void *data, size_t len, unsigne | ||||
| 	if (git__parse_person(&person, &buffer, buffer_end, "committer ") < 0) | ||||
| 		return GIT_EOBJCORRUPTED; | ||||
| 
 | ||||
| 	if (parse_flags & GIT_COMMIT_TIME) | ||||
| 		commit->commit_time = person.time; | ||||
| 	commit->commit_time = person.time; | ||||
| 
 | ||||
| 	if (parse_flags & GIT_COMMIT_COMMITTER) { | ||||
| 	if (parse_flags & COMMIT_FULL_PARSE) { | ||||
| 		if (commit->committer) | ||||
| 			free(commit->committer); | ||||
| 
 | ||||
| @ -255,82 +302,105 @@ int git_commit__parse_buffer(git_commit *commit, void *data, size_t len, unsigne | ||||
| 	while (buffer <= buffer_end && *buffer == '\n') | ||||
| 		buffer++; | ||||
| 
 | ||||
| 	if (buffer < buffer_end) | ||||
| 	{ | ||||
| 		if (parse_flags & GIT_COMMIT_MESSAGE) { | ||||
| 			size_t message_len = buffer_end - buffer; | ||||
| 	if (parse_flags & COMMIT_FULL_PARSE && buffer < buffer_end) { | ||||
| 		char *line_end; | ||||
| 		size_t message_len = buffer_end - buffer; | ||||
| 
 | ||||
| 			commit->message = git__malloc(message_len + 1); | ||||
| 			memcpy(commit->message, buffer, message_len); | ||||
| 			commit->message[message_len] = 0; | ||||
| 		} | ||||
| 		/* Short message */ | ||||
| 		message_len = buffer_end - buffer; | ||||
| 		commit->message = git__malloc(message_len + 1); | ||||
| 		memcpy(commit->message, buffer, message_len); | ||||
| 		commit->message[message_len] = 0; | ||||
| 
 | ||||
| 		if (parse_flags & GIT_COMMIT_MESSAGE_SHORT) { | ||||
| 			char *line_end; | ||||
| 			size_t message_len; | ||||
| 		/* Long message */ | ||||
| 		line_end = memchr(buffer, '\n', buffer_end - buffer); | ||||
| 		message_len = line_end - buffer; | ||||
| 
 | ||||
| 			line_end = memchr(buffer, '\n', buffer_end - buffer); | ||||
| 			message_len = line_end - buffer; | ||||
| 
 | ||||
| 			commit->message_short = git__malloc(message_len + 1); | ||||
| 			memcpy(commit->message_short, buffer, message_len); | ||||
| 			commit->message_short[message_len] = 0; | ||||
| 		} | ||||
| 		commit->message_short = git__malloc(message_len + 1); | ||||
| 		memcpy(commit->message_short, buffer, message_len); | ||||
| 		commit->message_short[message_len] = 0; | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| const git_tree *git_commit_tree(git_commit *commit) | ||||
| { | ||||
| 	if (commit->tree) | ||||
| 		return commit->tree; | ||||
| #define GIT_COMMIT_GETTER(_rvalue, _name) \ | ||||
| 	const _rvalue git_commit_##_name(git_commit *commit) \ | ||||
| 	{\ | ||||
| 		if (commit->_name) \ | ||||
| 			return commit->_name; \ | ||||
| 		git_commit__parse_full(commit); \ | ||||
| 		return commit->_name; \ | ||||
| 	} | ||||
| 
 | ||||
| 	git_commit__parse(commit, GIT_COMMIT_TREE, 0); | ||||
| 	return commit->tree; | ||||
| } | ||||
| 
 | ||||
| const git_person *git_commit_author(git_commit *commit) | ||||
| { | ||||
| 	if (commit->author) | ||||
| 		return commit->author; | ||||
| 
 | ||||
| 	git_commit__parse(commit, GIT_COMMIT_AUTHOR, 0); | ||||
| 	return commit->author; | ||||
| } | ||||
| 
 | ||||
| const git_person *git_commit_committer(git_commit *commit) | ||||
| { | ||||
| 	if (commit->committer) | ||||
| 		return commit->committer; | ||||
| 
 | ||||
| 	git_commit__parse(commit, GIT_COMMIT_COMMITTER, 0); | ||||
| 	return commit->committer; | ||||
| } | ||||
| GIT_COMMIT_GETTER(git_tree *, tree) | ||||
| GIT_COMMIT_GETTER(git_person *, author) | ||||
| GIT_COMMIT_GETTER(git_person *, committer) | ||||
| GIT_COMMIT_GETTER(char *, message) | ||||
| GIT_COMMIT_GETTER(char *, message_short) | ||||
| 
 | ||||
| time_t git_commit_time(git_commit *commit) | ||||
| { | ||||
| 	if (commit->commit_time) | ||||
| 		return commit->commit_time; | ||||
| 
 | ||||
| 	git_commit__parse(commit, GIT_COMMIT_TIME, 0); | ||||
| 	git_commit__parse_full(commit); | ||||
| 	return commit->commit_time; | ||||
| } | ||||
| 
 | ||||
| const char *git_commit_message(git_commit *commit) | ||||
| void git_commit_set_tree(git_commit *commit, git_tree *tree) | ||||
| { | ||||
| 	commit->object.modified = 1; | ||||
| 	commit->tree = tree; | ||||
| } | ||||
| 
 | ||||
| void git_commit_set_author(git_commit *commit, const git_person *author) | ||||
| { | ||||
| 	commit->object.modified = 1; | ||||
| 	if (commit->author == NULL) | ||||
| 		commit->author = git__malloc(sizeof(git_person)); | ||||
| 
 | ||||
| 	memcpy(commit->author, author, sizeof(git_person)); | ||||
| } | ||||
| 
 | ||||
| void git_commit_set_committer(git_commit *commit, const git_person *committer) | ||||
| { | ||||
| 	commit->object.modified = 1; | ||||
| 	if (commit->committer == NULL) | ||||
| 		commit->committer = git__malloc(sizeof(git_person)); | ||||
| 
 | ||||
| 	memcpy(commit->committer, committer, sizeof(git_person)); | ||||
| } | ||||
| 
 | ||||
| void git_commit_set_message(git_commit *commit, const char *message) | ||||
| { | ||||
| 	const char *short_message; | ||||
| 
 | ||||
| 	commit->object.modified = 1; | ||||
| 
 | ||||
| 	if (commit->message) | ||||
| 		return commit->message; | ||||
| 		free(commit->message); | ||||
| 
 | ||||
| 	git_commit__parse(commit, GIT_COMMIT_MESSAGE, 0); | ||||
| 	return commit->message; | ||||
| } | ||||
| 
 | ||||
| const char *git_commit_message_short(git_commit *commit) | ||||
| { | ||||
| 	if (commit->message_short) | ||||
| 		return commit->message_short; | ||||
| 		free(commit->message_short); | ||||
| 
 | ||||
| 	git_commit__parse(commit, GIT_COMMIT_MESSAGE_SHORT, 0); | ||||
| 	return commit->message_short; | ||||
| 	commit->message = git__strdup(message); | ||||
| 	commit->message_short = NULL; | ||||
| 
 | ||||
| 	/* TODO: extract short message */ | ||||
| } | ||||
| 
 | ||||
| void git_commit_add_parent(git_commit *commit, git_commit *new_parent) | ||||
| { | ||||
| 	git_commit_parents *node; | ||||
| 
 | ||||
| 	commit->object.modified = 1; | ||||
| 
 | ||||
| 	if ((node = git__malloc(sizeof(git_commit_parents))) == NULL) | ||||
| 		return; | ||||
| 
 | ||||
| 	node->commit = new_parent; | ||||
| 	node->next = commit->parents; | ||||
| 	commit->parents = node; | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										18
									
								
								src/commit.h
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/commit.h
									
									
									
									
									
								
							| @ -7,15 +7,6 @@ | ||||
| 
 | ||||
| #include <time.h> | ||||
| 
 | ||||
| #define GIT_COMMIT_TREE		(1 << 1) | ||||
| #define GIT_COMMIT_PARENTS	(1 << 2) | ||||
| #define GIT_COMMIT_AUTHOR	(1 << 3) | ||||
| #define GIT_COMMIT_COMMITTER (1 << 4) | ||||
| #define GIT_COMMIT_TIME		(1 << 5) | ||||
| #define GIT_COMMIT_MESSAGE	(1 << 6) | ||||
| #define GIT_COMMIT_MESSAGE_SHORT (1 << 7) | ||||
| #define GIT_COMMIT_FOOTERS	(1 << 8) | ||||
| 
 | ||||
| typedef struct git_commit_parents { | ||||
| 	git_commit *commit; | ||||
| 	struct git_commit_parents *next; | ||||
| @ -34,16 +25,17 @@ struct git_commit { | ||||
| 	char *message; | ||||
| 	char *message_short; | ||||
| 
 | ||||
| 	unsigned basic_parse:1, | ||||
| 			 odb_open:1; | ||||
| 	unsigned full_parse:1; | ||||
| }; | ||||
| 
 | ||||
| void git_commit__free(git_commit *c); | ||||
| int git_commit__parse(git_commit *commit, unsigned int flags, int close_odb); | ||||
| int git_commit__parse_basic(git_commit *commit); | ||||
| int git_commit__parse(git_commit *commit); | ||||
| int git_commit__parse_full(git_commit *commit); | ||||
| int git_commit__parse_buffer(git_commit *commit, void *data, size_t len, unsigned int parse_flags); | ||||
| void git_commit__mark_uninteresting(git_commit *commit); | ||||
| 
 | ||||
| int git_commit__writeback(git_commit *commit, git_odb_source *src); | ||||
| 
 | ||||
| int git__parse_oid(git_oid *oid, char **buffer_out, const char *buffer_end, const char *header); | ||||
| int git__parse_person(git_person *person, char **buffer_out, const char *buffer_end, const char *header); | ||||
| 
 | ||||
|  | ||||
| @ -79,6 +79,41 @@ GIT_EXTERN(const git_person *) git_commit_author(git_commit *commit); | ||||
|  */ | ||||
| GIT_EXTERN(const git_tree *) git_commit_tree(git_commit *commit); | ||||
| 
 | ||||
| /*
 | ||||
|  * Add a new parent commit to an existing commit | ||||
|  * @param commit the commit object | ||||
|  * @param new_parent the new commit which will be a parent | ||||
|  */ | ||||
| GIT_EXTERN(void) git_commit_add_parent(git_commit *commit, git_commit *new_parent); | ||||
| 
 | ||||
| /*
 | ||||
|  * Set the message of a commit | ||||
|  * @param commit the commit object | ||||
|  * @param message the new message | ||||
|  */ | ||||
| GIT_EXTERN(void) git_commit_set_message(git_commit *commit, const char *message); | ||||
| 
 | ||||
| /*
 | ||||
|  * Set the committer of a commit | ||||
|  * @param commit the commit object | ||||
|  * @param committer the new committer | ||||
|  */ | ||||
| GIT_EXTERN(void) git_commit_set_committer(git_commit *commit, const git_person *committer); | ||||
| 
 | ||||
| /*
 | ||||
|  * Set the author of a commit | ||||
|  * @param commit the commit object | ||||
|  * @param author the new author | ||||
|  */ | ||||
| GIT_EXTERN(void) git_commit_set_author(git_commit *commit, const git_person *author); | ||||
| 
 | ||||
| /*
 | ||||
|  * Set the tree which is pointed to by a commit | ||||
|  * @param commit the commit object | ||||
|  * @param tree the new tree | ||||
|  */ | ||||
| GIT_EXTERN(void) git_commit_set_tree(git_commit *commit, git_tree *tree); | ||||
| 
 | ||||
| /** @} */ | ||||
| GIT_END_DECL | ||||
| #endif | ||||
|  | ||||
| @ -1446,6 +1446,9 @@ int git_odb_read( | ||||
| 	const git_oid *id) | ||||
| { | ||||
| attempt: | ||||
| 
 | ||||
| 	assert(out && db); | ||||
| 
 | ||||
| 	if (!git_odb__read_packed(out, db, id)) | ||||
| 		return GIT_SUCCESS; | ||||
| 	if (!git_odb__read_loose(out, db, id)) | ||||
|  | ||||
| @ -205,6 +205,8 @@ int git_object__source_writeback(git_object *object) | ||||
| 	object->source.write_ptr = NULL; | ||||
| 	object->source.written_bytes = 0; | ||||
| 
 | ||||
| 	object->modified = 0; | ||||
| 
 | ||||
| 	git_object__source_close(object); | ||||
| 	return GIT_SUCCESS; | ||||
| } | ||||
| @ -241,6 +243,38 @@ void git_object__source_close(git_object *object) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| int git_object_write(git_object *object) | ||||
| { | ||||
| 	int error; | ||||
| 	git_odb_source *source; | ||||
| 
 | ||||
| 	assert(object); | ||||
| 
 | ||||
| 	if (object->modified == 0) | ||||
| 		return GIT_SUCCESS; | ||||
| 
 | ||||
| 	git_object__source_prepare_write(object); | ||||
| 	source = &object->source; | ||||
| 
 | ||||
| 	switch (source->raw.type) { | ||||
| 	case GIT_OBJ_COMMIT: | ||||
| 		error = git_commit__writeback((git_commit *)object, source); | ||||
| 		break; | ||||
| 
 | ||||
| 	case GIT_OBJ_TREE: | ||||
| 	case GIT_OBJ_TAG: | ||||
| 	default: | ||||
| 		error = GIT_ERROR; | ||||
| 	} | ||||
| 
 | ||||
| 	if (error < 0) { | ||||
| 		git_object__source_close(object); | ||||
| 		return error; | ||||
| 	} | ||||
| 	 | ||||
| 	return git_object__source_writeback(object); | ||||
| } | ||||
| 
 | ||||
| void git_object_free(git_object *object) | ||||
| { | ||||
| 	assert(object); | ||||
| @ -328,7 +362,7 @@ git_object *git_repository_lookup(git_repository *repo, const git_oid *id, git_o | ||||
| 	switch (type) { | ||||
| 
 | ||||
| 	case GIT_OBJ_COMMIT: | ||||
| 		if (git_commit__parse_basic((git_commit *)object) < 0) { | ||||
| 		if (git_commit__parse((git_commit *)object) < 0) { | ||||
| 			free(object); | ||||
| 			return NULL; | ||||
| 		} | ||||
|  | ||||
| @ -19,6 +19,7 @@ struct git_object { | ||||
| 	git_oid id; | ||||
| 	git_repository *repo; | ||||
| 	git_odb_source source; | ||||
| 	int in_memory:1, modified:1; | ||||
| }; | ||||
| 
 | ||||
| struct git_repository { | ||||
|  | ||||
| @ -98,11 +98,6 @@ static git_revwalk_commit *commit_to_walkcommit(git_revwalk *walk, git_commit *c | ||||
| 	if (commit != NULL) | ||||
| 		return commit; | ||||
| 
 | ||||
| 	if (!commit_object->basic_parse) { | ||||
| 		if (git_commit__parse_basic(commit_object) < 0) | ||||
| 			return NULL; | ||||
| 	} | ||||
| 
 | ||||
| 	commit = git__malloc(sizeof(git_revwalk_commit)); | ||||
| 	if (commit == NULL) | ||||
| 		return NULL; | ||||
| @ -135,8 +130,6 @@ static git_revwalk_commit *insert_commit(git_revwalk *walk, git_commit *commit_o | ||||
| 
 | ||||
| 	commit->seen = 1; | ||||
| 
 | ||||
| 	assert(commit->commit_object->basic_parse); | ||||
| 
 | ||||
| 	for (parents = commit->commit_object->parents; parents != NULL; parents = parents->next) { | ||||
| 		git_revwalk_commit *parent; | ||||
| 
 | ||||
|  | ||||
| @ -5,6 +5,8 @@ | ||||
| #include <git/commit.h> | ||||
| #include <git/revwalk.h> | ||||
| 
 | ||||
| static const char *odb_dir = "../resources/pack-odb"; | ||||
| 
 | ||||
| static char *test_commits_broken[] = { | ||||
| 
 | ||||
| /* empty commit */ | ||||
| @ -58,21 +60,20 @@ par", | ||||
| 
 | ||||
| static char *test_commits_working[] = { | ||||
| /* simple commit with no message */ | ||||
| "tree f6c0dad3c7b3481caa9d73db21f91964894a945b\n\
 | ||||
| "tree 1810dff58d8a660512d4832e740f692884338ccd\n\
 | ||||
| author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\ | ||||
| committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\ | ||||
| \n", | ||||
| 
 | ||||
| /* simple commit, no parent */ | ||||
| "tree f6c0dad3c7b3481caa9d73db21f91964894a945b\n\
 | ||||
| "tree 1810dff58d8a660512d4832e740f692884338ccd\n\
 | ||||
| author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\ | ||||
| committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\ | ||||
| \n\ | ||||
| a simple commit which works\n", | ||||
| 
 | ||||
| /* simple commit, 1 parents */ | ||||
| "tree f6c0dad3c7b3481caa9d73db21f91964894a945b\n\
 | ||||
| parent a4a7dce85cf63874e984719f4fdd239f5145052f\n\ | ||||
| "tree 1810dff58d8a660512d4832e740f692884338ccd\n\
 | ||||
| author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\ | ||||
| committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\ | ||||
| \n\ | ||||
| @ -216,16 +217,13 @@ BEGIN_TEST(parse_buffer_test) | ||||
| 	const int broken_commit_count = sizeof(test_commits_broken) / sizeof(*test_commits_broken); | ||||
| 	const int working_commit_count = sizeof(test_commits_working) / sizeof(*test_commits_working); | ||||
| 
 | ||||
| 	const unsigned int default_flags =  | ||||
| 		GIT_COMMIT_AUTHOR |  | ||||
| 		GIT_COMMIT_COMMITTER |  | ||||
| 		GIT_COMMIT_TIME | | ||||
| 		GIT_COMMIT_MESSAGE | | ||||
| 		GIT_COMMIT_MESSAGE_SHORT; /* parse everything */ | ||||
| 
 | ||||
| 	int i; | ||||
| 	git_repository *repo = git_repository_alloc(NULL); | ||||
| 	git_repository *repo; | ||||
| 	git_odb *db; | ||||
| 
 | ||||
| 	must_pass(git_odb_open(&db, odb_dir)); | ||||
| 
 | ||||
| 	repo = git_repository_alloc(db); | ||||
| 	must_be_true(repo != NULL); | ||||
| 
 | ||||
| 	for (i = 0; i < broken_commit_count; ++i) { | ||||
| @ -238,7 +236,7 @@ BEGIN_TEST(parse_buffer_test) | ||||
| 					commit, | ||||
| 					test_commits_broken[i], | ||||
| 					strlen(test_commits_broken[i]), | ||||
| 					default_flags) | ||||
| 					0x1) | ||||
| 				); | ||||
| 
 | ||||
| 		git_commit__free(commit); | ||||
| @ -254,7 +252,7 @@ BEGIN_TEST(parse_buffer_test) | ||||
| 					commit, | ||||
| 					test_commits_working[i], | ||||
| 					strlen(test_commits_working[i]), | ||||
| 					default_flags) | ||||
| 					0x1) | ||||
| 				); | ||||
| 
 | ||||
| 		git_commit__free(commit); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Vicent Marti
						Vicent Marti