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

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2015-12-08 21:12:27 +0300
committerEdward Thomson <ethomson@edwardthomson.com>2015-12-08 21:12:27 +0300
commitd698929cdd17b80e5c55a4f98c848f980c630cb1 (patch)
treedc95021859a43c65bd307d88dca652a930aae63f
parenta3dc4190e77ff794109c3ff2fbcb3fa87e5f7c48 (diff)
parentfc4364696556678f4cac4f6cefed17b94b4ec776 (diff)
Merge pull request #3537 from libgit2/cmn/tree-is-sorted
tree: mark a tree as already sorted
-rw-r--r--CHANGELOG.md4
-rw-r--r--src/tree.c3
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;
}