mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-06 00:32:30 +00:00
Merge pull request #3549 from libgit2/vmg/index-fill
merge: Use `git_index__fill` to populate the index
This commit is contained in:
commit
f824259e67
37
src/index.c
37
src/index.c
@ -1542,6 +1542,43 @@ int git_index_remove_bypath(git_index *index, const char *path)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int git_index__fill(git_index *index, const git_vector *source_entries)
|
||||
{
|
||||
const git_index_entry *source_entry = NULL;
|
||||
size_t i;
|
||||
int ret = 0;
|
||||
|
||||
assert(index);
|
||||
|
||||
if (git_mutex_lock(&index->lock) < 0) {
|
||||
giterr_set(GITERR_OS, "Unable to acquire index lock");
|
||||
return -1;
|
||||
}
|
||||
|
||||
git_vector_foreach(source_entries, i, source_entry) {
|
||||
git_index_entry *entry = NULL;
|
||||
|
||||
if ((ret = index_entry_dup(&entry, index, source_entry)) < 0)
|
||||
break;
|
||||
|
||||
entry->flags_extended |= GIT_IDXENTRY_UPTODATE;
|
||||
|
||||
ret = git_vector_insert(&index->entries, entry);
|
||||
if (ret < 0)
|
||||
break;
|
||||
|
||||
INSERT_IN_MAP(index, entry, ret);
|
||||
if (ret < 0)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!ret)
|
||||
git_vector_sort(&index->entries);
|
||||
|
||||
git_mutex_unlock(&index->lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int git_index_add(git_index *index, const git_index_entry *source_entry)
|
||||
{
|
||||
|
@ -113,6 +113,8 @@ GIT_INLINE(bool) git_index_entry_newer_than_index(
|
||||
extern int git_index__find_pos(
|
||||
size_t *at_pos, git_index *index, const char *path, size_t path_len, int stage);
|
||||
|
||||
extern int git_index__fill(git_index *index, const git_vector *source_entries);
|
||||
|
||||
extern void git_index__set_ignore_case(git_index *index, bool ignore_case);
|
||||
|
||||
extern unsigned int git_index__create_mode(unsigned int mode);
|
||||
|
@ -1739,7 +1739,6 @@ static int index_from_diff_list(git_index **out,
|
||||
{
|
||||
git_index *index;
|
||||
size_t i;
|
||||
git_index_entry *entry;
|
||||
git_merge_diff *conflict;
|
||||
int error = 0;
|
||||
|
||||
@ -1748,10 +1747,8 @@ static int index_from_diff_list(git_index **out,
|
||||
if ((error = git_index_new(&index)) < 0)
|
||||
return error;
|
||||
|
||||
git_vector_foreach(&diff_list->staged, i, entry) {
|
||||
if ((error = git_index_add(index, entry)) < 0)
|
||||
goto on_error;
|
||||
}
|
||||
if ((error = git_index__fill(index, &diff_list->staged)) < 0)
|
||||
goto on_error;
|
||||
|
||||
git_vector_foreach(&diff_list->conflicts, i, conflict) {
|
||||
const git_index_entry *ancestor =
|
||||
|
Loading…
Reference in New Issue
Block a user