mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-06 17:20:22 +00:00
Merge pull request #1220 from ethomson/reuc_empty_sides
REUC needs to handle empty sides
This commit is contained in:
commit
48de3061d1
@ -616,13 +616,13 @@ static int index_entry_reuc_init(git_index_reuc_entry **reuc_out,
|
|||||||
if (reuc->path == NULL)
|
if (reuc->path == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
reuc->mode[0] = ancestor_mode;
|
if ((reuc->mode[0] = ancestor_mode) > 0)
|
||||||
git_oid_cpy(&reuc->oid[0], ancestor_oid);
|
git_oid_cpy(&reuc->oid[0], ancestor_oid);
|
||||||
|
|
||||||
reuc->mode[1] = our_mode;
|
if ((reuc->mode[1] = our_mode) > 0)
|
||||||
git_oid_cpy(&reuc->oid[1], our_oid);
|
git_oid_cpy(&reuc->oid[1], our_oid);
|
||||||
|
|
||||||
reuc->mode[2] = their_mode;
|
if ((reuc->mode[2] = their_mode) > 0)
|
||||||
git_oid_cpy(&reuc->oid[2], their_oid);
|
git_oid_cpy(&reuc->oid[2], their_oid);
|
||||||
|
|
||||||
*reuc_out = reuc;
|
*reuc_out = reuc;
|
||||||
|
@ -31,6 +31,56 @@ void test_index_reuc__cleanup(void)
|
|||||||
cl_git_sandbox_cleanup();
|
cl_git_sandbox_cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_index_reuc__add(void)
|
||||||
|
{
|
||||||
|
git_oid ancestor_oid, our_oid, their_oid;
|
||||||
|
const git_index_reuc_entry *reuc;
|
||||||
|
|
||||||
|
git_oid_fromstr(&ancestor_oid, ONE_ANCESTOR_OID);
|
||||||
|
git_oid_fromstr(&our_oid, ONE_OUR_OID);
|
||||||
|
git_oid_fromstr(&their_oid, ONE_THEIR_OID);
|
||||||
|
|
||||||
|
cl_git_pass(git_index_reuc_add(repo_index, "newfile.txt",
|
||||||
|
0100644, &ancestor_oid,
|
||||||
|
0100644, &our_oid,
|
||||||
|
0100644, &their_oid));
|
||||||
|
|
||||||
|
cl_assert(reuc = git_index_reuc_get_bypath(repo_index, "newfile.txt"));
|
||||||
|
|
||||||
|
cl_assert(strcmp(reuc->path, "newfile.txt") == 0);
|
||||||
|
cl_assert(reuc->mode[0] == 0100644);
|
||||||
|
cl_assert(reuc->mode[1] == 0100644);
|
||||||
|
cl_assert(reuc->mode[2] == 0100644);
|
||||||
|
cl_assert(git_oid_cmp(&reuc->oid[0], &ancestor_oid) == 0);
|
||||||
|
cl_assert(git_oid_cmp(&reuc->oid[1], &our_oid) == 0);
|
||||||
|
cl_assert(git_oid_cmp(&reuc->oid[2], &their_oid) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_index_reuc__add_no_ancestor(void)
|
||||||
|
{
|
||||||
|
git_oid ancestor_oid, our_oid, their_oid;
|
||||||
|
const git_index_reuc_entry *reuc;
|
||||||
|
|
||||||
|
memset(&ancestor_oid, 0x0, sizeof(git_oid));
|
||||||
|
git_oid_fromstr(&our_oid, ONE_OUR_OID);
|
||||||
|
git_oid_fromstr(&their_oid, ONE_THEIR_OID);
|
||||||
|
|
||||||
|
cl_git_pass(git_index_reuc_add(repo_index, "newfile.txt",
|
||||||
|
0, NULL,
|
||||||
|
0100644, &our_oid,
|
||||||
|
0100644, &their_oid));
|
||||||
|
|
||||||
|
cl_assert(reuc = git_index_reuc_get_bypath(repo_index, "newfile.txt"));
|
||||||
|
|
||||||
|
cl_assert(strcmp(reuc->path, "newfile.txt") == 0);
|
||||||
|
cl_assert(reuc->mode[0] == 0);
|
||||||
|
cl_assert(reuc->mode[1] == 0100644);
|
||||||
|
cl_assert(reuc->mode[2] == 0100644);
|
||||||
|
cl_assert(git_oid_cmp(&reuc->oid[0], &ancestor_oid) == 0);
|
||||||
|
cl_assert(git_oid_cmp(&reuc->oid[1], &our_oid) == 0);
|
||||||
|
cl_assert(git_oid_cmp(&reuc->oid[2], &their_oid) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
void test_index_reuc__read_bypath(void)
|
void test_index_reuc__read_bypath(void)
|
||||||
{
|
{
|
||||||
const git_index_reuc_entry *reuc;
|
const git_index_reuc_entry *reuc;
|
||||||
|
Loading…
Reference in New Issue
Block a user