df conflicts
diff --git a/include/git2/diff_tree.h b/include/git2/diff_tree.h
index f5e70c6..39f5c1a 100644
--- a/include/git2/diff_tree.h
+++ b/include/git2/diff_tree.h
@@ -32,6 +32,20 @@
GIT_DIFF_TREE_RETURN_UNMODIFIED = (1 << 0),
} git_diff_tree_option_t;
+typedef enum {
+ GIT_DIFF_TREE_CONFLICT_NONE = 0,
+ GIT_DIFF_TREE_CONFLICT_BOTH_MODIFIED = (1 << 0),
+ GIT_DIFF_TREE_CONFLICT_BOTH_ADDED = (1 << 1),
+ GIT_DIFF_TREE_CONFLICT_BOTH_DELETED = (1 << 2),
+ GIT_DIFF_TREE_CONFLICT_MODIFY_DELETE = (1 << 3),
+} git_diff_tree_conflict_t;
+
+typedef enum {
+ GIT_DIFF_TREE_DF_NONE = 0,
+ GIT_DIFF_TREE_DF_DIRECTORY_FILE = (1 << 0),
+ GIT_DIFF_TREE_DF_CHILD = (1 << 1),
+} git_diff_tree_df_conflict_t;
+
/**
* The git_diff_tree_list list object that contains all individual
* object deltas.
@@ -53,6 +67,8 @@
git_diff_tree_entry ancestor;
git_diff_tree_entry ours;
git_diff_tree_entry theirs;
+ git_diff_tree_conflict_t conflict;
+ git_diff_tree_df_conflict_t df_conflict;
} git_diff_tree_delta;
/** Callback for the tree difference function. */
diff --git a/src/diff_tree.c b/src/diff_tree.c
index ec20d0a..297ac09 100644
--- a/src/diff_tree.c
+++ b/src/diff_tree.c
@@ -23,6 +23,10 @@
int diff;
assert (a && b);
+
+ /* Ignore tree changes */
+ if (S_ISDIR(a->mode) && S_ISDIR(b->mode))
+ return 0;
if ((diff = a->mode - b->mode) == 0)
diff = git_oid_cmp(&a->oid, &b->oid);
@@ -39,9 +43,9 @@
void *payload)
{
git_iterator **iterators;
- git_index_entry **items = NULL, *best_next_item, **next_items;
+ git_index_entry **items = NULL, *best_cur_item, **cur_items;
git_vector_cmp entry_compare = git_index_entry__cmp;
- int next_item_modified;
+ int cur_item_modified;
size_t i;
int error = 0;
@@ -53,8 +57,8 @@
items = git__calloc(trees_length, sizeof(git_index_entry *));
GITERR_CHECK_ALLOC(items);
- next_items = git__calloc(trees_length, sizeof(git_index_entry *));
- GITERR_CHECK_ALLOC(next_items);
+ cur_items = git__calloc(trees_length, sizeof(git_index_entry *));
+ GITERR_CHECK_ALLOC(cur_items);
for (i = 0; i < trees_length; i++) {
if ((error = git_iterator_for_tree(&iterators[i], repo, trees[i])) < 0)
@@ -69,50 +73,49 @@
}
while (true) {
- memset(next_items, 0x0, sizeof(git_index_entry *) * trees_length);
- best_next_item = NULL;
- next_item_modified = 0;
+ memset(cur_items, 0x0, sizeof(git_index_entry *) * trees_length);
+ best_cur_item = NULL;
+ cur_item_modified = 0;
/* Find the next path(s) to consume from each iterator */
for (i = 0; i < trees_length; i++) {
if (items[i] == NULL) {
- next_item_modified = 1;
+ cur_item_modified = 1;
continue;
}
- if (best_next_item == NULL) {
- best_next_item = items[i];
- next_items[i] = items[i];
+ if (best_cur_item == NULL) {
+ best_cur_item = items[i];
+ cur_items[i] = items[i];
} else {
- int diff = entry_compare(items[i], best_next_item);
-
- if (diff < 0) {
+ int path_diff = entry_compare(items[i], best_cur_item);
+
+ if (path_diff < 0) {
/*
* Found an item that sorts before our current item, make
* our current item this one.
*/
- memset(next_items, 0x0,
- sizeof(git_index_entry *) * trees_length);
- next_item_modified = 1;
- best_next_item = items[i];
- next_items[i] = items[i];
- } else if (diff > 0) {
+ memset(cur_items, 0x0, sizeof(git_index_entry *) * trees_length);
+ cur_item_modified = 1;
+ best_cur_item = items[i];
+ cur_items[i] = items[i];
+ } else if (path_diff > 0) {
/* No entry for the current item, this is modified */
- next_item_modified = 1;
- } else if (diff == 0) {
- next_items[i] = items[i];
+ cur_item_modified = 1;
+ } else if (path_diff == 0) {
+ cur_items[i] = items[i];
- if (!next_item_modified && !(flags & GIT_DIFF_TREE_RETURN_UNMODIFIED))
- next_item_modified = index_entry_cmp(best_next_item, items[i]);
+ if (!cur_item_modified && !(flags & GIT_DIFF_TREE_RETURN_UNMODIFIED))
+ cur_item_modified = index_entry_cmp(best_cur_item, items[i]);
}
}
}
- if (best_next_item == NULL)
+ if (best_cur_item == NULL)
break;
- if (next_item_modified || (flags & GIT_DIFF_TREE_RETURN_UNMODIFIED)) {
- if (callback((const git_index_entry **)next_items, payload)) {
+ if (cur_item_modified || (flags & GIT_DIFF_TREE_RETURN_UNMODIFIED)) {
+ if (callback((const git_index_entry **)cur_items, payload)) {
error = GIT_EUSER;
goto done;
}
@@ -120,7 +123,7 @@
/* Advance each iterator that participated */
for (i = 0; i < trees_length; i++) {
- if (next_items[i] != NULL &&
+ if (cur_items[i] != NULL &&
(error = git_iterator_advance(iterators[i],
(const git_index_entry **)&items[i])) < 0)
goto done;
@@ -133,7 +136,7 @@
git__free(iterators);
git__free(items);
- git__free(next_items);
+ git__free(cur_items);
return error;
}
@@ -146,7 +149,15 @@
INDEX_ANCESTOR = 0,
INDEX_OURS = 1,
INDEX_THEIRS = 2
-} threeway_index;
+} diff_tree_threeway_index;
+
+struct diff_tree_threeway_data {
+ git_diff_tree_list *diff_tree;
+
+ const char *df_path;
+ const char *prev_path;
+ git_diff_tree_delta *prev_delta_tree;
+};
static git_diff_tree_list *diff_tree__list_alloc(git_repository *repo)
{
@@ -165,15 +176,103 @@
return diff_tree;
}
+GIT_INLINE(const char *) diff_tree__path(const git_diff_tree_delta *delta_tree)
+{
+ if (GIT_DIFF_TREE_FILE_EXISTS(delta_tree->ancestor))
+ return delta_tree->ancestor.file.path;
+ else if (GIT_DIFF_TREE_FILE_EXISTS(delta_tree->ours))
+ return delta_tree->ours.file.path;
+ else if (GIT_DIFF_TREE_FILE_EXISTS(delta_tree->theirs))
+ return delta_tree->theirs.file.path;
+
+ return NULL;
+}
+
+GIT_INLINE(bool) diff_tree__delta_added_or_modified(
+ const git_diff_tree_delta *delta_tree)
+{
+ if (delta_tree->ours.status == GIT_DELTA_ADDED ||
+ delta_tree->ours.status == GIT_DELTA_MODIFIED ||
+ delta_tree->theirs.status == GIT_DELTA_ADDED ||
+ delta_tree->theirs.status == GIT_DELTA_MODIFIED)
+ return true;
+
+ return false;
+}
+
+GIT_INLINE(bool) path_is_prefixed(const char *parent, const char *child)
+{
+ size_t child_len = strlen(child);
+ size_t parent_len = strlen(parent);
+
+ if (child_len < parent_len ||
+ strncmp(parent, child, parent_len) != 0)
+ return 0;
+
+ return (child[parent_len] == '/');
+}
+
+GIT_INLINE(int) diff_tree__compute_df_conflict(
+ struct diff_tree_threeway_data *threeway_data,
+ git_diff_tree_delta *delta_tree)
+{
+ const char *cur_path = diff_tree__path(delta_tree);
+
+ /* Determine if this is a D/F conflict or the child of one */
+ if (threeway_data->df_path &&
+ path_is_prefixed(threeway_data->df_path, cur_path))
+ delta_tree->df_conflict = GIT_DIFF_TREE_DF_CHILD;
+ else if(threeway_data->df_path)
+ threeway_data->df_path = NULL;
+ else if (threeway_data->prev_path &&
+ diff_tree__delta_added_or_modified(threeway_data->prev_delta_tree) &&
+ diff_tree__delta_added_or_modified(delta_tree) &&
+ path_is_prefixed(threeway_data->prev_path, cur_path)) {
+ delta_tree->df_conflict = GIT_DIFF_TREE_DF_CHILD;
+
+ threeway_data->prev_delta_tree->df_conflict = GIT_DIFF_TREE_DF_DIRECTORY_FILE;
+ threeway_data->df_path = threeway_data->prev_path;
+ }
+
+ threeway_data->prev_path = cur_path;
+ threeway_data->prev_delta_tree = delta_tree;
+
+ return 0;
+}
+
+GIT_INLINE(int) diff_tree__compute_conflict(
+ git_diff_tree_delta *delta_tree)
+{
+ if (delta_tree->ours.status == GIT_DELTA_ADDED &&
+ delta_tree->theirs.status == GIT_DELTA_ADDED)
+ delta_tree->conflict = GIT_DIFF_TREE_CONFLICT_BOTH_ADDED;
+ else if (delta_tree->ours.status == GIT_DELTA_MODIFIED &&
+ delta_tree->theirs.status == GIT_DELTA_MODIFIED)
+ delta_tree->conflict = GIT_DIFF_TREE_CONFLICT_BOTH_MODIFIED;
+ else if (delta_tree->ours.status == GIT_DELTA_DELETED &&
+ delta_tree->theirs.status == GIT_DELTA_DELETED)
+ delta_tree->conflict = GIT_DIFF_TREE_CONFLICT_BOTH_DELETED;
+ else if (delta_tree->ours.status == GIT_DELTA_MODIFIED &&
+ delta_tree->theirs.status == GIT_DELTA_DELETED)
+ delta_tree->conflict = GIT_DIFF_TREE_CONFLICT_MODIFY_DELETE;
+ else if (delta_tree->ours.status == GIT_DELTA_DELETED &&
+ delta_tree->theirs.status == GIT_DELTA_MODIFIED)
+ delta_tree->conflict = GIT_DIFF_TREE_CONFLICT_MODIFY_DELETE;
+ else
+ delta_tree->conflict = GIT_DIFF_TREE_CONFLICT_NONE;
+
+ return 0;
+}
+
static git_diff_tree_delta *diff_tree__delta_from_entries(
- git_diff_tree_list *diff_tree,
+ struct diff_tree_threeway_data *threeway_data,
const git_index_entry **entries)
{
git_diff_tree_delta *delta_tree;
git_diff_tree_entry *tree_entries[3];
size_t i;
- if ((delta_tree = git_pool_malloc(&diff_tree->pool, sizeof(git_diff_tree_delta))) == NULL)
+ if ((delta_tree = git_pool_malloc(&threeway_data->diff_tree->pool, sizeof(git_diff_tree_delta))) == NULL)
return NULL;
tree_entries[INDEX_ANCESTOR] = &delta_tree->ancestor;
@@ -183,8 +282,8 @@
for (i = 0; i < 3; i++) {
if (entries[i] == NULL)
continue;
-
- if ((tree_entries[i]->file.path = git_pool_strdup(&diff_tree->pool, entries[i]->path)) == NULL)
+
+ if ((tree_entries[i]->file.path = git_pool_strdup(&threeway_data->diff_tree->pool, entries[i]->path)) == NULL)
return NULL;
git_oid_cpy(&tree_entries[i]->file.oid, &entries[i]->oid);
@@ -196,16 +295,18 @@
for (i = 1; i < 3; i++) {
if (entries[INDEX_ANCESTOR] == NULL && entries[i] == NULL)
continue;
- else if (entries[INDEX_ANCESTOR] == NULL && entries[i] != NULL)
- tree_entries[i]->status = GIT_DELTA_ADDED;
+
+ if (entries[INDEX_ANCESTOR] == NULL && entries[i] != NULL)
+ tree_entries[i]->status |= GIT_DELTA_ADDED;
else if (entries[INDEX_ANCESTOR] != NULL && entries[i] == NULL)
- tree_entries[i]->status = GIT_DELTA_DELETED;
- else if (S_ISDIR(entries[i]->mode) ^ S_ISDIR(entries[i]->mode) ||
- S_ISLNK(entries[i]->mode) ^ S_ISLNK(entries[i]->mode))
- tree_entries[i]->status = GIT_DELTA_TYPECHANGE;
+ tree_entries[i]->status |= GIT_DELTA_DELETED;
+ else if (S_ISDIR(entries[INDEX_ANCESTOR]->mode) ^ S_ISDIR(entries[i]->mode))
+ tree_entries[i]->status |= GIT_DELTA_TYPECHANGE;
+ else if(S_ISLNK(entries[INDEX_ANCESTOR]->mode) ^ S_ISLNK(entries[i]->mode))
+ tree_entries[i]->status |= GIT_DELTA_TYPECHANGE;
else if (git_oid_cmp(&entries[INDEX_ANCESTOR]->oid, &entries[i]->oid) ||
- entries[INDEX_ANCESTOR]->mode != entries[i]->mode)
- tree_entries[i]->status = GIT_DELTA_MODIFIED;
+ entries[INDEX_ANCESTOR]->mode != entries[i]->mode)
+ tree_entries[i]->status |= GIT_DELTA_MODIFIED;
}
return delta_tree;
@@ -213,13 +314,15 @@
static int diff_tree__create_delta(const git_index_entry **tree_items, void *payload)
{
- git_diff_tree_list *diff_tree = payload;
- git_diff_tree_delta *delta;
+ struct diff_tree_threeway_data *threeway_data = payload;
+ git_diff_tree_delta *delta_tree;
- assert(tree_items && diff_tree);
+ assert(tree_items && threeway_data);
- if ((delta = diff_tree__delta_from_entries(diff_tree, tree_items)) == NULL ||
- git_vector_insert(&diff_tree->deltas, delta) < 0)
+ if ((delta_tree = diff_tree__delta_from_entries(threeway_data, tree_items)) == NULL ||
+ diff_tree__compute_conflict(delta_tree) < 0 ||
+ diff_tree__compute_df_conflict(threeway_data, delta_tree) < 0 ||
+ git_vector_insert(&threeway_data->diff_tree->deltas, delta_tree) < 0)
return -1;
return 0;
@@ -232,6 +335,7 @@
const git_tree *their_tree,
uint32_t flags)
{
+ struct diff_tree_threeway_data threeway_data;
git_diff_tree_list *diff_tree;
git_tree const *trees[3];
int error = 0;
@@ -239,21 +343,24 @@
assert(out && repo && ancestor_tree && our_tree && their_tree);
*out = NULL;
-
+
diff_tree = diff_tree__list_alloc(repo);
GITERR_CHECK_ALLOC(diff_tree);
+ memset(&threeway_data, 0x0, sizeof(struct diff_tree_threeway_data));
+ threeway_data.diff_tree = diff_tree;
+
trees[INDEX_ANCESTOR] = ancestor_tree;
trees[INDEX_OURS] = our_tree;
trees[INDEX_THEIRS] = their_tree;
- if ((error = git_diff_tree_many(repo, trees, 3, flags, diff_tree__create_delta, diff_tree)) < 0) {
+ if ((error = git_diff_tree_many(repo, trees, 3, flags, diff_tree__create_delta, &threeway_data)) < 0)
git_diff_tree_list_free(diff_tree);
- return error;
- }
- *out = diff_tree;
- return 0;
+ if (error >= 0)
+ *out = diff_tree;
+
+ return error;
}
int git_diff_tree_foreach(
diff --git a/src/merge.c b/src/merge.c
index 6c11d25..e900b28 100644
--- a/src/merge.c
+++ b/src/merge.c
@@ -705,8 +705,6 @@
assert(index && delta);
if ((ancestor_exists = GIT_DIFF_TREE_FILE_EXISTS(delta->ancestor))) {
- ancestor_exists = 1;
-
memset(&ancestor_entry, 0x0, sizeof(git_index_entry));
ancestor_entry.path = (char *)delta->ancestor.file.path;
ancestor_entry.mode = delta->ancestor.file.mode;
@@ -714,8 +712,6 @@
}
if ((ours_exists = GIT_DIFF_TREE_FILE_EXISTS(delta->ours))) {
- ours_exists = 1;
-
memset(&our_entry, 0x0, sizeof(git_index_entry));
our_entry.path = (char *)delta->ours.file.path;
our_entry.mode = delta->ours.file.mode;
@@ -723,8 +719,6 @@
}
if ((theirs_exists = GIT_DIFF_TREE_FILE_EXISTS(delta->theirs))) {
- theirs_exists = 1;
-
memset(&their_entry, 0x0, sizeof(git_index_entry));
their_entry.path = (char *)delta->theirs.file.path;
their_entry.mode = delta->theirs.file.mode;
@@ -758,7 +752,10 @@
*resolved = 0;
- /* TODO: reject non-files */
+ /* TODO: (optionally) reject children of d/f conflicts */
+
+ if (delta->df_conflict == GIT_DIFF_TREE_DF_DIRECTORY_FILE)
+ return 0;
ancestor_empty = !GIT_DIFF_TREE_FILE_EXISTS(delta->ancestor);
ours_empty = !GIT_DIFF_TREE_FILE_EXISTS(delta->ours);
@@ -842,8 +839,11 @@
if (resolve_flags & GIT_MERGE_RESOLVE_NO_REMOVED)
return 0;
- /* TODO: reject non-files */
-
+ /* TODO: (optionally) reject children of d/f conflicts */
+
+ if (delta->df_conflict == GIT_DIFF_TREE_DF_DIRECTORY_FILE)
+ return 0;
+
ours_empty = !GIT_DIFF_TREE_FILE_EXISTS(delta->ours);
theirs_empty = !GIT_DIFF_TREE_FILE_EXISTS(delta->theirs);
@@ -890,9 +890,18 @@
if (resolve_flags & GIT_MERGE_RESOLVE_NO_AUTOMERGE)
return 0;
- /* TODO: reject non-files */
+ /* Reject D/F conflicts */
+ if (delta->df_conflict == GIT_DIFF_TREE_DF_DIRECTORY_FILE)
+ return 0;
+
+ /* Reject link/file conflicts. */
+ if ((S_ISLNK(delta->ancestor.file.mode) ^ S_ISLNK(delta->ours.file.mode)) ||
+ (S_ISLNK(delta->ancestor.file.mode) ^ S_ISLNK(delta->theirs.file.mode)))
+ return 0;
+
+ /* TODO: reject children of d/f conflicts */
+
/* TODO: reject name conflicts */
- /* TODO: reject filemode conflicts */
if ((error = git_repository_odb(&odb, repo)) < 0)
goto done;
@@ -971,10 +980,17 @@
if (flags & GIT_MERGE_CONFLICT_NO_DIFF3)
return 0;
+
+ /* Reject link/file conflicts. */
+ if ((S_ISLNK(delta->ancestor.file.mode) ^ S_ISLNK(delta->ours.file.mode)) ||
+ (S_ISLNK(delta->ancestor.file.mode) ^ S_ISLNK(delta->theirs.file.mode)))
+ return 0;
- /* TODO: reject non-files */
- /* TODO: reject name conflicts */
- /* TODO: reject filemode conflicts */
+ /* Reject D/F conflicts */
+ if (delta->df_conflict == GIT_DIFF_TREE_DF_DIRECTORY_FILE)
+ return 0;
+
+ /* TODO: reject name conflicts? */
git_repository_odb(&odb, repo);
@@ -998,19 +1014,33 @@
return error;
}
-static int merge_conflict_write_side(git_repository *repo,
+static int merge_conflict_write_file(
+ git_repository *repo,
+ const git_diff_tree_entry *entry,
+ const char *path)
+{
+ git_checkout_opts opts;
+
+ memset(&opts, 0x0, sizeof(git_checkout_opts));
+ opts.file_open_flags = O_WRONLY | O_CREAT | O_TRUNC | O_EXCL;
+
+ if (path == NULL)
+ path = entry->file.path;
+
+ return git_checkout_blob(repo, &entry->file.oid, path, entry->file.mode, &opts);
+}
+
+static int merge_conflict_write_side(
+ git_repository *repo,
const git_merge_head *merge_head,
const git_diff_tree_entry *entry)
{
git_buf path = GIT_BUF_INIT;
char oid_str[GIT_OID_HEXSZ];
- git_checkout_opts opts;
int error = 0;
assert(repo && merge_head && entry);
- memset(&opts, 0x0, sizeof(git_checkout_opts));
-
/* TODO: what if this file exists? */
git_buf_puts(&path, entry->file.path);
@@ -1023,17 +1053,15 @@
git_buf_put(&path, oid_str, GIT_OID_HEXSZ);
}
- opts.file_open_flags = O_WRONLY | O_CREAT | O_TRUNC | O_EXCL;
-
- error = git_checkout_blob(repo, &entry->file.oid, git_buf_cstr(&path),
- entry->file.mode, &opts);
+ error = merge_conflict_write_file(repo, entry, git_buf_cstr(&path));
git_buf_free(&path);
return error;
}
-static int merge_conflict_write_sides(int *conflict_written,
+static int merge_conflict_write_sides(
+ int *conflict_written,
git_repository *repo,
const git_merge_head *ancestor_head,
const git_merge_head *our_head,
@@ -1049,12 +1077,16 @@
*conflict_written = 0;
- /* TODO: handle trees */
-
if (GIT_DIFF_TREE_FILE_EXISTS(delta->ours) &&
- (error = merge_conflict_write_side(repo, our_head, &delta->ours)) >= 0 &&
- GIT_DIFF_TREE_FILE_EXISTS(delta->theirs) &&
- (error = merge_conflict_write_side(repo, their_head, &delta->theirs)) >= 0)
+ (error = merge_conflict_write_side(repo, our_head, &delta->ours)) < 0)
+ goto done;
+
+ if (GIT_DIFF_TREE_FILE_EXISTS(delta->theirs) &&
+ (error = merge_conflict_write_side(repo, their_head, &delta->theirs)) < 0)
+ goto done;
+
+done:
+ if (error >= 0)
*conflict_written = 1;
return error;
diff --git a/tests-clar/merge/merge_helpers.c b/tests-clar/merge/merge_helpers.c
index 8f1a16c..db410da 100644
--- a/tests-clar/merge/merge_helpers.c
+++ b/tests-clar/merge/merge_helpers.c
@@ -1,6 +1,29 @@
#include "clar_libgit2.h"
#include "merge_helpers.h"
+int merge_branches(git_merge_result **result, git_repository *repo, const char *ours_branch, const char *theirs_branch, git_merge_opts *opts)
+{
+ git_reference *head_ref, *theirs_ref;
+ git_merge_head *theirs_head;
+ git_checkout_opts head_checkout_opts = GIT_CHECKOUT_OPTS_INIT;
+
+ head_checkout_opts.checkout_strategy = GIT_CHECKOUT_FORCE;
+
+ cl_git_pass(git_reference_symbolic_create(&head_ref, repo, "HEAD", ours_branch, 1));
+ cl_git_pass(git_checkout_head(repo, &head_checkout_opts));
+
+ cl_git_pass(git_reference_lookup(&theirs_ref, repo, theirs_branch));
+ cl_git_pass(git_merge_head_from_ref(&theirs_head, repo, theirs_ref));
+
+ cl_git_pass(git_merge(result, repo, (const git_merge_head **)&theirs_head, 1, opts));
+
+ git_reference_free(head_ref);
+ git_reference_free(theirs_ref);
+ git_merge_head_free(theirs_head);
+
+ return 0;
+}
+
int merge_test_index(git_index *index, const struct merge_index_entry expected[], size_t expected_len)
{
size_t i;
diff --git a/tests-clar/merge/merge_helpers.h b/tests-clar/merge/merge_helpers.h
index 1c48d09..574f7bb 100644
--- a/tests-clar/merge/merge_helpers.h
+++ b/tests-clar/merge/merge_helpers.h
@@ -18,6 +18,8 @@
char their_oid_str[41];
};
+int merge_branches(git_merge_result **result, git_repository *repo, const char *ours_branch, const char *theirs_branch, git_merge_opts *opts);
+
int merge_test_index(git_index *index, const struct merge_index_entry expected[], size_t expected_len);
int merge_test_reuc(git_index *index, const struct merge_reuc_entry expected[], size_t expected_len);
diff --git a/tests-clar/merge/modeconflict.c b/tests-clar/merge/modeconflict.c
new file mode 100644
index 0000000..b33d872
--- /dev/null
+++ b/tests-clar/merge/modeconflict.c
@@ -0,0 +1,62 @@
+#include "clar_libgit2.h"
+#include "git2/repository.h"
+#include "git2/merge.h"
+#include "buffer.h"
+#include "merge.h"
+#include "merge_helpers.h"
+#include "fileops.h"
+
+static git_repository *repo;
+static git_index *repo_index;
+
+#define TEST_REPO_PATH "merge-resolve"
+
+#define DF_SIDE1_BRANCH "df_side1"
+#define DF_SIDE2_BRANCH "df_side2"
+
+
+// Fixture setup and teardown
+void test_merge_modeconflict__initialize(void)
+{
+ repo = cl_git_sandbox_init(TEST_REPO_PATH);
+ git_repository_index(&repo_index, repo);
+}
+
+void test_merge_modeconflict__cleanup(void)
+{
+ git_index_free(repo_index);
+ cl_git_sandbox_cleanup();
+}
+
+void test_merge_modeconflict__df_conflict(void)
+{
+ git_merge_result *result;
+
+ struct merge_index_entry merge_index_entries[] = {
+ { 0100644, "49130a28ef567af9a6a6104c38773fedfa5f9742", 2, "dir-10" },
+ { 0100644, "6c06dcd163587c2cc18be44857e0b71116382aeb", 3, "dir-10" },
+ { 0100644, "43aafd43bea779ec74317dc361f45ae3f532a505", 0, "dir-6" },
+ { 0100644, "a031a28ae70e33a641ce4b8a8f6317f1ab79dee4", 3, "dir-7" },
+ { 0100644, "5012fd565b1393bdfda1805d4ec38ce6619e1fd1", 1, "dir-7/file.txt" },
+ { 0100644, "a5563304ddf6caba25cb50323a2ea6f7dbfcadca", 2, "dir-7/file.txt" },
+ { 0100644, "e9ad6ec3e38364a3d07feda7c4197d4d845c53b5", 0, "dir-8" },
+ { 0100644, "3ef4d30382ca33fdeba9fda895a99e0891ba37aa", 2, "dir-9" },
+ { 0100644, "fc4c636d6515e9e261f9260dbcf3cc6eca97ea08", 1, "dir-9/file.txt" },
+ { 0100644, "76ab0e2868197ec158ddd6c78d8a0d2fd73d38f9", 3, "dir-9/file.txt" },
+ { 0100644, "5c2411f8075f48a6b2fdb85ebc0d371747c4df15", 0, "file-1/new" },
+ { 0100644, "a39a620dae5bc8b4e771cd4d251b7d080401a21e", 1, "file-2" },
+ { 0100644, "d963979c237d08b6ba39062ee7bf64c7d34a27f8", 2, "file-2" },
+ { 0100644, "5c341ead2ba6f2af98ce5ec3fe84f6b6d2899c0d", 0, "file-2/new" },
+ { 0100644, "9efe7723802d4305142eee177e018fee1572c4f4", 0, "file-3/new" },
+ { 0100644, "bacac9b3493509aa15e1730e1545fc0919d1dae0", 1, "file-4" },
+ { 0100644, "7663fce0130db092936b137cabd693ec234eb060", 3, "file-4" },
+ { 0100644, "e49f917b448d1340b31d76e54ba388268fd4c922", 0, "file-4/new" },
+ { 0100644, "cab2cf23998b40f1af2d9d9a756dc9e285a8df4b", 2, "file-5/new" },
+ { 0100644, "f5504f36e6f4eb797a56fc5bac6c6c7f32969bf2", 3, "file-5/new" },
+ };
+
+ cl_git_pass(merge_branches(&result, repo, GIT_REFS_HEADS_DIR DF_SIDE1_BRANCH, GIT_REFS_HEADS_DIR DF_SIDE2_BRANCH, NULL));
+
+ cl_assert(merge_test_index(repo_index, merge_index_entries, 20));
+
+}
\ No newline at end of file
diff --git a/tests-clar/merge/simple.c b/tests-clar/merge/simple.c
index 8a64ff8..974c37c 100644
--- a/tests-clar/merge/simple.c
+++ b/tests-clar/merge/simple.c
@@ -208,11 +208,13 @@
cl_assert(merge_test_reuc(repo_index, merge_reuc_entries, 3));
cl_assert(!git_path_exists(TEST_REPO_PATH "/conflicting.txt"));
+ cl_assert(git_path_exists(TEST_REPO_PATH "/conflicting.txt~7cb63eed597130ba4abb87b3e544b85021905520"));
+ cl_assert(git_path_exists(TEST_REPO_PATH "/conflicting.txt~HEAD"));
git_merge_result_free(result);
}
-void test_merge_simple__ours(void)
+void test_merge_simple__favor_ours(void)
{
git_merge_result *result;
@@ -241,7 +243,7 @@
git_merge_result_free(result);
}
-void test_merge_simple__theirs(void)
+void test_merge_simple__favor_theirs(void)
{
git_merge_result *result;
diff --git a/tests-clar/resources/merge-resolve/.gitted/COMMIT_EDITMSG b/tests-clar/resources/merge-resolve/.gitted/COMMIT_EDITMSG
index d11c5bd..bd4f33f 100644
--- a/tests-clar/resources/merge-resolve/.gitted/COMMIT_EDITMSG
+++ b/tests-clar/resources/merge-resolve/.gitted/COMMIT_EDITMSG
@@ -1 +1 @@
-renames2
+df_side2
diff --git a/tests-clar/resources/merge-resolve/.gitted/ORIG_HEAD b/tests-clar/resources/merge-resolve/.gitted/ORIG_HEAD
index 7bc1a8d..29331cf 100644
--- a/tests-clar/resources/merge-resolve/.gitted/ORIG_HEAD
+++ b/tests-clar/resources/merge-resolve/.gitted/ORIG_HEAD
@@ -1 +1 @@
-c607fc30883e335def28cd686b51f6cfa02b06ec
+9a301fbe6fada7dcb74fcd7c20269b5c743459a7
diff --git a/tests-clar/resources/merge-resolve/.gitted/index b/tests-clar/resources/merge-resolve/.gitted/index
index 10bc40d..37a73e3 100644
--- a/tests-clar/resources/merge-resolve/.gitted/index
+++ b/tests-clar/resources/merge-resolve/.gitted/index
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/logs/HEAD b/tests-clar/resources/merge-resolve/.gitted/logs/HEAD
index ab8f1c1..dd8ae4a 100644
--- a/tests-clar/resources/merge-resolve/.gitted/logs/HEAD
+++ b/tests-clar/resources/merge-resolve/.gitted/logs/HEAD
@@ -133,3 +133,80 @@
bd593285fc7fe4ca18ccdbabf027f5d689101452 c607fc30883e335def28cd686b51f6cfa02b06ec Edward Thomson <ethomson@edwardthomson.com> 1353794677 -0600 reset: moving to c607fc30883e335def28cd686b51f6cfa02b06ec
c607fc30883e335def28cd686b51f6cfa02b06ec ab40af3cb8a3ed2e2843e96d9aa7871336b94573 Edward Thomson <ethomson@edwardthomson.com> 1353794852 -0600 commit: renames2
ab40af3cb8a3ed2e2843e96d9aa7871336b94573 bd593285fc7fe4ca18ccdbabf027f5d689101452 Edward Thomson <ethomson@edwardthomson.com> 1353794883 -0600 checkout: moving from renames2 to master
+bd593285fc7fe4ca18ccdbabf027f5d689101452 bd593285fc7fe4ca18ccdbabf027f5d689101452 Edward Thomson <ethomson@edwardthomson.com> 1354574697 -0600 checkout: moving from master to df_side1
+bd593285fc7fe4ca18ccdbabf027f5d689101452 d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1354574962 -0600 commit: df_ancestor
+d4207f77243500bec335ab477f9227fcdb1e271a c94b27e41064c521120627e07e2035cca1d24ffa Edward Thomson <ethomson@edwardthomson.com> 1354575027 -0600 commit: df_side1
+c94b27e41064c521120627e07e2035cca1d24ffa d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1354575070 -0600 checkout: moving from df_side1 to df_side2
+d4207f77243500bec335ab477f9227fcdb1e271a f8958bdf4d365a84a9a178b1f5f35ff1dacbd884 Edward Thomson <ethomson@edwardthomson.com> 1354575206 -0600 commit: df_side2
+f8958bdf4d365a84a9a178b1f5f35ff1dacbd884 bd593285fc7fe4ca18ccdbabf027f5d689101452 Edward Thomson <ethomson@edwardthomson.com> 1354575381 -0600 checkout: moving from df_side2 to master
+bd593285fc7fe4ca18ccdbabf027f5d689101452 c94b27e41064c521120627e07e2035cca1d24ffa Edward Thomson <ethomson@edwardthomson.com> 1355017614 -0600 checkout: moving from master to df_side1
+c94b27e41064c521120627e07e2035cca1d24ffa a90bc3fb6f15181972a2959a921429efbd81a473 Edward Thomson <ethomson@edwardthomson.com> 1355017650 -0600 commit: df_added
+a90bc3fb6f15181972a2959a921429efbd81a473 c94b27e41064c521120627e07e2035cca1d24ffa Edward Thomson <ethomson@edwardthomson.com> 1355017673 -0600 checkout: moving from df_side1 to c94b27e
+c94b27e41064c521120627e07e2035cca1d24ffa d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1355017673 -0600 rebase -i (squash): updating HEAD
+d4207f77243500bec335ab477f9227fcdb1e271a 005b6fcc8fec71d2550bef8462d169b3c26aa14b Edward Thomson <ethomson@edwardthomson.com> 1355017673 -0600 rebase -i (squash): df_side1
+005b6fcc8fec71d2550bef8462d169b3c26aa14b 005b6fcc8fec71d2550bef8462d169b3c26aa14b Edward Thomson <ethomson@edwardthomson.com> 1355017676 -0600 rebase -i (finish): returning to refs/heads/df_side1
+005b6fcc8fec71d2550bef8462d169b3c26aa14b f8958bdf4d365a84a9a178b1f5f35ff1dacbd884 Edward Thomson <ethomson@edwardthomson.com> 1355017715 -0600 reset: moving to df_side2
+f8958bdf4d365a84a9a178b1f5f35ff1dacbd884 8c749d9968d4b10dcfb06c9f97d0e5d92d337071 Edward Thomson <ethomson@edwardthomson.com> 1355017744 -0600 commit: df_added
+8c749d9968d4b10dcfb06c9f97d0e5d92d337071 f8958bdf4d365a84a9a178b1f5f35ff1dacbd884 Edward Thomson <ethomson@edwardthomson.com> 1355017754 -0600 checkout: moving from df_side1 to f8958bd
+f8958bdf4d365a84a9a178b1f5f35ff1dacbd884 d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1355017754 -0600 rebase -i (squash): updating HEAD
+d4207f77243500bec335ab477f9227fcdb1e271a 0204a84f822acbf6386b36d33f1f6bc68bbbf858 Edward Thomson <ethomson@edwardthomson.com> 1355017754 -0600 rebase -i (squash): df_side2
+0204a84f822acbf6386b36d33f1f6bc68bbbf858 0204a84f822acbf6386b36d33f1f6bc68bbbf858 Edward Thomson <ethomson@edwardthomson.com> 1355017756 -0600 rebase -i (finish): returning to refs/heads/df_side1
+0204a84f822acbf6386b36d33f1f6bc68bbbf858 005b6fcc8fec71d2550bef8462d169b3c26aa14b Edward Thomson <ethomson@edwardthomson.com> 1355017793 -0600 reset: moving to 005b6fcc8fec71d2550bef8462d169b3c26aa14b
+005b6fcc8fec71d2550bef8462d169b3c26aa14b 0204a84f822acbf6386b36d33f1f6bc68bbbf858 Edward Thomson <ethomson@edwardthomson.com> 1355017826 -0600 reset: moving to 0204a84
+0204a84f822acbf6386b36d33f1f6bc68bbbf858 bd593285fc7fe4ca18ccdbabf027f5d689101452 Edward Thomson <ethomson@edwardthomson.com> 1355017847 -0600 checkout: moving from df_side1 to master
+bd593285fc7fe4ca18ccdbabf027f5d689101452 0204a84f822acbf6386b36d33f1f6bc68bbbf858 Edward Thomson <ethomson@edwardthomson.com> 1355168677 -0600 checkout: moving from master to df_side1
+005b6fcc8fec71d2550bef8462d169b3c26aa14b 005b6fcc8fec71d2550bef8462d169b3c26aa14b Edward Thomson <ethomson@edwardthomson.com> 1355168829 -0600 checkout: moving from df_side1 to df_side1
+005b6fcc8fec71d2550bef8462d169b3c26aa14b 005b6fcc8fec71d2550bef8462d169b3c26aa14b Edward Thomson <ethomson@edwardthomson.com> 1355168838 -0600 checkout: moving from df_side1 to df_side1
+005b6fcc8fec71d2550bef8462d169b3c26aa14b e8107f24196736b870a318a0e28f048e29f6feff Edward Thomson <ethomson@edwardthomson.com> 1355169065 -0600 commit: df_side1
+e8107f24196736b870a318a0e28f048e29f6feff 005b6fcc8fec71d2550bef8462d169b3c26aa14b Edward Thomson <ethomson@edwardthomson.com> 1355169081 -0600 checkout: moving from df_side1 to 005b6fc
+005b6fcc8fec71d2550bef8462d169b3c26aa14b d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1355169081 -0600 rebase -i (squash): updating HEAD
+d4207f77243500bec335ab477f9227fcdb1e271a 80a8fbb3abb1ba423d554e9630b8fc2e5698f86b Edward Thomson <ethomson@edwardthomson.com> 1355169081 -0600 rebase -i (squash): df_side1
+80a8fbb3abb1ba423d554e9630b8fc2e5698f86b 80a8fbb3abb1ba423d554e9630b8fc2e5698f86b Edward Thomson <ethomson@edwardthomson.com> 1355169084 -0600 rebase -i (finish): returning to refs/heads/df_side1
+80a8fbb3abb1ba423d554e9630b8fc2e5698f86b 0204a84f822acbf6386b36d33f1f6bc68bbbf858 Edward Thomson <ethomson@edwardthomson.com> 1355169141 -0600 checkout: moving from df_side1 to df_side2
+0204a84f822acbf6386b36d33f1f6bc68bbbf858 944f5dd1a867cab4c2bbcb896493435cae1dcc1a Edward Thomson <ethomson@edwardthomson.com> 1355169174 -0600 commit: both
+944f5dd1a867cab4c2bbcb896493435cae1dcc1a 0204a84f822acbf6386b36d33f1f6bc68bbbf858 Edward Thomson <ethomson@edwardthomson.com> 1355169182 -0600 checkout: moving from df_side2 to 0204a84
+0204a84f822acbf6386b36d33f1f6bc68bbbf858 d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1355169182 -0600 rebase -i (squash): updating HEAD
+d4207f77243500bec335ab477f9227fcdb1e271a 57079a46233ae2b6df62e9ade71c4948512abefb Edward Thomson <ethomson@edwardthomson.com> 1355169182 -0600 rebase -i (squash): df_side2
+57079a46233ae2b6df62e9ade71c4948512abefb 57079a46233ae2b6df62e9ade71c4948512abefb Edward Thomson <ethomson@edwardthomson.com> 1355169185 -0600 rebase -i (finish): returning to refs/heads/df_side2
+57079a46233ae2b6df62e9ade71c4948512abefb 80a8fbb3abb1ba423d554e9630b8fc2e5698f86b Edward Thomson <ethomson@edwardthomson.com> 1355169241 -0600 checkout: moving from df_side2 to df_side1
+80a8fbb3abb1ba423d554e9630b8fc2e5698f86b e65a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812 Edward Thomson <ethomson@edwardthomson.com> 1355169419 -0600 commit: side1
+e65a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812 80a8fbb3abb1ba423d554e9630b8fc2e5698f86b Edward Thomson <ethomson@edwardthomson.com> 1355169431 -0600 checkout: moving from df_side1 to 80a8fbb
+80a8fbb3abb1ba423d554e9630b8fc2e5698f86b d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1355169431 -0600 rebase -i (squash): updating HEAD
+d4207f77243500bec335ab477f9227fcdb1e271a 5dc1018e90b19654bee986b7a0c268804d39659d Edward Thomson <ethomson@edwardthomson.com> 1355169431 -0600 rebase -i (squash): df_side1
+5dc1018e90b19654bee986b7a0c268804d39659d 5dc1018e90b19654bee986b7a0c268804d39659d Edward Thomson <ethomson@edwardthomson.com> 1355169435 -0600 rebase -i (finish): returning to refs/heads/df_side1
+5dc1018e90b19654bee986b7a0c268804d39659d 57079a46233ae2b6df62e9ade71c4948512abefb Edward Thomson <ethomson@edwardthomson.com> 1355169439 -0600 checkout: moving from df_side1 to df_side2
+57079a46233ae2b6df62e9ade71c4948512abefb 58e853f66699fd02629fd50bde08082bc005933a Edward Thomson <ethomson@edwardthomson.com> 1355169460 -0600 commit: side2
+58e853f66699fd02629fd50bde08082bc005933a 57079a46233ae2b6df62e9ade71c4948512abefb Edward Thomson <ethomson@edwardthomson.com> 1355169469 -0600 checkout: moving from df_side2 to 57079a4
+57079a46233ae2b6df62e9ade71c4948512abefb d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1355169469 -0600 rebase -i (squash): updating HEAD
+d4207f77243500bec335ab477f9227fcdb1e271a fada9356aa3f74622327a3038ae9c6f92e1c5c1d Edward Thomson <ethomson@edwardthomson.com> 1355169469 -0600 rebase -i (squash): df_side2
+fada9356aa3f74622327a3038ae9c6f92e1c5c1d fada9356aa3f74622327a3038ae9c6f92e1c5c1d Edward Thomson <ethomson@edwardthomson.com> 1355169471 -0600 rebase -i (finish): returning to refs/heads/df_side2
+fada9356aa3f74622327a3038ae9c6f92e1c5c1d 5dc1018e90b19654bee986b7a0c268804d39659d Edward Thomson <ethomson@edwardthomson.com> 1355169494 -0600 checkout: moving from df_side2 to df_side1
+5dc1018e90b19654bee986b7a0c268804d39659d d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1355169663 -0600 checkout: moving from df_side1 to d4207f77243500bec335ab477f9227fcdb1e271a
+d4207f77243500bec335ab477f9227fcdb1e271a 849619b03ae540acee4d1edec96b86993da6b497 Edward Thomson <ethomson@edwardthomson.com> 1355169683 -0600 commit: both_dirs
+849619b03ae540acee4d1edec96b86993da6b497 d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1355169691 -0600 checkout: moving from 849619b03ae540acee4d1edec96b86993da6b497 to d4207f7
+d4207f77243500bec335ab477f9227fcdb1e271a bd593285fc7fe4ca18ccdbabf027f5d689101452 Edward Thomson <ethomson@edwardthomson.com> 1355169691 -0600 rebase -i (squash): updating HEAD
+bd593285fc7fe4ca18ccdbabf027f5d689101452 a765fb87eb2f7a1920b73b2d5a057f8f8476a42b Edward Thomson <ethomson@edwardthomson.com> 1355169691 -0600 rebase -i (squash): df_ancestor
+a765fb87eb2f7a1920b73b2d5a057f8f8476a42b 5dc1018e90b19654bee986b7a0c268804d39659d Edward Thomson <ethomson@edwardthomson.com> 1355169706 -0600 checkout: moving from a765fb87eb2f7a1920b73b2d5a057f8f8476a42b to df_side1
+5dc1018e90b19654bee986b7a0c268804d39659d a765fb87eb2f7a1920b73b2d5a057f8f8476a42b Edward Thomson <ethomson@edwardthomson.com> 1355169715 -0600 checkout: moving from df_side1 to a765fb87eb2f7a1920b73b2d5a057f8f8476a42b^0
+a765fb87eb2f7a1920b73b2d5a057f8f8476a42b bc744705e1d8a019993cf88f62bc4020f1b80919 Edward Thomson <ethomson@edwardthomson.com> 1355169801 -0600 commit: df_side1
+bc744705e1d8a019993cf88f62bc4020f1b80919 bc744705e1d8a019993cf88f62bc4020f1b80919 Edward Thomson <ethomson@edwardthomson.com> 1355169822 -0600 checkout: moving from bc744705e1d8a019993cf88f62bc4020f1b80919 to df_side1
+bc744705e1d8a019993cf88f62bc4020f1b80919 fada9356aa3f74622327a3038ae9c6f92e1c5c1d Edward Thomson <ethomson@edwardthomson.com> 1355169826 -0600 checkout: moving from df_side1 to df_side2
+fada9356aa3f74622327a3038ae9c6f92e1c5c1d a765fb87eb2f7a1920b73b2d5a057f8f8476a42b Edward Thomson <ethomson@edwardthomson.com> 1355169866 -0600 checkout: moving from df_side2 to a765fb87eb2f7a1920b73b2d5a057f8f8476a42b^0
+a765fb87eb2f7a1920b73b2d5a057f8f8476a42b 95646149ab6b6ba6edc83cff678582538b457b2b Edward Thomson <ethomson@edwardthomson.com> 1355169897 -0600 rebase: df_side2
+95646149ab6b6ba6edc83cff678582538b457b2b 95646149ab6b6ba6edc83cff678582538b457b2b Edward Thomson <ethomson@edwardthomson.com> 1355169897 -0600 rebase finished: returning to refs/heads/df_side2
+95646149ab6b6ba6edc83cff678582538b457b2b bc744705e1d8a019993cf88f62bc4020f1b80919 Edward Thomson <ethomson@edwardthomson.com> 1355169949 -0600 checkout: moving from df_side2 to df_side1
+bc744705e1d8a019993cf88f62bc4020f1b80919 bd593285fc7fe4ca18ccdbabf027f5d689101452 Edward Thomson <ethomson@edwardthomson.com> 1355170046 -0600 checkout: moving from df_side1 to master
+bd593285fc7fe4ca18ccdbabf027f5d689101452 bd593285fc7fe4ca18ccdbabf027f5d689101452 Edward Thomson <ethomson@edwardthomson.com> 1355181639 -0600 checkout: moving from master to df_ancestor
+bd593285fc7fe4ca18ccdbabf027f5d689101452 2da538570bc1e5b2c3e855bf702f35248ad0735f Edward Thomson <ethomson@edwardthomson.com> 1355181673 -0600 commit: df_ancestor
+2da538570bc1e5b2c3e855bf702f35248ad0735f a7dbfcbfc1a60709cb80b5ca24539008456531d0 Edward Thomson <ethomson@edwardthomson.com> 1355181715 -0600 commit: df_side1
+a7dbfcbfc1a60709cb80b5ca24539008456531d0 a7dbfcbfc1a60709cb80b5ca24539008456531d0 Edward Thomson <ethomson@edwardthomson.com> 1355181743 -0600 checkout: moving from df_ancestor to df_ancestor
+a7dbfcbfc1a60709cb80b5ca24539008456531d0 9a301fbe6fada7dcb74fcd7c20269b5c743459a7 Edward Thomson <ethomson@edwardthomson.com> 1355181775 -0600 commit: df_side2
+9a301fbe6fada7dcb74fcd7c20269b5c743459a7 a7dbfcbfc1a60709cb80b5ca24539008456531d0 Edward Thomson <ethomson@edwardthomson.com> 1355181793 -0600 checkout: moving from df_ancestor to df_side1
+a7dbfcbfc1a60709cb80b5ca24539008456531d0 9a301fbe6fada7dcb74fcd7c20269b5c743459a7 Edward Thomson <ethomson@edwardthomson.com> 1355181797 -0600 checkout: moving from df_side1 to df_side2
+9a301fbe6fada7dcb74fcd7c20269b5c743459a7 9a301fbe6fada7dcb74fcd7c20269b5c743459a7 Edward Thomson <ethomson@edwardthomson.com> 1355182062 -0600 checkout: moving from df_side2 to df_ancestor
+9a301fbe6fada7dcb74fcd7c20269b5c743459a7 2da538570bc1e5b2c3e855bf702f35248ad0735f Edward Thomson <ethomson@edwardthomson.com> 1355182067 -0600 reset: moving to 2da538570bc1e5b2c3e855bf702f35248ad0735f
+2da538570bc1e5b2c3e855bf702f35248ad0735f 2da538570bc1e5b2c3e855bf702f35248ad0735f Edward Thomson <ethomson@edwardthomson.com> 1355182087 -0600 checkout: moving from df_ancestor to df_side2
+2da538570bc1e5b2c3e855bf702f35248ad0735f fc90237dc4891fa6c69827fc465632225e391618 Edward Thomson <ethomson@edwardthomson.com> 1355182104 -0600 commit: df_side2
+fc90237dc4891fa6c69827fc465632225e391618 a7dbfcbfc1a60709cb80b5ca24539008456531d0 Edward Thomson <ethomson@edwardthomson.com> 1355182111 -0600 checkout: moving from df_side2 to df_side1
+a7dbfcbfc1a60709cb80b5ca24539008456531d0 fc90237dc4891fa6c69827fc465632225e391618 Edward Thomson <ethomson@edwardthomson.com> 1355182115 -0600 checkout: moving from df_side1 to df_side2
+fc90237dc4891fa6c69827fc465632225e391618 bd593285fc7fe4ca18ccdbabf027f5d689101452 Edward Thomson <ethomson@edwardthomson.com> 1355182122 -0600 checkout: moving from df_side2 to master
diff --git a/tests-clar/resources/merge-resolve/.gitted/logs/refs/heads/df_ancestor b/tests-clar/resources/merge-resolve/.gitted/logs/refs/heads/df_ancestor
new file mode 100644
index 0000000..df7695a
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/logs/refs/heads/df_ancestor
@@ -0,0 +1,5 @@
+0000000000000000000000000000000000000000 bd593285fc7fe4ca18ccdbabf027f5d689101452 Edward Thomson <ethomson@edwardthomson.com> 1355181639 -0600 branch: Created from HEAD
+bd593285fc7fe4ca18ccdbabf027f5d689101452 2da538570bc1e5b2c3e855bf702f35248ad0735f Edward Thomson <ethomson@edwardthomson.com> 1355181673 -0600 commit: df_ancestor
+2da538570bc1e5b2c3e855bf702f35248ad0735f a7dbfcbfc1a60709cb80b5ca24539008456531d0 Edward Thomson <ethomson@edwardthomson.com> 1355181715 -0600 commit: df_side1
+a7dbfcbfc1a60709cb80b5ca24539008456531d0 9a301fbe6fada7dcb74fcd7c20269b5c743459a7 Edward Thomson <ethomson@edwardthomson.com> 1355181775 -0600 commit: df_side2
+9a301fbe6fada7dcb74fcd7c20269b5c743459a7 2da538570bc1e5b2c3e855bf702f35248ad0735f Edward Thomson <ethomson@edwardthomson.com> 1355182067 -0600 reset: moving to 2da538570bc1e5b2c3e855bf702f35248ad0735f
diff --git a/tests-clar/resources/merge-resolve/.gitted/logs/refs/heads/df_side1 b/tests-clar/resources/merge-resolve/.gitted/logs/refs/heads/df_side1
new file mode 100644
index 0000000..a504ad6
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/logs/refs/heads/df_side1
@@ -0,0 +1,14 @@
+0000000000000000000000000000000000000000 bd593285fc7fe4ca18ccdbabf027f5d689101452 Edward Thomson <ethomson@edwardthomson.com> 1354574697 -0600 branch: Created from HEAD
+bd593285fc7fe4ca18ccdbabf027f5d689101452 d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1354574962 -0600 commit: df_ancestor
+d4207f77243500bec335ab477f9227fcdb1e271a c94b27e41064c521120627e07e2035cca1d24ffa Edward Thomson <ethomson@edwardthomson.com> 1354575027 -0600 commit: df_side1
+c94b27e41064c521120627e07e2035cca1d24ffa a90bc3fb6f15181972a2959a921429efbd81a473 Edward Thomson <ethomson@edwardthomson.com> 1355017650 -0600 commit: df_added
+a90bc3fb6f15181972a2959a921429efbd81a473 005b6fcc8fec71d2550bef8462d169b3c26aa14b Edward Thomson <ethomson@edwardthomson.com> 1355017676 -0600 rebase -i (finish): refs/heads/df_side1 onto c94b27e
+005b6fcc8fec71d2550bef8462d169b3c26aa14b f8958bdf4d365a84a9a178b1f5f35ff1dacbd884 Edward Thomson <ethomson@edwardthomson.com> 1355017715 -0600 reset: moving to df_side2
+f8958bdf4d365a84a9a178b1f5f35ff1dacbd884 8c749d9968d4b10dcfb06c9f97d0e5d92d337071 Edward Thomson <ethomson@edwardthomson.com> 1355017744 -0600 commit: df_added
+8c749d9968d4b10dcfb06c9f97d0e5d92d337071 0204a84f822acbf6386b36d33f1f6bc68bbbf858 Edward Thomson <ethomson@edwardthomson.com> 1355017756 -0600 rebase -i (finish): refs/heads/df_side1 onto f8958bd
+0204a84f822acbf6386b36d33f1f6bc68bbbf858 005b6fcc8fec71d2550bef8462d169b3c26aa14b Edward Thomson <ethomson@edwardthomson.com> 1355017793 -0600 reset: moving to 005b6fcc8fec71d2550bef8462d169b3c26aa14b
+005b6fcc8fec71d2550bef8462d169b3c26aa14b 0204a84f822acbf6386b36d33f1f6bc68bbbf858 Edward Thomson <ethomson@edwardthomson.com> 1355017826 -0600 reset: moving to 0204a84
+005b6fcc8fec71d2550bef8462d169b3c26aa14b e8107f24196736b870a318a0e28f048e29f6feff Edward Thomson <ethomson@edwardthomson.com> 1355169065 -0600 commit: df_side1
+e8107f24196736b870a318a0e28f048e29f6feff 80a8fbb3abb1ba423d554e9630b8fc2e5698f86b Edward Thomson <ethomson@edwardthomson.com> 1355169084 -0600 rebase -i (finish): refs/heads/df_side1 onto 005b6fc
+80a8fbb3abb1ba423d554e9630b8fc2e5698f86b e65a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812 Edward Thomson <ethomson@edwardthomson.com> 1355169419 -0600 commit: side1
+e65a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812 5dc1018e90b19654bee986b7a0c268804d39659d Edward Thomson <ethomson@edwardthomson.com> 1355169435 -0600 rebase -i (finish): refs/heads/df_side1 onto 80a8fbb
diff --git a/tests-clar/resources/merge-resolve/.gitted/logs/refs/heads/df_side2 b/tests-clar/resources/merge-resolve/.gitted/logs/refs/heads/df_side2
new file mode 100644
index 0000000..27d833e
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/logs/refs/heads/df_side2
@@ -0,0 +1,9 @@
+0000000000000000000000000000000000000000 d4207f77243500bec335ab477f9227fcdb1e271a Edward Thomson <ethomson@edwardthomson.com> 1354575051 -0600 branch: Created from d4207f77243500bec335ab477f9227fcdb1e271a
+d4207f77243500bec335ab477f9227fcdb1e271a f8958bdf4d365a84a9a178b1f5f35ff1dacbd884 Edward Thomson <ethomson@edwardthomson.com> 1354575206 -0600 commit: df_side2
+0204a84f822acbf6386b36d33f1f6bc68bbbf858 944f5dd1a867cab4c2bbcb896493435cae1dcc1a Edward Thomson <ethomson@edwardthomson.com> 1355169174 -0600 commit: both
+944f5dd1a867cab4c2bbcb896493435cae1dcc1a 57079a46233ae2b6df62e9ade71c4948512abefb Edward Thomson <ethomson@edwardthomson.com> 1355169185 -0600 rebase -i (finish): refs/heads/df_side2 onto 0204a84
+57079a46233ae2b6df62e9ade71c4948512abefb 58e853f66699fd02629fd50bde08082bc005933a Edward Thomson <ethomson@edwardthomson.com> 1355169460 -0600 commit: side2
+58e853f66699fd02629fd50bde08082bc005933a fada9356aa3f74622327a3038ae9c6f92e1c5c1d Edward Thomson <ethomson@edwardthomson.com> 1355169471 -0600 rebase -i (finish): refs/heads/df_side2 onto 57079a4
+fada9356aa3f74622327a3038ae9c6f92e1c5c1d 95646149ab6b6ba6edc83cff678582538b457b2b Edward Thomson <ethomson@edwardthomson.com> 1355169897 -0600 rebase finished: refs/heads/df_side2 onto a765fb87eb2f7a1920b73b2d5a057f8f8476a42b
+0000000000000000000000000000000000000000 2da538570bc1e5b2c3e855bf702f35248ad0735f Edward Thomson <ethomson@edwardthomson.com> 1355182087 -0600 branch: Created from HEAD
+2da538570bc1e5b2c3e855bf702f35248ad0735f fc90237dc4891fa6c69827fc465632225e391618 Edward Thomson <ethomson@edwardthomson.com> 1355182104 -0600 commit: df_side2
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/00/5b6fcc8fec71d2550bef8462d169b3c26aa14b b/tests-clar/resources/merge-resolve/.gitted/objects/00/5b6fcc8fec71d2550bef8462d169b3c26aa14b
new file mode 100644
index 0000000..82a8da5
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/00/5b6fcc8fec71d2550bef8462d169b3c26aa14b
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/00/c7d33f1ffa79d19c2272b370fcaeaadba49c08 b/tests-clar/resources/merge-resolve/.gitted/objects/00/c7d33f1ffa79d19c2272b370fcaeaadba49c08
new file mode 100644
index 0000000..72698dc
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/00/c7d33f1ffa79d19c2272b370fcaeaadba49c08
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/02/04a84f822acbf6386b36d33f1f6bc68bbbf858 b/tests-clar/resources/merge-resolve/.gitted/objects/02/04a84f822acbf6386b36d33f1f6bc68bbbf858
new file mode 100644
index 0000000..2f0a0e1
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/02/04a84f822acbf6386b36d33f1f6bc68bbbf858
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/03/2ebc5ab85d9553bb187d3cd40875ff23a63ed0 b/tests-clar/resources/merge-resolve/.gitted/objects/03/2ebc5ab85d9553bb187d3cd40875ff23a63ed0
new file mode 100644
index 0000000..e5404d8
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/03/2ebc5ab85d9553bb187d3cd40875ff23a63ed0
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/03/b87706555accbf874ccd410dbda01e8e70a67f b/tests-clar/resources/merge-resolve/.gitted/objects/03/b87706555accbf874ccd410dbda01e8e70a67f
new file mode 100644
index 0000000..0befcd7
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/03/b87706555accbf874ccd410dbda01e8e70a67f
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/09/17bb159596aea4d295f4857da77e8f96b3c7dc b/tests-clar/resources/merge-resolve/.gitted/objects/09/17bb159596aea4d295f4857da77e8f96b3c7dc
new file mode 100644
index 0000000..9fb640d
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/09/17bb159596aea4d295f4857da77e8f96b3c7dc
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/14/39088f509b79b1535b64193137d3ce4b240734 b/tests-clar/resources/merge-resolve/.gitted/objects/14/39088f509b79b1535b64193137d3ce4b240734
new file mode 100644
index 0000000..51ddf6d
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/14/39088f509b79b1535b64193137d3ce4b240734
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/1e/4ff029aee68d0d69ef9eb6efa6cbf1ec732f99 b/tests-clar/resources/merge-resolve/.gitted/objects/1e/4ff029aee68d0d69ef9eb6efa6cbf1ec732f99
new file mode 100644
index 0000000..5183b83
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/1e/4ff029aee68d0d69ef9eb6efa6cbf1ec732f99
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/21/671e290278286fb2ce4c63d01699b67adce331 b/tests-clar/resources/merge-resolve/.gitted/objects/21/671e290278286fb2ce4c63d01699b67adce331
new file mode 100644
index 0000000..b656d00
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/21/671e290278286fb2ce4c63d01699b67adce331
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/24/2591eb280ee9eeb2ce63524b9a8b9bc4cb515d b/tests-clar/resources/merge-resolve/.gitted/objects/24/2591eb280ee9eeb2ce63524b9a8b9bc4cb515d
new file mode 100644
index 0000000..74a0137
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/24/2591eb280ee9eeb2ce63524b9a8b9bc4cb515d
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/25/9d08ca43af9200e9ea9a098e44a5a350ebd9b3 b/tests-clar/resources/merge-resolve/.gitted/objects/25/9d08ca43af9200e9ea9a098e44a5a350ebd9b3
new file mode 100644
index 0000000..2bae669
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/25/9d08ca43af9200e9ea9a098e44a5a350ebd9b3
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/25/c40b7660c08c8fb581f770312f41b9b03119d1 b/tests-clar/resources/merge-resolve/.gitted/objects/25/c40b7660c08c8fb581f770312f41b9b03119d1
new file mode 100644
index 0000000..1852147
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/25/c40b7660c08c8fb581f770312f41b9b03119d1
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/27/133da702ba3c60af2a01e96c2555ff4045d692 b/tests-clar/resources/merge-resolve/.gitted/objects/27/133da702ba3c60af2a01e96c2555ff4045d692
new file mode 100644
index 0000000..08e61f8
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/27/133da702ba3c60af2a01e96c2555ff4045d692
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/2b/0de5dc27505dcdd83a75c8bf1fcd9462cd7add b/tests-clar/resources/merge-resolve/.gitted/objects/2b/0de5dc27505dcdd83a75c8bf1fcd9462cd7add
new file mode 100644
index 0000000..a95f926
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/2b/0de5dc27505dcdd83a75c8bf1fcd9462cd7add
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/2d/a538570bc1e5b2c3e855bf702f35248ad0735f b/tests-clar/resources/merge-resolve/.gitted/objects/2d/a538570bc1e5b2c3e855bf702f35248ad0735f
new file mode 100644
index 0000000..83253f8
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/2d/a538570bc1e5b2c3e855bf702f35248ad0735f
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/32/21dd512b7e2dc4b5bd03046df6c81b2ab2070b b/tests-clar/resources/merge-resolve/.gitted/objects/32/21dd512b7e2dc4b5bd03046df6c81b2ab2070b
new file mode 100644
index 0000000..d36138d
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/32/21dd512b7e2dc4b5bd03046df6c81b2ab2070b
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/35/0c6eb3010efc403a6bed682332635314e9ed58 b/tests-clar/resources/merge-resolve/.gitted/objects/35/0c6eb3010efc403a6bed682332635314e9ed58
new file mode 100644
index 0000000..2eee602
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/35/0c6eb3010efc403a6bed682332635314e9ed58
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/35/411bfb77cd2cc431f3a03a2b4976ed94b5d241 b/tests-clar/resources/merge-resolve/.gitted/objects/35/411bfb77cd2cc431f3a03a2b4976ed94b5d241
new file mode 100644
index 0000000..ea024cc
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/35/411bfb77cd2cc431f3a03a2b4976ed94b5d241
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/3e/f4d30382ca33fdeba9fda895a99e0891ba37aa b/tests-clar/resources/merge-resolve/.gitted/objects/3e/f4d30382ca33fdeba9fda895a99e0891ba37aa
new file mode 100644
index 0000000..49ee152
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/3e/f4d30382ca33fdeba9fda895a99e0891ba37aa
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/40/2784a46a4a3982294231594cbeb431f506d22c b/tests-clar/resources/merge-resolve/.gitted/objects/40/2784a46a4a3982294231594cbeb431f506d22c
new file mode 100644
index 0000000..a17e05d
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/40/2784a46a4a3982294231594cbeb431f506d22c
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/43/aafd43bea779ec74317dc361f45ae3f532a505 b/tests-clar/resources/merge-resolve/.gitted/objects/43/aafd43bea779ec74317dc361f45ae3f532a505
new file mode 100644
index 0000000..ac86823
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/43/aafd43bea779ec74317dc361f45ae3f532a505
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/46/6daf8552b891e5c22bc58c9d7fc1a2eb8f0289 b/tests-clar/resources/merge-resolve/.gitted/objects/46/6daf8552b891e5c22bc58c9d7fc1a2eb8f0289
new file mode 100644
index 0000000..c39b53a
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/46/6daf8552b891e5c22bc58c9d7fc1a2eb8f0289
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/49/130a28ef567af9a6a6104c38773fedfa5f9742 b/tests-clar/resources/merge-resolve/.gitted/objects/49/130a28ef567af9a6a6104c38773fedfa5f9742
new file mode 100644
index 0000000..e2c49f5
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/49/130a28ef567af9a6a6104c38773fedfa5f9742
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/49/9df817155e4bdd3c6ee192a72c52f481818230 b/tests-clar/resources/merge-resolve/.gitted/objects/49/9df817155e4bdd3c6ee192a72c52f481818230
new file mode 100644
index 0000000..9c7e471
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/49/9df817155e4bdd3c6ee192a72c52f481818230
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/4a/9550ebcc97ce22b22f45af7b829bb030d003f5 b/tests-clar/resources/merge-resolve/.gitted/objects/4a/9550ebcc97ce22b22f45af7b829bb030d003f5
new file mode 100644
index 0000000..6ec674a
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/4a/9550ebcc97ce22b22f45af7b829bb030d003f5
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/tests-clar/resources/merge-resolve/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904
new file mode 100644
index 0000000..adf6411
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/50/12fd565b1393bdfda1805d4ec38ce6619e1fd1 b/tests-clar/resources/merge-resolve/.gitted/objects/50/12fd565b1393bdfda1805d4ec38ce6619e1fd1
new file mode 100644
index 0000000..d629a23
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/50/12fd565b1393bdfda1805d4ec38ce6619e1fd1
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/50/84fc2a88b6bdba8db93bd3953a8f4fdb470238 b/tests-clar/resources/merge-resolve/.gitted/objects/50/84fc2a88b6bdba8db93bd3953a8f4fdb470238
new file mode 100644
index 0000000..84c9987
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/50/84fc2a88b6bdba8db93bd3953a8f4fdb470238
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/54/7607c690372fe81fab8e3bb44c530e129118fd b/tests-clar/resources/merge-resolve/.gitted/objects/54/7607c690372fe81fab8e3bb44c530e129118fd
new file mode 100644
index 0000000..dccd220
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/54/7607c690372fe81fab8e3bb44c530e129118fd
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/57/079a46233ae2b6df62e9ade71c4948512abefb b/tests-clar/resources/merge-resolve/.gitted/objects/57/079a46233ae2b6df62e9ade71c4948512abefb
new file mode 100644
index 0000000..c7eabc4
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/57/079a46233ae2b6df62e9ade71c4948512abefb
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/58/e853f66699fd02629fd50bde08082bc005933a b/tests-clar/resources/merge-resolve/.gitted/objects/58/e853f66699fd02629fd50bde08082bc005933a
new file mode 100644
index 0000000..cf6db63
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/58/e853f66699fd02629fd50bde08082bc005933a
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/5c/2411f8075f48a6b2fdb85ebc0d371747c4df15 b/tests-clar/resources/merge-resolve/.gitted/objects/5c/2411f8075f48a6b2fdb85ebc0d371747c4df15
new file mode 100644
index 0000000..7b41413
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/5c/2411f8075f48a6b2fdb85ebc0d371747c4df15
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/5c/341ead2ba6f2af98ce5ec3fe84f6b6d2899c0d b/tests-clar/resources/merge-resolve/.gitted/objects/5c/341ead2ba6f2af98ce5ec3fe84f6b6d2899c0d
new file mode 100644
index 0000000..63c86bd
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/5c/341ead2ba6f2af98ce5ec3fe84f6b6d2899c0d
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/5d/c1018e90b19654bee986b7a0c268804d39659d b/tests-clar/resources/merge-resolve/.gitted/objects/5d/c1018e90b19654bee986b7a0c268804d39659d
new file mode 100644
index 0000000..7500b99
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/5d/c1018e90b19654bee986b7a0c268804d39659d
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/61/340eeed7340fa6a8792def9a5938bb5d4434bb b/tests-clar/resources/merge-resolve/.gitted/objects/61/340eeed7340fa6a8792def9a5938bb5d4434bb
new file mode 100644
index 0000000..e830caf
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/61/340eeed7340fa6a8792def9a5938bb5d4434bb
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/61/78885b38fe96e825ac0f492c0a941f288b37f6 b/tests-clar/resources/merge-resolve/.gitted/objects/61/78885b38fe96e825ac0f492c0a941f288b37f6
new file mode 100644
index 0000000..bedc5f2
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/61/78885b38fe96e825ac0f492c0a941f288b37f6
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/62/c4f6533c9a3894191fdcb96a3be935ade63f1a b/tests-clar/resources/merge-resolve/.gitted/objects/62/c4f6533c9a3894191fdcb96a3be935ade63f1a
new file mode 100644
index 0000000..c0f822d
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/62/c4f6533c9a3894191fdcb96a3be935ade63f1a
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/6b/7e37be8ce0b897093f2878a9dcd8f396beda2c b/tests-clar/resources/merge-resolve/.gitted/objects/6b/7e37be8ce0b897093f2878a9dcd8f396beda2c
new file mode 100644
index 0000000..c393186
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/6b/7e37be8ce0b897093f2878a9dcd8f396beda2c
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/6c/06dcd163587c2cc18be44857e0b71116382aeb b/tests-clar/resources/merge-resolve/.gitted/objects/6c/06dcd163587c2cc18be44857e0b71116382aeb
new file mode 100644
index 0000000..2f54be8
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/6c/06dcd163587c2cc18be44857e0b71116382aeb
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/6f/be9fb85c86d7d1435f728da418bdff52c640a9 b/tests-clar/resources/merge-resolve/.gitted/objects/6f/be9fb85c86d7d1435f728da418bdff52c640a9
new file mode 100644
index 0000000..a2c8d93
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/6f/be9fb85c86d7d1435f728da418bdff52c640a9
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/74/df13f0793afdaa972150bba976f7de8284914e b/tests-clar/resources/merge-resolve/.gitted/objects/74/df13f0793afdaa972150bba976f7de8284914e
new file mode 100644
index 0000000..cb50e67
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/74/df13f0793afdaa972150bba976f7de8284914e
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/76/63fce0130db092936b137cabd693ec234eb060 b/tests-clar/resources/merge-resolve/.gitted/objects/76/63fce0130db092936b137cabd693ec234eb060
new file mode 100644
index 0000000..f578a4a
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/76/63fce0130db092936b137cabd693ec234eb060
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/76/ab0e2868197ec158ddd6c78d8a0d2fd73d38f9 b/tests-clar/resources/merge-resolve/.gitted/objects/76/ab0e2868197ec158ddd6c78d8a0d2fd73d38f9
new file mode 100644
index 0000000..4d41ad8
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/76/ab0e2868197ec158ddd6c78d8a0d2fd73d38f9
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/80/a8fbb3abb1ba423d554e9630b8fc2e5698f86b b/tests-clar/resources/merge-resolve/.gitted/objects/80/a8fbb3abb1ba423d554e9630b8fc2e5698f86b
new file mode 100644
index 0000000..3daf6c3
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/80/a8fbb3abb1ba423d554e9630b8fc2e5698f86b
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/83/824a8c6658768e2013905219cc8c64cc3d9a2e b/tests-clar/resources/merge-resolve/.gitted/objects/83/824a8c6658768e2013905219cc8c64cc3d9a2e
new file mode 100644
index 0000000..066190f
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/83/824a8c6658768e2013905219cc8c64cc3d9a2e
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/84/9619b03ae540acee4d1edec96b86993da6b497 b/tests-clar/resources/merge-resolve/.gitted/objects/84/9619b03ae540acee4d1edec96b86993da6b497
new file mode 100644
index 0000000..67271ac
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/84/9619b03ae540acee4d1edec96b86993da6b497
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/86/088dae8bade454995b21a1c88107b0e1accdab b/tests-clar/resources/merge-resolve/.gitted/objects/86/088dae8bade454995b21a1c88107b0e1accdab
new file mode 100644
index 0000000..623a747
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/86/088dae8bade454995b21a1c88107b0e1accdab
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/87/b4926260d77a3b851e71ecce06839bd650b231 b/tests-clar/resources/merge-resolve/.gitted/objects/87/b4926260d77a3b851e71ecce06839bd650b231
new file mode 100644
index 0000000..91944ff
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/87/b4926260d77a3b851e71ecce06839bd650b231
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/8a/ad9d0ea334951da47b621a475b39cc6ed759bf b/tests-clar/resources/merge-resolve/.gitted/objects/8a/ad9d0ea334951da47b621a475b39cc6ed759bf
new file mode 100644
index 0000000..5e2c943
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/8a/ad9d0ea334951da47b621a475b39cc6ed759bf
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/8c/749d9968d4b10dcfb06c9f97d0e5d92d337071 b/tests-clar/resources/merge-resolve/.gitted/objects/8c/749d9968d4b10dcfb06c9f97d0e5d92d337071
new file mode 100644
index 0000000..e42393c
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/8c/749d9968d4b10dcfb06c9f97d0e5d92d337071
@@ -0,0 +1,2 @@
+x¥AB!C]s
+. aùcÜx÷f`|_b¼¾h¼»ö5mëº^»¶ÞmzÑÙL`ð}$26#"8°ÅÆ`s.`Ôܺ.!bH\<» i´"Á,K¦8¯èÙÚô_ÔXº>êMïeÐ:Ê7ø¹]®ëAC40ÏÞëQ³]þQ\.Ä,¬ÞVO
\ No newline at end of file
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/93/77fccdb210540b8c0520cc6e80eb632c20bd25 b/tests-clar/resources/merge-resolve/.gitted/objects/93/77fccdb210540b8c0520cc6e80eb632c20bd25
new file mode 100644
index 0000000..4b2d93b
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/93/77fccdb210540b8c0520cc6e80eb632c20bd25
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/94/4f5dd1a867cab4c2bbcb896493435cae1dcc1a b/tests-clar/resources/merge-resolve/.gitted/objects/94/4f5dd1a867cab4c2bbcb896493435cae1dcc1a
new file mode 100644
index 0000000..1430938
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/94/4f5dd1a867cab4c2bbcb896493435cae1dcc1a
@@ -0,0 +1,2 @@
+x¥K!D]s
+. zÄ7ÞÀÐ|2.b¼¾h¼»ªWÉKÅVëmH0~7zÎÒ"¦PÈ9`ò:»ÀÑQôi)QÈLEyq=oC*P6-"4l0StAHÌ<u$Âs¬ËKz
äumõÑ6yÌ~Ò9_;ÄVORç4z½X¹W¨tùOà6Vññ4NF
\ No newline at end of file
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/95/646149ab6b6ba6edc83cff678582538b457b2b b/tests-clar/resources/merge-resolve/.gitted/objects/95/646149ab6b6ba6edc83cff678582538b457b2b
new file mode 100644
index 0000000..de9ba28
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/95/646149ab6b6ba6edc83cff678582538b457b2b
@@ -0,0 +1,3 @@
+xMÂ
]s
+. ÃOboàÞeH»h1ãõEÓ¸{?y_ÞXenR}hY* üHFS
+S !$À1
¨Å*¯M³£wUv4ôIt:ªè²ÏÞ8KFEA¯6*oéM5ÉûT¬òÌ=ýª+ÿÝÆ²\ä Ñ CVÁö³ÿÆà`nÇÛXiO\
\ No newline at end of file
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/96/8ca794a4597f7f6abbb2b8d940b4078a0f3fd4 b/tests-clar/resources/merge-resolve/.gitted/objects/96/8ca794a4597f7f6abbb2b8d940b4078a0f3fd4
new file mode 100644
index 0000000..359e43a
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/96/8ca794a4597f7f6abbb2b8d940b4078a0f3fd4
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/9a/301fbe6fada7dcb74fcd7c20269b5c743459a7 b/tests-clar/resources/merge-resolve/.gitted/objects/9a/301fbe6fada7dcb74fcd7c20269b5c743459a7
new file mode 100644
index 0000000..f413cc5
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/9a/301fbe6fada7dcb74fcd7c20269b5c743459a7
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/9a/f731fa116d1eb9a6c0109562472cfee6f5a979 b/tests-clar/resources/merge-resolve/.gitted/objects/9a/f731fa116d1eb9a6c0109562472cfee6f5a979
new file mode 100644
index 0000000..53233c4
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/9a/f731fa116d1eb9a6c0109562472cfee6f5a979
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/9e/fe7723802d4305142eee177e018fee1572c4f4 b/tests-clar/resources/merge-resolve/.gitted/objects/9e/fe7723802d4305142eee177e018fee1572c4f4
new file mode 100644
index 0000000..c63fc2c
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/9e/fe7723802d4305142eee177e018fee1572c4f4
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/a0/31a28ae70e33a641ce4b8a8f6317f1ab79dee4 b/tests-clar/resources/merge-resolve/.gitted/objects/a0/31a28ae70e33a641ce4b8a8f6317f1ab79dee4
new file mode 100644
index 0000000..a6c05d1
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/a0/31a28ae70e33a641ce4b8a8f6317f1ab79dee4
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/a3/9a620dae5bc8b4e771cd4d251b7d080401a21e b/tests-clar/resources/merge-resolve/.gitted/objects/a3/9a620dae5bc8b4e771cd4d251b7d080401a21e
new file mode 100644
index 0000000..4d22586
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/a3/9a620dae5bc8b4e771cd4d251b7d080401a21e
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/a4/1b1bb6d0be3c22fb654234c33b428e15c8cc27 b/tests-clar/resources/merge-resolve/.gitted/objects/a4/1b1bb6d0be3c22fb654234c33b428e15c8cc27
new file mode 100644
index 0000000..60789ee
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/a4/1b1bb6d0be3c22fb654234c33b428e15c8cc27
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/a5/563304ddf6caba25cb50323a2ea6f7dbfcadca b/tests-clar/resources/merge-resolve/.gitted/objects/a5/563304ddf6caba25cb50323a2ea6f7dbfcadca
new file mode 100644
index 0000000..a831878
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/a5/563304ddf6caba25cb50323a2ea6f7dbfcadca
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/a7/08b253bd507417ec42d1467a7fd2d7519c4956 b/tests-clar/resources/merge-resolve/.gitted/objects/a7/08b253bd507417ec42d1467a7fd2d7519c4956
new file mode 100644
index 0000000..bae752a
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/a7/08b253bd507417ec42d1467a7fd2d7519c4956
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/a7/65fb87eb2f7a1920b73b2d5a057f8f8476a42b b/tests-clar/resources/merge-resolve/.gitted/objects/a7/65fb87eb2f7a1920b73b2d5a057f8f8476a42b
new file mode 100644
index 0000000..30abd8b
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/a7/65fb87eb2f7a1920b73b2d5a057f8f8476a42b
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/a7/dbfcbfc1a60709cb80b5ca24539008456531d0 b/tests-clar/resources/merge-resolve/.gitted/objects/a7/dbfcbfc1a60709cb80b5ca24539008456531d0
new file mode 100644
index 0000000..67126c9
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/a7/dbfcbfc1a60709cb80b5ca24539008456531d0
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/a9/0bc3fb6f15181972a2959a921429efbd81a473 b/tests-clar/resources/merge-resolve/.gitted/objects/a9/0bc3fb6f15181972a2959a921429efbd81a473
new file mode 100644
index 0000000..91113ee
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/a9/0bc3fb6f15181972a2959a921429efbd81a473
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/ab/929391ac42572f92110f3deeb4f0844a951e22 b/tests-clar/resources/merge-resolve/.gitted/objects/ab/929391ac42572f92110f3deeb4f0844a951e22
new file mode 100644
index 0000000..8840d00
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/ab/929391ac42572f92110f3deeb4f0844a951e22
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/ac/4045f965119e6998f4340ed0f411decfb3ec05 b/tests-clar/resources/merge-resolve/.gitted/objects/ac/4045f965119e6998f4340ed0f411decfb3ec05
new file mode 100644
index 0000000..4c32d63
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/ac/4045f965119e6998f4340ed0f411decfb3ec05
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/ad/a14492498136771f69dd451866cabcb0e9ef9a b/tests-clar/resources/merge-resolve/.gitted/objects/ad/a14492498136771f69dd451866cabcb0e9ef9a
new file mode 100644
index 0000000..71023de
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/ad/a14492498136771f69dd451866cabcb0e9ef9a
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/b7/a2576f9fc20024ac9ef17cb134acbd1ac73127 b/tests-clar/resources/merge-resolve/.gitted/objects/b7/a2576f9fc20024ac9ef17cb134acbd1ac73127
new file mode 100644
index 0000000..22f2d13
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/b7/a2576f9fc20024ac9ef17cb134acbd1ac73127
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/b8/a3a806d3950e8c0a03a34f234a92eff0e2c68d b/tests-clar/resources/merge-resolve/.gitted/objects/b8/a3a806d3950e8c0a03a34f234a92eff0e2c68d
new file mode 100644
index 0000000..24f0299
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/b8/a3a806d3950e8c0a03a34f234a92eff0e2c68d
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/ba/cac9b3493509aa15e1730e1545fc0919d1dae0 b/tests-clar/resources/merge-resolve/.gitted/objects/ba/cac9b3493509aa15e1730e1545fc0919d1dae0
new file mode 100644
index 0000000..f35586f
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/ba/cac9b3493509aa15e1730e1545fc0919d1dae0
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/bc/744705e1d8a019993cf88f62bc4020f1b80919 b/tests-clar/resources/merge-resolve/.gitted/objects/bc/744705e1d8a019993cf88f62bc4020f1b80919
new file mode 100644
index 0000000..0d4bdb3
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/bc/744705e1d8a019993cf88f62bc4020f1b80919
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/bd/867fbae2faa80b920b002b80b1c91bcade7784 b/tests-clar/resources/merge-resolve/.gitted/objects/bd/867fbae2faa80b920b002b80b1c91bcade7784
new file mode 100644
index 0000000..0f74219
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/bd/867fbae2faa80b920b002b80b1c91bcade7784
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/c0/6a9be584ac49aa02c5551312d9e2982c91df10 b/tests-clar/resources/merge-resolve/.gitted/objects/c0/6a9be584ac49aa02c5551312d9e2982c91df10
new file mode 100644
index 0000000..963ef23
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/c0/6a9be584ac49aa02c5551312d9e2982c91df10
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/c1/b17981db0840109a820dae8674ee29684134ff b/tests-clar/resources/merge-resolve/.gitted/objects/c1/b17981db0840109a820dae8674ee29684134ff
new file mode 100644
index 0000000..fdcf28c
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/c1/b17981db0840109a820dae8674ee29684134ff
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/c1/b6a51bbb87c2f82b161412c3d20b59fc69b090 b/tests-clar/resources/merge-resolve/.gitted/objects/c1/b6a51bbb87c2f82b161412c3d20b59fc69b090
new file mode 100644
index 0000000..3b369f8
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/c1/b6a51bbb87c2f82b161412c3d20b59fc69b090
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/c9/4b27e41064c521120627e07e2035cca1d24ffa b/tests-clar/resources/merge-resolve/.gitted/objects/c9/4b27e41064c521120627e07e2035cca1d24ffa
new file mode 100644
index 0000000..fd1ec9f
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/c9/4b27e41064c521120627e07e2035cca1d24ffa
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/ca/b2cf23998b40f1af2d9d9a756dc9e285a8df4b b/tests-clar/resources/merge-resolve/.gitted/objects/ca/b2cf23998b40f1af2d9d9a756dc9e285a8df4b
new file mode 100644
index 0000000..32ba2aa
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/ca/b2cf23998b40f1af2d9d9a756dc9e285a8df4b
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/ce/8860d49e3bea6fd745874a01b7c3e46da8cbc3 b/tests-clar/resources/merge-resolve/.gitted/objects/ce/8860d49e3bea6fd745874a01b7c3e46da8cbc3
new file mode 100644
index 0000000..860f995
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/ce/8860d49e3bea6fd745874a01b7c3e46da8cbc3
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/cf/8c5cc8a85a1ff5a4ba51e0bc7cf5665669924d b/tests-clar/resources/merge-resolve/.gitted/objects/cf/8c5cc8a85a1ff5a4ba51e0bc7cf5665669924d
new file mode 100644
index 0000000..36b0289
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/cf/8c5cc8a85a1ff5a4ba51e0bc7cf5665669924d
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/d3/7aa3bbfe1c0c49b909781251b956dbabe85f96 b/tests-clar/resources/merge-resolve/.gitted/objects/d3/7aa3bbfe1c0c49b909781251b956dbabe85f96
new file mode 100644
index 0000000..5902e0f
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/d3/7aa3bbfe1c0c49b909781251b956dbabe85f96
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/d4/207f77243500bec335ab477f9227fcdb1e271a b/tests-clar/resources/merge-resolve/.gitted/objects/d4/207f77243500bec335ab477f9227fcdb1e271a
new file mode 100644
index 0000000..862e4e5
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/d4/207f77243500bec335ab477f9227fcdb1e271a
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/d5/093787ef302b941b6aab081b99fb4880038bd8 b/tests-clar/resources/merge-resolve/.gitted/objects/d5/093787ef302b941b6aab081b99fb4880038bd8
new file mode 100644
index 0000000..7d73449
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/d5/093787ef302b941b6aab081b99fb4880038bd8
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/d5/a61b0b4992a4f0caa887fa08b52431e727bb6f b/tests-clar/resources/merge-resolve/.gitted/objects/d5/a61b0b4992a4f0caa887fa08b52431e727bb6f
new file mode 100644
index 0000000..a7921de
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/d5/a61b0b4992a4f0caa887fa08b52431e727bb6f
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/d5/b6fc965c926a1bfc9ee456042b94088b5c5d21 b/tests-clar/resources/merge-resolve/.gitted/objects/d5/b6fc965c926a1bfc9ee456042b94088b5c5d21
new file mode 100644
index 0000000..924bdbb
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/d5/b6fc965c926a1bfc9ee456042b94088b5c5d21
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/d6/462fa3f5292857db599c54aea2bf91616230c5 b/tests-clar/resources/merge-resolve/.gitted/objects/d6/462fa3f5292857db599c54aea2bf91616230c5
new file mode 100644
index 0000000..baae3f0
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/d6/462fa3f5292857db599c54aea2bf91616230c5
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/d9/63979c237d08b6ba39062ee7bf64c7d34a27f8 b/tests-clar/resources/merge-resolve/.gitted/objects/d9/63979c237d08b6ba39062ee7bf64c7d34a27f8
new file mode 100644
index 0000000..5fa1040
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/d9/63979c237d08b6ba39062ee7bf64c7d34a27f8
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/dd/9a570c3400e6e07bc4d7651d6e20b08926b3d9 b/tests-clar/resources/merge-resolve/.gitted/objects/dd/9a570c3400e6e07bc4d7651d6e20b08926b3d9
new file mode 100644
index 0000000..8fd60cb
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/dd/9a570c3400e6e07bc4d7651d6e20b08926b3d9
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/e0/67f9361140f19391472df8a82d6610813c73b7 b/tests-clar/resources/merge-resolve/.gitted/objects/e0/67f9361140f19391472df8a82d6610813c73b7
new file mode 100644
index 0000000..955431d
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/e0/67f9361140f19391472df8a82d6610813c73b7
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/e1/129b3cfb5898e0fbd606e0cb80b2755e50d161 b/tests-clar/resources/merge-resolve/.gitted/objects/e1/129b3cfb5898e0fbd606e0cb80b2755e50d161
new file mode 100644
index 0000000..751f1dd
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/e1/129b3cfb5898e0fbd606e0cb80b2755e50d161
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/e4/9f917b448d1340b31d76e54ba388268fd4c922 b/tests-clar/resources/merge-resolve/.gitted/objects/e4/9f917b448d1340b31d76e54ba388268fd4c922
new file mode 100644
index 0000000..870c3e7
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/e4/9f917b448d1340b31d76e54ba388268fd4c922
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/e6/5a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812 b/tests-clar/resources/merge-resolve/.gitted/objects/e6/5a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812
new file mode 100644
index 0000000..72f1cbc
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/e6/5a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/e8/107f24196736b870a318a0e28f048e29f6feff b/tests-clar/resources/merge-resolve/.gitted/objects/e8/107f24196736b870a318a0e28f048e29f6feff
new file mode 100644
index 0000000..ffcf843
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/e8/107f24196736b870a318a0e28f048e29f6feff
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/e9/2cdb7017dc6c5aed25cb4202c5b0104b872246 b/tests-clar/resources/merge-resolve/.gitted/objects/e9/2cdb7017dc6c5aed25cb4202c5b0104b872246
new file mode 100644
index 0000000..cb1260e
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/e9/2cdb7017dc6c5aed25cb4202c5b0104b872246
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/e9/ad6ec3e38364a3d07feda7c4197d4d845c53b5 b/tests-clar/resources/merge-resolve/.gitted/objects/e9/ad6ec3e38364a3d07feda7c4197d4d845c53b5
new file mode 100644
index 0000000..da4a5ed
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/e9/ad6ec3e38364a3d07feda7c4197d4d845c53b5
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/e9/f48beccc62d535739bfbdebe0a55ed716d8366 b/tests-clar/resources/merge-resolve/.gitted/objects/e9/f48beccc62d535739bfbdebe0a55ed716d8366
new file mode 100644
index 0000000..23c59e4
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/e9/f48beccc62d535739bfbdebe0a55ed716d8366
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/ee/1d6f164893c1866a323f072eeed36b855656be b/tests-clar/resources/merge-resolve/.gitted/objects/ee/1d6f164893c1866a323f072eeed36b855656be
new file mode 100644
index 0000000..87d8080
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/ee/1d6f164893c1866a323f072eeed36b855656be
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/f2/0c9063fa0bda9a397c96947a7b687305c49753 b/tests-clar/resources/merge-resolve/.gitted/objects/f2/0c9063fa0bda9a397c96947a7b687305c49753
new file mode 100644
index 0000000..34d9aed
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/f2/0c9063fa0bda9a397c96947a7b687305c49753
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/f4/15caf3fcad16304cb424b67f0ee6b12dc03aae b/tests-clar/resources/merge-resolve/.gitted/objects/f4/15caf3fcad16304cb424b67f0ee6b12dc03aae
new file mode 100644
index 0000000..21ce1a0
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/f4/15caf3fcad16304cb424b67f0ee6b12dc03aae
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/f5/504f36e6f4eb797a56fc5bac6c6c7f32969bf2 b/tests-clar/resources/merge-resolve/.gitted/objects/f5/504f36e6f4eb797a56fc5bac6c6c7f32969bf2
new file mode 100644
index 0000000..2aa0c3b
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/f5/504f36e6f4eb797a56fc5bac6c6c7f32969bf2
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/f5/b50c85a87cac64d7eb3254cdd1aec9564c0293 b/tests-clar/resources/merge-resolve/.gitted/objects/f5/b50c85a87cac64d7eb3254cdd1aec9564c0293
new file mode 100644
index 0000000..c1885cb
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/f5/b50c85a87cac64d7eb3254cdd1aec9564c0293
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/f8/958bdf4d365a84a9a178b1f5f35ff1dacbd884 b/tests-clar/resources/merge-resolve/.gitted/objects/f8/958bdf4d365a84a9a178b1f5f35ff1dacbd884
new file mode 100644
index 0000000..5dbbef2
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/f8/958bdf4d365a84a9a178b1f5f35ff1dacbd884
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/fa/da9356aa3f74622327a3038ae9c6f92e1c5c1d b/tests-clar/resources/merge-resolve/.gitted/objects/fa/da9356aa3f74622327a3038ae9c6f92e1c5c1d
new file mode 100644
index 0000000..16ce49a
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/fa/da9356aa3f74622327a3038ae9c6f92e1c5c1d
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/fc/4c636d6515e9e261f9260dbcf3cc6eca97ea08 b/tests-clar/resources/merge-resolve/.gitted/objects/fc/4c636d6515e9e261f9260dbcf3cc6eca97ea08
new file mode 100644
index 0000000..be8a810
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/fc/4c636d6515e9e261f9260dbcf3cc6eca97ea08
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/fc/90237dc4891fa6c69827fc465632225e391618 b/tests-clar/resources/merge-resolve/.gitted/objects/fc/90237dc4891fa6c69827fc465632225e391618
new file mode 100644
index 0000000..961814b
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/fc/90237dc4891fa6c69827fc465632225e391618
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/objects/ff/b312248d607284c290023f9502eea010d34efd b/tests-clar/resources/merge-resolve/.gitted/objects/ff/b312248d607284c290023f9502eea010d34efd
new file mode 100644
index 0000000..7e46c4f
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/objects/ff/b312248d607284c290023f9502eea010d34efd
Binary files differ
diff --git a/tests-clar/resources/merge-resolve/.gitted/refs/heads/df_ancestor b/tests-clar/resources/merge-resolve/.gitted/refs/heads/df_ancestor
new file mode 100644
index 0000000..4bc37ac
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/refs/heads/df_ancestor
@@ -0,0 +1 @@
+2da538570bc1e5b2c3e855bf702f35248ad0735f
diff --git a/tests-clar/resources/merge-resolve/.gitted/refs/heads/df_side1 b/tests-clar/resources/merge-resolve/.gitted/refs/heads/df_side1
new file mode 100644
index 0000000..ca6dd67
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/refs/heads/df_side1
@@ -0,0 +1 @@
+a7dbfcbfc1a60709cb80b5ca24539008456531d0
diff --git a/tests-clar/resources/merge-resolve/.gitted/refs/heads/df_side2 b/tests-clar/resources/merge-resolve/.gitted/refs/heads/df_side2
new file mode 100644
index 0000000..b8160f8
--- /dev/null
+++ b/tests-clar/resources/merge-resolve/.gitted/refs/heads/df_side2
@@ -0,0 +1 @@
+fc90237dc4891fa6c69827fc465632225e391618
diff --git a/tests-clar/treediff/threeway.c b/tests-clar/treediff/threeway.c
index d1d1e6a..a210fca 100644
--- a/tests-clar/treediff/threeway.c
+++ b/tests-clar/treediff/threeway.c
@@ -7,11 +7,15 @@
#define TEST_REPO_PATH "merge-resolve"
-#define TREE_OID_ANCESTOR "0d52e3a556e189ba0948ae56780918011c1b167d"
-#define TREE_OID_MASTER "1f81433e3161efbf250576c58fede7f6b836f3d3"
-#define TREE_OID_BRANCH "eea9286df54245fea72c5b557291470eb825f38f"
-#define TREE_OID_RENAMES1 "f5f9dd5886a6ee20272be0aafc790cba43b31931"
-#define TREE_OID_RENAMES2 "5fbfbdc04b4eca46f54f4853a3c5a1dce28f5165"
+#define TREE_OID_ANCESTOR "0d52e3a556e189ba0948ae56780918011c1b167d"
+#define TREE_OID_MASTER "1f81433e3161efbf250576c58fede7f6b836f3d3"
+#define TREE_OID_BRANCH "eea9286df54245fea72c5b557291470eb825f38f"
+#define TREE_OID_RENAMES1 "f5f9dd5886a6ee20272be0aafc790cba43b31931"
+#define TREE_OID_RENAMES2 "5fbfbdc04b4eca46f54f4853a3c5a1dce28f5165"
+
+#define TREE_OID_DF_ANCESTOR "b8a3a806d3950e8c0a03a34f234a92eff0e2c68d"
+#define TREE_OID_DF_SIDE1 "ee1d6f164893c1866a323f072eeed36b855656be"
+#define TREE_OID_DF_SIDE2 "6178885b38fe96e825ac0f492c0a941f288b37f6"
void test_treediff_threeway__initialize(void)
{
@@ -30,46 +34,60 @@
unsigned int status;
};
-struct treediff_data {
- size_t trees_len;
- struct treediff_file_data *file_data;
- size_t file_data_len;
-
- size_t i;
+struct treediff_delta_data {
+ struct treediff_file_data ancestor;
+ struct treediff_file_data ours;
+ struct treediff_file_data theirs;
+ git_diff_tree_conflict_t conflict;
+ git_diff_tree_df_conflict_t df_conflict;
};
+struct treediff_cb_data {
+ struct treediff_delta_data *delta_data;
+ size_t delta_data_len;
+
+ size_t idx;
+};
+
+static bool treediff_cmp(
+ const git_diff_tree_entry *diff_tree_entry,
+ const struct treediff_file_data *expected)
+{
+ git_oid oid;
+
+ if (expected->mode == 0) {
+ if (diff_tree_entry->file.path != NULL)
+ return 0;
+ } else {
+ if (diff_tree_entry->file.path == NULL)
+ return 0;
+
+ cl_git_pass(git_oid_fromstr(&oid, expected->oid_str));
+
+ if (strcmp(expected->path, diff_tree_entry->file.path) != 0 ||
+ git_oid_cmp(&oid, &diff_tree_entry->file.oid) != 0)
+ return 0;
+ }
+
+ if (expected->status != diff_tree_entry->status)
+ return 0;
+
+ return 1;
+}
+
static int treediff_cb(const git_diff_tree_delta *delta, void *cb_data)
{
- struct treediff_data *treediff_data = cb_data;
- git_diff_tree_entry const *tree_entries[3];
- size_t idx = treediff_data->i * treediff_data->trees_len;
- git_oid oid;
- size_t i;
+ struct treediff_cb_data *treediff_cb_data = cb_data;
+ struct treediff_delta_data *delta_data = &treediff_cb_data->delta_data[treediff_cb_data->idx];
- tree_entries[0] = &delta->ancestor;
- tree_entries[1] = &delta->ours;
- tree_entries[2] = &delta->theirs;
-
- for (i = 0; i < treediff_data->trees_len; i++) {
- if (treediff_data->file_data[idx+i].mode == 0) {
- if (tree_entries[i]->file.path != NULL)
- return -1;
- } else {
- if (tree_entries[i]->file.path == NULL)
- return -1;
-
- cl_git_pass(git_oid_fromstr(&oid, treediff_data->file_data[idx+i].oid_str));
-
- if (strcmp(treediff_data->file_data[idx+i].path, tree_entries[i]->file.path) != 0 ||
- git_oid_cmp(&oid, &tree_entries[i]->file.oid) != 0)
- return -1;
- }
-
- if (tree_entries[i]->status != treediff_data->file_data[idx+i].status)
- return -1;
- }
-
- treediff_data->i++;
+ cl_assert(treediff_cmp(&delta->ancestor, &delta_data->ancestor));
+ cl_assert(treediff_cmp(&delta->ours, &delta_data->ours));
+ cl_assert(treediff_cmp(&delta->theirs, &delta_data->theirs));
+
+ cl_assert(delta->conflict == delta_data->conflict);
+ cl_assert(delta->df_conflict == delta_data->df_conflict);
+
+ treediff_cb_data->idx++;
return 0;
}
@@ -78,13 +96,13 @@
const char *ancestor_oidstr,
const char *ours_oidstr,
const char *theirs_oidstr,
- struct treediff_file_data *treediff_file_data,
- size_t treediff_file_data_len)
+ struct treediff_delta_data *treediff_delta_data,
+ size_t treediff_delta_data_len)
{
git_diff_tree_list *diff_tree;
git_oid ancestor_oid, ours_oid, theirs_oid;
git_tree *ancestor_tree, *ours_tree, *theirs_tree;
- struct treediff_data treediff_data = {0};
+ struct treediff_cb_data treediff_cb_data = {0};
cl_git_pass(git_oid_fromstr(&ancestor_oid, ancestor_oidstr));
cl_git_pass(git_oid_fromstr(&ours_oid, ours_oidstr));
@@ -96,12 +114,12 @@
cl_git_pass(git_diff_tree(&diff_tree, repo, ancestor_tree, ours_tree, theirs_tree, 0));
- cl_assert(treediff_file_data_len == diff_tree->deltas.length);
+ cl_assert(treediff_delta_data_len == diff_tree->deltas.length);
- treediff_data.trees_len = 3;
- treediff_data.file_data = treediff_file_data;
+ treediff_cb_data.delta_data = treediff_delta_data;
+ treediff_cb_data.delta_data_len = treediff_delta_data_len;
- cl_git_pass(git_diff_tree_foreach(diff_tree, treediff_cb, &treediff_data));
+ cl_git_pass(git_diff_tree_foreach(diff_tree, treediff_cb, &treediff_cb_data));
git_tree_free(ancestor_tree);
git_tree_free(ours_tree);
@@ -114,41 +132,221 @@
{
git_diff_tree_list *diff_tree;
- struct treediff_file_data treediff_file_data[] = {
- { 0, "", "", GIT_DELTA_UNMODIFIED },
- { 0100644, "added-in-master.txt", "233c0919c998ed110a4b6ff36f353aec8b713487", GIT_DELTA_ADDED },
- { 0, "", "", GIT_DELTA_UNMODIFIED },
-
- { 0100644, "automergeable.txt", "6212c31dab5e482247d7977e4f0dd3601decf13b", GIT_DELTA_UNMODIFIED },
- { 0100644, "automergeable.txt", "ee3fa1b8c00aff7fe02065fdb50864bb0d932ccf", GIT_DELTA_MODIFIED },
- { 0100644, "automergeable.txt", "058541fc37114bfc1dddf6bd6bffc7fae5c2e6fe", GIT_DELTA_MODIFIED },
-
- { 0100644, "changed-in-branch.txt", "ab6c44a2e84492ad4b41bb6bac87353e9d02ac8b", GIT_DELTA_UNMODIFIED },
- { 0100644, "changed-in-branch.txt", "ab6c44a2e84492ad4b41bb6bac87353e9d02ac8b", GIT_DELTA_UNMODIFIED },
- { 0100644, "changed-in-branch.txt", "4eb04c9e79e88f6640d01ff5b25ca2a60764f216", GIT_DELTA_MODIFIED },
-
- { 0100644, "changed-in-master.txt", "ab6c44a2e84492ad4b41bb6bac87353e9d02ac8b", GIT_DELTA_UNMODIFIED },
- { 0100644, "changed-in-master.txt", "11deab00b2d3a6f5a3073988ac050c2d7b6655e2", GIT_DELTA_MODIFIED },
- { 0100644, "changed-in-master.txt", "ab6c44a2e84492ad4b41bb6bac87353e9d02ac8b", GIT_DELTA_UNMODIFIED },
-
- { 0100644, "conflicting.txt", "d427e0b2e138501a3d15cc376077a3631e15bd46", GIT_DELTA_UNMODIFIED },
- { 0100644, "conflicting.txt", "4e886e602529caa9ab11d71f86634bd1b6e0de10", GIT_DELTA_MODIFIED },
- { 0100644, "conflicting.txt", "2bd0a343aeef7a2cf0d158478966a6e587ff3863", GIT_DELTA_MODIFIED },
-
- { 0100644, "removed-in-branch.txt", "dfe3f22baa1f6fce5447901c3086bae368de6bdd", GIT_DELTA_UNMODIFIED },
- { 0100644, "removed-in-branch.txt", "dfe3f22baa1f6fce5447901c3086bae368de6bdd", GIT_DELTA_UNMODIFIED },
- { 0, "", "", GIT_DELTA_DELETED },
-
- { 0100644, "removed-in-master.txt", "5c3b68a71fc4fa5d362fd3875e53137c6a5ab7a5", GIT_DELTA_UNMODIFIED },
- { 0, "", "", GIT_DELTA_DELETED },
- { 0100644, "removed-in-master.txt", "5c3b68a71fc4fa5d362fd3875e53137c6a5ab7a5", GIT_DELTA_UNMODIFIED },
+ struct treediff_delta_data treediff_delta_data[] = {
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "added-in-master.txt", "233c0919c998ed110a4b6ff36f353aec8b713487", GIT_DELTA_ADDED },
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ GIT_DIFF_TREE_CONFLICT_NONE
+ },
+
+ {
+ { 0100644, "automergeable.txt", "6212c31dab5e482247d7977e4f0dd3601decf13b", GIT_DELTA_UNMODIFIED },
+ { 0100644, "automergeable.txt", "ee3fa1b8c00aff7fe02065fdb50864bb0d932ccf", GIT_DELTA_MODIFIED },
+ { 0100644, "automergeable.txt", "058541fc37114bfc1dddf6bd6bffc7fae5c2e6fe", GIT_DELTA_MODIFIED },
+ GIT_DIFF_TREE_CONFLICT_BOTH_MODIFIED
+ },
+
+ {
+ { 0100644, "changed-in-branch.txt", "ab6c44a2e84492ad4b41bb6bac87353e9d02ac8b", GIT_DELTA_UNMODIFIED },
+ { 0100644, "changed-in-branch.txt", "ab6c44a2e84492ad4b41bb6bac87353e9d02ac8b", GIT_DELTA_UNMODIFIED },
+ { 0100644, "changed-in-branch.txt", "4eb04c9e79e88f6640d01ff5b25ca2a60764f216", GIT_DELTA_MODIFIED },
+ GIT_DIFF_TREE_CONFLICT_NONE
+ },
+
+ {
+ { 0100644, "changed-in-master.txt", "ab6c44a2e84492ad4b41bb6bac87353e9d02ac8b", GIT_DELTA_UNMODIFIED },
+ { 0100644, "changed-in-master.txt", "11deab00b2d3a6f5a3073988ac050c2d7b6655e2", GIT_DELTA_MODIFIED },
+ { 0100644, "changed-in-master.txt", "ab6c44a2e84492ad4b41bb6bac87353e9d02ac8b", GIT_DELTA_UNMODIFIED },
+ GIT_DIFF_TREE_CONFLICT_NONE
+ },
+
+ {
+ { 0100644, "conflicting.txt", "d427e0b2e138501a3d15cc376077a3631e15bd46", GIT_DELTA_UNMODIFIED },
+ { 0100644, "conflicting.txt", "4e886e602529caa9ab11d71f86634bd1b6e0de10", GIT_DELTA_MODIFIED },
+ { 0100644, "conflicting.txt", "2bd0a343aeef7a2cf0d158478966a6e587ff3863", GIT_DELTA_MODIFIED },
+ GIT_DIFF_TREE_CONFLICT_BOTH_MODIFIED
+ },
+
+ {
+ { 0100644, "removed-in-branch.txt", "dfe3f22baa1f6fce5447901c3086bae368de6bdd", GIT_DELTA_UNMODIFIED },
+ { 0100644, "removed-in-branch.txt", "dfe3f22baa1f6fce5447901c3086bae368de6bdd", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ GIT_DIFF_TREE_CONFLICT_NONE
+ },
+
+ {
+ { 0100644, "removed-in-master.txt", "5c3b68a71fc4fa5d362fd3875e53137c6a5ab7a5", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ { 0100644, "removed-in-master.txt", "5c3b68a71fc4fa5d362fd3875e53137c6a5ab7a5", GIT_DELTA_UNMODIFIED },
+ GIT_DIFF_TREE_CONFLICT_NONE
+ },
};
- cl_assert(diff_tree = threeway(TREE_OID_ANCESTOR, TREE_OID_MASTER, TREE_OID_BRANCH, treediff_file_data, 7));
+ cl_assert(diff_tree = threeway(TREE_OID_ANCESTOR, TREE_OID_MASTER, TREE_OID_BRANCH, treediff_delta_data, 7));
git_diff_tree_list_free(diff_tree);
}
+void test_treediff_threeway__df_conflicts(void)
+{
+ git_diff_tree_list *diff_tree;
+
+ struct treediff_delta_data treediff_delta_data[] = {
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "dir-10", "49130a28ef567af9a6a6104c38773fedfa5f9742", GIT_DELTA_ADDED },
+ { 0100644, "dir-10", "6c06dcd163587c2cc18be44857e0b71116382aeb", GIT_DELTA_ADDED },
+ GIT_DIFF_TREE_CONFLICT_BOTH_ADDED,
+ },
+
+ {
+ { 0100644, "dir-10/file.txt", "242591eb280ee9eeb2ce63524b9a8b9bc4cb515d", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ GIT_DIFF_TREE_CONFLICT_BOTH_DELETED,
+ },
+
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "dir-6", "43aafd43bea779ec74317dc361f45ae3f532a505", GIT_DELTA_ADDED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ },
+
+ {
+ { 0100644, "dir-6/file.txt", "cf8c5cc8a85a1ff5a4ba51e0bc7cf5665669924d", GIT_DELTA_UNMODIFIED },
+ { 0100644, "dir-6/file.txt", "cf8c5cc8a85a1ff5a4ba51e0bc7cf5665669924d", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ },
+
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "dir-7", "a031a28ae70e33a641ce4b8a8f6317f1ab79dee4", GIT_DELTA_ADDED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ GIT_DIFF_TREE_DF_DIRECTORY_FILE,
+ },
+
+ {
+ { 0100644, "dir-7/file.txt", "5012fd565b1393bdfda1805d4ec38ce6619e1fd1", GIT_DELTA_UNMODIFIED },
+ { 0100644, "dir-7/file.txt", "a5563304ddf6caba25cb50323a2ea6f7dbfcadca", GIT_DELTA_MODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ GIT_DIFF_TREE_CONFLICT_MODIFY_DELETE,
+ GIT_DIFF_TREE_DF_CHILD,
+ },
+
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "dir-8", "e9ad6ec3e38364a3d07feda7c4197d4d845c53b5", GIT_DELTA_ADDED },
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ },
+
+ {
+ { 0100644, "dir-8/file.txt", "f20c9063fa0bda9a397c96947a7b687305c49753", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ { 0100644, "dir-8/file.txt", "f20c9063fa0bda9a397c96947a7b687305c49753", GIT_DELTA_UNMODIFIED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ },
+
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "dir-9", "3ef4d30382ca33fdeba9fda895a99e0891ba37aa", GIT_DELTA_ADDED },
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ GIT_DIFF_TREE_DF_DIRECTORY_FILE,
+ },
+
+ {
+ { 0100644, "dir-9/file.txt", "fc4c636d6515e9e261f9260dbcf3cc6eca97ea08", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ { 0100644, "dir-9/file.txt", "76ab0e2868197ec158ddd6c78d8a0d2fd73d38f9", GIT_DELTA_MODIFIED },
+ GIT_DIFF_TREE_CONFLICT_MODIFY_DELETE,
+ GIT_DIFF_TREE_DF_CHILD,
+ },
+
+ {
+ { 0100644, "file-1", "1e4ff029aee68d0d69ef9eb6efa6cbf1ec732f99", GIT_DELTA_UNMODIFIED },
+ { 0100644, "file-1", "1e4ff029aee68d0d69ef9eb6efa6cbf1ec732f99", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ },
+
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "file-1/new", "5c2411f8075f48a6b2fdb85ebc0d371747c4df15", GIT_DELTA_ADDED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ },
+
+ {
+ { 0100644, "file-2", "a39a620dae5bc8b4e771cd4d251b7d080401a21e", GIT_DELTA_UNMODIFIED },
+ { 0100644, "file-2", "d963979c237d08b6ba39062ee7bf64c7d34a27f8", GIT_DELTA_MODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ GIT_DIFF_TREE_CONFLICT_MODIFY_DELETE,
+ GIT_DIFF_TREE_DF_DIRECTORY_FILE,
+ },
+
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "file-2/new", "5c341ead2ba6f2af98ce5ec3fe84f6b6d2899c0d", GIT_DELTA_ADDED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ GIT_DIFF_TREE_DF_CHILD,
+ },
+
+ {
+ { 0100644, "file-3", "032ebc5ab85d9553bb187d3cd40875ff23a63ed0", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ { 0100644, "file-3", "032ebc5ab85d9553bb187d3cd40875ff23a63ed0", GIT_DELTA_UNMODIFIED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ },
+
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "file-3/new", "9efe7723802d4305142eee177e018fee1572c4f4", GIT_DELTA_ADDED },
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ },
+
+ {
+ { 0100644, "file-4", "bacac9b3493509aa15e1730e1545fc0919d1dae0", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ { 0100644, "file-4", "7663fce0130db092936b137cabd693ec234eb060", GIT_DELTA_MODIFIED },
+ GIT_DIFF_TREE_CONFLICT_MODIFY_DELETE,
+ GIT_DIFF_TREE_DF_DIRECTORY_FILE,
+ },
+
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "file-4/new", "e49f917b448d1340b31d76e54ba388268fd4c922", GIT_DELTA_ADDED },
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ GIT_DIFF_TREE_CONFLICT_NONE,
+ GIT_DIFF_TREE_DF_CHILD,
+ },
+
+ {
+ { 0100644, "file-5", "ac4045f965119e6998f4340ed0f411decfb3ec05", GIT_DELTA_UNMODIFIED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ { 0, "", "", GIT_DELTA_DELETED },
+ GIT_DIFF_TREE_CONFLICT_BOTH_DELETED,
+ },
+
+ {
+ { 0, "", "", GIT_DELTA_UNMODIFIED },
+ { 0100644, "file-5/new", "cab2cf23998b40f1af2d9d9a756dc9e285a8df4b", GIT_DELTA_ADDED },
+ { 0100644, "file-5/new", "f5504f36e6f4eb797a56fc5bac6c6c7f32969bf2", GIT_DELTA_ADDED },
+ GIT_DIFF_TREE_CONFLICT_BOTH_ADDED,
+ },
+ };
+
+ cl_assert(diff_tree = threeway(TREE_OID_DF_ANCESTOR, TREE_OID_DF_SIDE1, TREE_OID_DF_SIDE2, treediff_delta_data, 20));
+
+ git_diff_tree_list_free(diff_tree);
+}
+
/*
* TODO: enable this when strict diff computation is enabled
*