]> git.proxmox.com Git - libgit2.git/commitdiff
index: introduce git_index_uniq() function
authorKirill A. Shutemov <kirill@shutemov.name>
Fri, 1 Jul 2011 22:08:42 +0000 (01:08 +0300)
committerKirill A. Shutemov <kirill@shutemov.name>
Tue, 5 Jul 2011 14:52:39 +0000 (17:52 +0300)
It removes all entries with equal path except last added.

On large indexes git_index_append() + git_index_uniq() before writing is
*much* faster, than git_index_add().

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
include/git2/index.h
src/index.c

index 83a18e1607c2338846705e1680a010f84ac3d55a..d34ed0a92b794ae9c4ea89446da4ce30d3e3b261 100644 (file)
@@ -172,6 +172,13 @@ GIT_EXTERN(int) git_index_write(git_index *index);
  */
 GIT_EXTERN(int) git_index_find(git_index *index, const char *path);
 
+/**
+ * Remove all entries with equal path except last added
+ *
+ * @param index an existing index object
+ */
+GIT_EXTERN(void) git_index_uniq(git_index *index);
+
 /**
  * Add or update an index entry from a file in disk
  *
index fd905d0076a4016a3681f6d4846b016f06ad9920..dd33db92a191dc503a5a7fa70a18121e860533b0 100644 (file)
@@ -487,6 +487,11 @@ int git_index_find(git_index *index, const char *path)
        return git_vector_bsearch2(&index->entries, index_srch, path);
 }
 
+void git_index_uniq(git_index *index)
+{
+       git_vector_uniq(&index->entries);
+}
+
 const git_index_entry_unmerged *git_index_get_unmerged_bypath(git_index *index, const char *path)
 {
        int pos;