From 7cc1bf0fcb6de212dc50e02ff187880af9103bf4 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Thu, 8 Nov 2012 21:08:59 +0100 Subject: [PATCH] index: Introduce git_index_has_conflicts() --- include/git2/index.h | 7 +++++++ src/index.c | 15 +++++++++++++++ tests-clar/index/conflicts.c | 4 ++++ 3 files changed, 26 insertions(+) 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++) {