summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2012-11-08 21:08:59 +0100
committernulltoken <emeric.fermas@gmail.com>2012-11-08 21:16:48 +0100
commit7cc1bf0fcb6de212dc50e02ff187880af9103bf4 (patch)
treebf2800a5b62ac15881a0bc8670543bf7231f0ffd
parent29cc374d2e8a73c458805f8e76a286b8b688b80e (diff)
downloadlibgit2-7cc1bf0fcb6de212dc50e02ff187880af9103bf4.tar.gz
index: Introduce git_index_has_conflicts()
-rw-r--r--include/git2/index.h7
-rw-r--r--src/index.c15
-rw-r--r--tests-clar/index/conflicts.c4
3 files changed, 26 insertions, 0 deletions
diff --git a/include/git2/index.h b/include/git2/index.h
index bca9791c5..1efca72b5 100644
--- a/include/git2/index.h
+++ b/include/git2/index.h
@@ -431,6 +431,13 @@ GIT_EXTERN(int) git_index_conflict_remove(git_index *index, const char *path);
*/
GIT_EXTERN(void) git_index_conflict_cleanup(git_index *index);
+/**
+ * Determine if the index contains entries representing file conflicts.
+ *
+ * @return 1 if at least one conflict is found, 0 otherwise.
+ */
+GIT_EXTERN(int) git_index_has_conflicts(git_index *index);
+
/**@}*/
/** @name Resolve Undo (REUC) index entry manipulation.
diff --git a/src/index.c b/src/index.c
index 214d29def..0a1cd03f0 100644
--- a/src/index.c
+++ b/src/index.c
@@ -959,6 +959,21 @@ void git_index_conflict_cleanup(git_index *index)
git_vector_remove_matching(&index->entries, index_conflicts_match);
}
+int git_index_has_conflicts(git_index *index)
+{
+ unsigned int i;
+ git_index_entry *entry;
+
+ assert(index);
+
+ git_vector_foreach(&index->entries, i, entry) {
+ if (index_entry_stage(entry) > 0)
+ return 1;
+ }
+
+ return 0;
+}
+
unsigned int git_index_reuc_entrycount(git_index *index)
{
assert(index);
diff --git a/tests-clar/index/conflicts.c b/tests-clar/index/conflicts.c
index 59df257c5..e101b1659 100644
--- a/tests-clar/index/conflicts.c
+++ b/tests-clar/index/conflicts.c
@@ -180,8 +180,12 @@ void test_index_conflicts__remove_all_conflicts(void)
cl_assert(git_index_entrycount(repo_index) == 8);
+ cl_assert_equal_i(true, git_index_has_conflicts(repo_index));
+
git_index_conflict_cleanup(repo_index);
+ cl_assert_equal_i(false, git_index_has_conflicts(repo_index));
+
cl_assert(git_index_entrycount(repo_index) == 2);
for (i = 0; i < git_index_entrycount(repo_index); i++) {