Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commit.c20
-rw-r--r--commit.h2
2 files changed, 22 insertions, 0 deletions
diff --git a/commit.c b/commit.c
index aa3b35b6a8..8f6b703c55 100644
--- a/commit.c
+++ b/commit.c
@@ -316,6 +316,26 @@ int parse_commit(struct commit *item)
return ret;
}
+static void unparse_commit_list(struct commit_list *list)
+{
+ for (; list; list = list->next)
+ unparse_commit(list->item);
+}
+
+void unparse_commit(struct commit *item)
+{
+ item->object.flags = 0;
+ item->object.used = 0;
+ if (item->object.parsed) {
+ item->object.parsed = 0;
+ if (item->parents) {
+ unparse_commit_list(item->parents);
+ free_commit_list(item->parents);
+ item->parents = NULL;
+ }
+ }
+}
+
struct commit_list *commit_list_insert(struct commit *item, struct commit_list **list_p)
{
struct commit_list *new_list = xmalloc(sizeof(struct commit_list));
diff --git a/commit.h b/commit.h
index ba9f63813e..f3eaf1d048 100644
--- a/commit.h
+++ b/commit.h
@@ -40,6 +40,8 @@ int parse_commit_buffer(struct commit *item, void *buffer, unsigned long size);
int parse_commit(struct commit *item);
+void unparse_commit(struct commit *item);
+
struct commit_list * commit_list_insert(struct commit *item, struct commit_list **list_p);
unsigned commit_list_count(const struct commit_list *l);
struct commit_list * insert_by_date(struct commit *item, struct commit_list **list);