diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2015-12-08 13:12:27 -0500 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2015-12-08 13:12:27 -0500 |
commit | d698929cdd17b80e5c55a4f98c848f980c630cb1 (patch) | |
tree | dc95021859a43c65bd307d88dca652a930aae63f | |
parent | a3dc4190e77ff794109c3ff2fbcb3fa87e5f7c48 (diff) | |
parent | fc4364696556678f4cac4f6cefed17b94b4ec776 (diff) | |
download | libgit2-d698929cdd17b80e5c55a4f98c848f980c630cb1.tar.gz |
Merge pull request #3537 from libgit2/cmn/tree-is-sorted
tree: mark a tree as already sorted
-rw-r--r-- | CHANGELOG.md | 4 | ||||
-rw-r--r-- | src/tree.c | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 196ad705a..a2dd76eba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ v0.23 + 1 * You can now set your own user-agent to be sent for HTTP requests by using the `GIT_OPT_SET_USER_AGENT` with `git_libgit2_opts()`. +* Tree objects are now assumed to be sorted. If a tree is not + correctly formed, it will give bad results. This is the git approach + and cuts a significant amount of time when reading the trees. + ### API additions * `git_config_lock()` has been added, which allow for diff --git a/src/tree.c b/src/tree.c index 2de8e72e1..aab4b58ad 100644 --- a/src/tree.c +++ b/src/tree.c @@ -476,7 +476,8 @@ int git_tree__parse(void *_tree, git_odb_object *odb_obj) buffer += GIT_OID_RAWSZ; } - git_vector_sort(&tree->entries); + /* The tree is sorted by definition. Bad inputs give bad outputs */ + tree->entries.flags |= GIT_VECTOR_SORTED; return 0; } |