From 5425097f0368c43e72210c33b844cf7350843c37 Mon Sep 17 00:00:00 2001 From: "Scott J. Goldman" Date: Thu, 24 Jan 2013 18:53:08 -0800 Subject: [PATCH] index: Speed up loading a tree into the index The index is empty; repeated tree entries cannot collide. cc github/gitrpc#83 --- src/index.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/index.c b/src/index.c index 76384288e..e9dffab8d 100644 --- a/src/index.c +++ b/src/index.c @@ -386,8 +386,7 @@ int git_index_set_caps(git_index *index, unsigned int caps) index->no_symlinks = ((caps & GIT_INDEXCAP_NO_SYMLINKS) != 0); } - if (old_ignore_case != index->ignore_case) - { + if (old_ignore_case != index->ignore_case) { index_set_ignore_case(index, index->ignore_case); } @@ -1649,10 +1648,16 @@ static int read_tree_cb(const char *root, const git_tree_entry *tentry, void *da entry->mode = tentry->attr; entry->oid = tentry->oid; + + if (path.size < GIT_IDXENTRY_NAMEMASK) + entry->flags = path.size & GIT_IDXENTRY_NAMEMASK; + else + entry->flags = GIT_IDXENTRY_NAMEMASK; + entry->path = git_buf_detach(&path); git_buf_free(&path); - if (index_insert(index, entry, 0) < 0) { + if (git_vector_insert(&index->entries, entry) < 0) { index_entry_free(entry); return -1; }