commit - 789689b5b94d139f77bc2e81da9e15dd09f06dbb
commit + 9c70d4c367dc7b0c2ddb35194d08d31c90a55af9
blob - 53130a9705a6e99fa2705edcd9e451af82e24bd5
blob + 41a07be233fabf00a8ada2f08d82759fbba28327
--- lib/diff.c
+++ lib/diff.c
}
static const struct got_error *
-diff_added_tree(struct got_object_id *id)
+diff_added_tree(struct got_object_id *id, struct got_repository *repo)
{
- return NULL;
+ const struct got_error *err = NULL;
+ struct got_object *treeobj = NULL;
+ struct got_tree_object *tree = NULL;
+
+ err = got_object_open(&treeobj, repo, id);
+ if (err)
+ goto done;
+
+ if (treeobj->type != GOT_OBJ_TYPE_TREE) {
+ err = got_error(GOT_ERR_OBJ_TYPE);
+ goto done;
+ }
+
+ err = got_object_tree_open(&tree, repo, treeobj);
+ if (err)
+ goto done;
+
+ err = got_diff_tree(NULL, tree, repo);
+
+done:
+ if (tree)
+ got_object_tree_close(tree);
+ if (treeobj)
+ got_object_close(treeobj);
+ return err;
}
static const struct got_error *
return NULL;
if (S_ISDIR(te2->mode))
- return diff_added_tree(&te2->id);
+ return diff_added_tree(&te2->id, repo);
return diff_added_blob(&te2->id, repo);
}