mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-04 21:46:22 +00:00
Collapse whitespace flags into git_merge_file_flags_t
This commit is contained in:
parent
f29dde6828
commit
13de936316
@ -110,23 +110,6 @@ typedef enum {
|
|||||||
GIT_MERGE_FILE_FAVOR_UNION = 3,
|
GIT_MERGE_FILE_FAVOR_UNION = 3,
|
||||||
} git_merge_file_favor_t;
|
} git_merge_file_favor_t;
|
||||||
|
|
||||||
/**
|
|
||||||
* Whitespace merging flags
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
/** Defaults */
|
|
||||||
GIT_MERGE_FILE_IGNORE_DEFAULT = 0,
|
|
||||||
|
|
||||||
/** Ignore all whitespace */
|
|
||||||
GIT_MERGE_FILE_IGNORE_WHITESPACE = (1 << 0),
|
|
||||||
|
|
||||||
/** Ignore changes in amount of whitespace */
|
|
||||||
GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE = (1 << 1),
|
|
||||||
|
|
||||||
/** Ignore whitespace at end of line */
|
|
||||||
GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL = (1 << 2),
|
|
||||||
} git_merge_file_whitespace_t;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* File merging flags
|
* File merging flags
|
||||||
*/
|
*/
|
||||||
@ -142,6 +125,15 @@ typedef enum {
|
|||||||
|
|
||||||
/** Condense non-alphanumeric regions for simplified diff file */
|
/** Condense non-alphanumeric regions for simplified diff file */
|
||||||
GIT_MERGE_FILE_SIMPLIFY_ALNUM = (1 << 2),
|
GIT_MERGE_FILE_SIMPLIFY_ALNUM = (1 << 2),
|
||||||
|
|
||||||
|
/** Ignore all whitespace */
|
||||||
|
GIT_MERGE_FILE_IGNORE_WHITESPACE = (1 << 3),
|
||||||
|
|
||||||
|
/** Ignore changes in amount of whitespace */
|
||||||
|
GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE = (1 << 4),
|
||||||
|
|
||||||
|
/** Ignore whitespace at end of line */
|
||||||
|
GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL = (1 << 5),
|
||||||
} git_merge_file_flags_t;
|
} git_merge_file_flags_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -172,10 +164,7 @@ typedef struct {
|
|||||||
git_merge_file_favor_t favor;
|
git_merge_file_favor_t favor;
|
||||||
|
|
||||||
/** Merge file flags. */
|
/** Merge file flags. */
|
||||||
git_merge_file_flags_t flags;
|
unsigned int flags;
|
||||||
|
|
||||||
/** Whitespace merge flags */
|
|
||||||
unsigned int whitespace_flags;
|
|
||||||
} git_merge_file_options;
|
} git_merge_file_options;
|
||||||
|
|
||||||
#define GIT_MERGE_FILE_OPTIONS_VERSION 1
|
#define GIT_MERGE_FILE_OPTIONS_VERSION 1
|
||||||
@ -251,8 +240,7 @@ typedef struct {
|
|||||||
/** Flags for handling conflicting content. */
|
/** Flags for handling conflicting content. */
|
||||||
git_merge_file_favor_t file_favor;
|
git_merge_file_favor_t file_favor;
|
||||||
|
|
||||||
/** Flags for handling whitespace */
|
unsigned int file_flags;
|
||||||
unsigned int whitespace_flags;
|
|
||||||
} git_merge_options;
|
} git_merge_options;
|
||||||
|
|
||||||
#define GIT_MERGE_OPTIONS_VERSION 1
|
#define GIT_MERGE_OPTIONS_VERSION 1
|
||||||
|
10
src/merge.c
10
src/merge.c
@ -654,7 +654,7 @@ static int merge_conflict_resolve_automerge(
|
|||||||
git_merge_diff_list *diff_list,
|
git_merge_diff_list *diff_list,
|
||||||
const git_merge_diff *conflict,
|
const git_merge_diff *conflict,
|
||||||
unsigned int merge_file_favor,
|
unsigned int merge_file_favor,
|
||||||
unsigned int whitespace_flags)
|
unsigned int file_flags)
|
||||||
{
|
{
|
||||||
const git_index_entry *ancestor = NULL, *ours = NULL, *theirs = NULL;
|
const git_index_entry *ancestor = NULL, *ours = NULL, *theirs = NULL;
|
||||||
git_merge_file_options opts = GIT_MERGE_FILE_OPTIONS_INIT;
|
git_merge_file_options opts = GIT_MERGE_FILE_OPTIONS_INIT;
|
||||||
@ -709,7 +709,7 @@ static int merge_conflict_resolve_automerge(
|
|||||||
&conflict->their_entry : NULL;
|
&conflict->their_entry : NULL;
|
||||||
|
|
||||||
opts.favor = merge_file_favor;
|
opts.favor = merge_file_favor;
|
||||||
opts.whitespace_flags = whitespace_flags;
|
opts.flags = file_flags;
|
||||||
|
|
||||||
if ((error = git_repository_odb(&odb, diff_list->repo)) < 0 ||
|
if ((error = git_repository_odb(&odb, diff_list->repo)) < 0 ||
|
||||||
(error = git_merge_file_from_index(&result, diff_list->repo, ancestor, ours, theirs, &opts)) < 0 ||
|
(error = git_merge_file_from_index(&result, diff_list->repo, ancestor, ours, theirs, &opts)) < 0 ||
|
||||||
@ -744,7 +744,7 @@ static int merge_conflict_resolve(
|
|||||||
git_merge_diff_list *diff_list,
|
git_merge_diff_list *diff_list,
|
||||||
const git_merge_diff *conflict,
|
const git_merge_diff *conflict,
|
||||||
unsigned int merge_file_favor,
|
unsigned int merge_file_favor,
|
||||||
unsigned int whitespace_flags)
|
unsigned int file_flags)
|
||||||
{
|
{
|
||||||
int resolved = 0;
|
int resolved = 0;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
@ -761,7 +761,7 @@ static int merge_conflict_resolve(
|
|||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
if (!resolved && (error = merge_conflict_resolve_automerge(&resolved, diff_list, conflict,
|
if (!resolved && (error = merge_conflict_resolve_automerge(&resolved, diff_list, conflict,
|
||||||
merge_file_favor, whitespace_flags)) < 0)
|
merge_file_favor, file_flags)) < 0)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
*out = resolved;
|
*out = resolved;
|
||||||
@ -1783,7 +1783,7 @@ int git_merge_trees(
|
|||||||
git_vector_foreach(&changes, i, conflict) {
|
git_vector_foreach(&changes, i, conflict) {
|
||||||
int resolved = 0;
|
int resolved = 0;
|
||||||
|
|
||||||
if ((error = merge_conflict_resolve(&resolved, diff_list, conflict, opts.file_favor, opts.whitespace_flags)) < 0)
|
if ((error = merge_conflict_resolve(&resolved, diff_list, conflict, opts.file_favor, opts.file_flags)) < 0)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
if (!resolved)
|
if (!resolved)
|
||||||
|
@ -151,11 +151,11 @@ static int git_merge_file__from_inputs(
|
|||||||
if (options.flags & GIT_MERGE_FILE_STYLE_DIFF3)
|
if (options.flags & GIT_MERGE_FILE_STYLE_DIFF3)
|
||||||
xmparam.style = XDL_MERGE_DIFF3;
|
xmparam.style = XDL_MERGE_DIFF3;
|
||||||
|
|
||||||
if (options.whitespace_flags & GIT_MERGE_FILE_IGNORE_WHITESPACE)
|
if (options.flags & GIT_MERGE_FILE_IGNORE_WHITESPACE)
|
||||||
xmparam.xpp.flags |= XDF_IGNORE_WHITESPACE;
|
xmparam.xpp.flags |= XDF_IGNORE_WHITESPACE;
|
||||||
if (options.whitespace_flags & GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE)
|
if (options.flags & GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE)
|
||||||
xmparam.xpp.flags |= XDF_IGNORE_WHITESPACE_CHANGE;
|
xmparam.xpp.flags |= XDF_IGNORE_WHITESPACE_CHANGE;
|
||||||
if (options.whitespace_flags & GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL)
|
if (options.flags & GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL)
|
||||||
xmparam.xpp.flags |= XDF_IGNORE_WHITESPACE_AT_EOL;
|
xmparam.xpp.flags |= XDF_IGNORE_WHITESPACE_AT_EOL;
|
||||||
|
|
||||||
if ((xdl_result = xdl_merge(&ancestor_mmfile, &our_mmfile,
|
if ((xdl_result = xdl_merge(&ancestor_mmfile, &our_mmfile,
|
||||||
|
@ -198,7 +198,7 @@ void test_merge_files__automerge_whitespace_eol(void)
|
|||||||
theirs.path = "testfile.txt";
|
theirs.path = "testfile.txt";
|
||||||
theirs.mode = 0100755;
|
theirs.mode = 0100755;
|
||||||
|
|
||||||
opts.whitespace_flags |= GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL;
|
opts.flags |= GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL;
|
||||||
cl_git_pass(git_merge_file(&result, &ancestor, &ours, &theirs, &opts));
|
cl_git_pass(git_merge_file(&result, &ancestor, &ours, &theirs, &opts));
|
||||||
|
|
||||||
cl_assert_equal_i(1, result.automergeable);
|
cl_assert_equal_i(1, result.automergeable);
|
||||||
@ -236,7 +236,7 @@ void test_merge_files__automerge_whitespace_change(void)
|
|||||||
theirs.path = "testfile.txt";
|
theirs.path = "testfile.txt";
|
||||||
theirs.mode = 0100755;
|
theirs.mode = 0100755;
|
||||||
|
|
||||||
opts.whitespace_flags |= GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE;
|
opts.flags |= GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE;
|
||||||
cl_git_pass(git_merge_file(&result, &ancestor, &ours, &theirs, &opts));
|
cl_git_pass(git_merge_file(&result, &ancestor, &ours, &theirs, &opts));
|
||||||
|
|
||||||
cl_assert_equal_i(1, result.automergeable);
|
cl_assert_equal_i(1, result.automergeable);
|
||||||
|
@ -54,7 +54,7 @@ void test_merge_trees_whitespace__eol(void)
|
|||||||
{ 0100644, "ee3c2aac8e03224c323b58ecb1f9eef616745467", 0, "test.txt" },
|
{ 0100644, "ee3c2aac8e03224c323b58ecb1f9eef616745467", 0, "test.txt" },
|
||||||
};
|
};
|
||||||
|
|
||||||
opts.whitespace_flags |= GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL;
|
opts.file_flags |= GIT_MERGE_FILE_IGNORE_WHITESPACE_EOL;
|
||||||
|
|
||||||
cl_git_pass(merge_trees_from_branches(&index, repo, BRANCH_A_EOL, BRANCH_B_EOL, &opts));
|
cl_git_pass(merge_trees_from_branches(&index, repo, BRANCH_A_EOL, BRANCH_B_EOL, &opts));
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ void test_merge_trees_whitespace__change(void)
|
|||||||
{ 0100644, "a827eab4fd66ab37a6ebcfaa7b7e341abfd55947", 0, "test.txt" },
|
{ 0100644, "a827eab4fd66ab37a6ebcfaa7b7e341abfd55947", 0, "test.txt" },
|
||||||
};
|
};
|
||||||
|
|
||||||
opts.whitespace_flags |= GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE;
|
opts.file_flags |= GIT_MERGE_FILE_IGNORE_WHITESPACE_CHANGE;
|
||||||
|
|
||||||
cl_git_pass(merge_trees_from_branches(&index, repo, BRANCH_A_CHANGE, BRANCH_B_CHANGE, &opts));
|
cl_git_pass(merge_trees_from_branches(&index, repo, BRANCH_A_CHANGE, BRANCH_B_CHANGE, &opts));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user