Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
fa78782f
Commit
fa78782f
authored
Oct 22, 2015
by
Edward Thomson
Committed by
Edward Thomson
Nov 25, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
merge: rename `git_merge_tree_flags_t` -> `git_merge_flags_t`
parent
c4f60543
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
44 additions
and
34 deletions
+44
-34
CHANGELOG.md
+8
-0
include/git2/merge.h
+19
-17
src/merge.c
+6
-6
src/merge.h
+2
-2
tests/cherrypick/workdir.c
+2
-2
tests/merge/trees/commits.c
+1
-1
tests/merge/trees/treediff.c
+1
-1
tests/merge/workdir/renames.c
+3
-3
tests/revert/workdir.c
+2
-2
No files found.
CHANGELOG.md
View file @
fa78782f
...
@@ -34,6 +34,14 @@ v0.23 + 1
...
@@ -34,6 +34,14 @@ v0.23 + 1
### Breaking API changes
### Breaking API changes
*
The
`git_merge_tree_flag_t`
is now
`git_merge_flag_t`
. Subsequently,
its members are no longer prefixed with
`GIT_MERGE_TREE_FLAG`
but are
now prefixed with
`GIT_MERGE_FLAG`
, and the
`tree_flags`
field of the
`git_merge_options`
structure is now named
`flags`
.
*
The
`git_merge_file_flags_t`
enum is now
`git_merge_file_flag_t`
for
consistency with other enum type names.
*
`git_cert`
descendent types now have a proper
`parent`
member
*
`git_cert`
descendent types now have a proper
`parent`
member
*
It is the responsibility of the refdb backend to decide what to do
*
It is the responsibility of the refdb backend to decide what to do
...
...
include/git2/merge.h
View file @
fa78782f
...
@@ -62,8 +62,8 @@ GIT_EXTERN(int) git_merge_file_init_input(
...
@@ -62,8 +62,8 @@ GIT_EXTERN(int) git_merge_file_init_input(
unsigned
int
version
);
unsigned
int
version
);
/**
/**
* Flags for `git_merge
_tree
` options. A combination of these flags can be
* Flags for `git_merge` options. A combination of these flags can be
* passed in via the `
tree_
flags` value in the `git_merge_options`.
* passed in via the `flags` value in the `git_merge_options`.
*/
*/
typedef
enum
{
typedef
enum
{
/**
/**
...
@@ -71,20 +71,20 @@ typedef enum {
...
@@ -71,20 +71,20 @@ typedef enum {
* side or the common ancestor and the "theirs" side. This will enable
* side or the common ancestor and the "theirs" side. This will enable
* the ability to merge between a modified and renamed file.
* the ability to merge between a modified and renamed file.
*/
*/
GIT_MERGE_
TREE_
FIND_RENAMES
=
(
1
<<
0
),
GIT_MERGE_FIND_RENAMES
=
(
1
<<
0
),
/**
/**
* If a conflict occurs, exit immediately instead of attempting to
* Do not write the REUC extension on the generated index
* continue resolving conflicts. The merge operation will fail with
* GIT_EMERGECONFLICT and no index will be returned.
*/
*/
GIT_MERGE_
TREE_FAIL_ON_CONFLICT
=
(
1
<<
1
),
GIT_MERGE_
SKIP_REUC
=
(
1
<<
2
),
/**
/**
* Do not write the REUC extension on the generated index
* If a conflict occurs, exit immediately instead of attempting to
* continue resolving conflicts. The merge operation will fail with
* GIT_EMERGECONFLICT and no index will be returned.
*/
*/
GIT_MERGE_
TREE_SKIP_REUC
=
(
1
<<
2
),
GIT_MERGE_
FAIL_ON_CONFLICT
=
(
1
<<
1
),
}
git_merge_
tree_
flag_t
;
}
git_merge_flag_t
;
/**
/**
* Merge file favor options for `git_merge_options` instruct the file-level
* Merge file favor options for `git_merge_options` instruct the file-level
...
@@ -152,7 +152,7 @@ typedef enum {
...
@@ -152,7 +152,7 @@ typedef enum {
/** Take extra time to find minimal diff */
/** Take extra time to find minimal diff */
GIT_MERGE_FILE_DIFF_MINIMAL
=
(
1
<<
7
),
GIT_MERGE_FILE_DIFF_MINIMAL
=
(
1
<<
7
),
}
git_merge_file_flag
s
_t
;
}
git_merge_file_flag_t
;
/**
/**
* Options for merging a file
* Options for merging a file
...
@@ -181,8 +181,8 @@ typedef struct {
...
@@ -181,8 +181,8 @@ typedef struct {
/** The file to favor in region conflicts. */
/** The file to favor in region conflicts. */
git_merge_file_favor_t
favor
;
git_merge_file_favor_t
favor
;
/** see `git_merge_file_flag
s
_t` above */
/** see `git_merge_file_flag_t` above */
unsigned
in
t
flags
;
git_merge_file_flag_
t
flags
;
}
git_merge_file_options
;
}
git_merge_file_options
;
#define GIT_MERGE_FILE_OPTIONS_VERSION 1
#define GIT_MERGE_FILE_OPTIONS_VERSION 1
...
@@ -232,11 +232,13 @@ typedef struct {
...
@@ -232,11 +232,13 @@ typedef struct {
*/
*/
typedef
struct
{
typedef
struct
{
unsigned
int
version
;
unsigned
int
version
;
git_merge_tree_flag_t
tree_flags
;
/** See `git_merge_flag_t` above */
git_merge_flag_t
flags
;
/**
/**
* Similarity to consider a file renamed (default 50). If
* Similarity to consider a file renamed (default 50). If
* `GIT_MERGE_
TREE_
FIND_RENAMES` is enabled, added files will be compared
* `GIT_MERGE_FIND_RENAMES` is enabled, added files will be compared
* with deleted files to determine their similarity. Files that are
* with deleted files to determine their similarity. Files that are
* more similar than the rename threshold (percentage-wise) will be
* more similar than the rename threshold (percentage-wise) will be
* treated as a rename.
* treated as a rename.
...
@@ -258,8 +260,8 @@ typedef struct {
...
@@ -258,8 +260,8 @@ 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
;
/** see `git_merge_file_flag
s
_t` above */
/** see `git_merge_file_flag_t` above */
unsigned
in
t
file_flags
;
git_merge_file_flag_
t
file_flags
;
}
git_merge_options
;
}
git_merge_options
;
#define GIT_MERGE_OPTIONS_VERSION 1
#define GIT_MERGE_OPTIONS_VERSION 1
...
...
src/merge.c
View file @
fa78782f
...
@@ -1296,7 +1296,7 @@ int git_merge_diff_list__find_renames(
...
@@ -1296,7 +1296,7 @@ int git_merge_diff_list__find_renames(
assert
(
diff_list
&&
opts
);
assert
(
diff_list
&&
opts
);
if
((
opts
->
tree_flags
&
GIT_MERGE_TRE
E_FIND_RENAMES
)
==
0
)
if
((
opts
->
flags
&
GIT_MERG
E_FIND_RENAMES
)
==
0
)
return
0
;
return
0
;
similarity_ours
=
git__calloc
(
diff_list
->
conflicts
.
length
,
similarity_ours
=
git__calloc
(
diff_list
->
conflicts
.
length
,
...
@@ -1632,8 +1632,8 @@ static int merge_normalize_opts(
...
@@ -1632,8 +1632,8 @@ static int merge_normalize_opts(
git_merge_options
init
=
GIT_MERGE_OPTIONS_INIT
;
git_merge_options
init
=
GIT_MERGE_OPTIONS_INIT
;
memcpy
(
opts
,
&
init
,
sizeof
(
init
));
memcpy
(
opts
,
&
init
,
sizeof
(
init
));
opts
->
tree_flags
=
GIT_MERGE_TRE
E_FIND_RENAMES
;
opts
->
flags
=
GIT_MERG
E_FIND_RENAMES
;
opts
->
rename_threshold
=
GIT_MERGE_
TREE
_RENAME_THRESHOLD
;
opts
->
rename_threshold
=
GIT_MERGE_
DEFAULT
_RENAME_THRESHOLD
;
}
}
if
(
!
opts
->
target_limit
)
{
if
(
!
opts
->
target_limit
)
{
...
@@ -1643,7 +1643,7 @@ static int merge_normalize_opts(
...
@@ -1643,7 +1643,7 @@ static int merge_normalize_opts(
limit
=
git_config__get_int_force
(
cfg
,
"diff.renamelimit"
,
0
);
limit
=
git_config__get_int_force
(
cfg
,
"diff.renamelimit"
,
0
);
opts
->
target_limit
=
(
limit
<=
0
)
?
opts
->
target_limit
=
(
limit
<=
0
)
?
GIT_MERGE_
TREE
_TARGET_LIMIT
:
(
unsigned
int
)
limit
;
GIT_MERGE_
DEFAULT
_TARGET_LIMIT
:
(
unsigned
int
)
limit
;
}
}
/* assign the internal metric with whitespace flag as payload */
/* assign the internal metric with whitespace flag as payload */
...
@@ -1864,7 +1864,7 @@ int git_merge__iterators(
...
@@ -1864,7 +1864,7 @@ int git_merge__iterators(
goto
done
;
goto
done
;
if
(
!
resolved
)
{
if
(
!
resolved
)
{
if
((
opts
.
tree_flags
&
GIT_MERGE_TRE
E_FAIL_ON_CONFLICT
))
{
if
((
opts
.
flags
&
GIT_MERG
E_FAIL_ON_CONFLICT
))
{
giterr_set
(
GITERR_MERGE
,
"merge conflicts exist"
);
giterr_set
(
GITERR_MERGE
,
"merge conflicts exist"
);
error
=
GIT_EMERGECONFLICT
;
error
=
GIT_EMERGECONFLICT
;
goto
done
;
goto
done
;
...
@@ -1875,7 +1875,7 @@ int git_merge__iterators(
...
@@ -1875,7 +1875,7 @@ int git_merge__iterators(
}
}
error
=
index_from_diff_list
(
out
,
diff_list
,
error
=
index_from_diff_list
(
out
,
diff_list
,
(
opts
.
tree_flags
&
GIT_MERGE_TRE
E_SKIP_REUC
));
(
opts
.
flags
&
GIT_MERG
E_SKIP_REUC
));
done:
done:
if
(
!
given_opts
||
!
given_opts
->
metric
)
if
(
!
given_opts
||
!
given_opts
->
metric
)
...
...
src/merge.h
View file @
fa78782f
...
@@ -19,8 +19,8 @@
...
@@ -19,8 +19,8 @@
#define GIT_MERGE_MODE_FILE "MERGE_MODE"
#define GIT_MERGE_MODE_FILE "MERGE_MODE"
#define GIT_MERGE_FILE_MODE 0666
#define GIT_MERGE_FILE_MODE 0666
#define GIT_MERGE_
TREE
_RENAME_THRESHOLD 50
#define GIT_MERGE_
DEFAULT
_RENAME_THRESHOLD 50
#define GIT_MERGE_
TREE
_TARGET_LIMIT 1000
#define GIT_MERGE_
DEFAULT
_TARGET_LIMIT 1000
/** Types of changes when files are merged from branch to branch. */
/** Types of changes when files are merged from branch to branch. */
typedef
enum
{
typedef
enum
{
...
...
tests/cherrypick/workdir.c
View file @
fa78782f
...
@@ -300,7 +300,7 @@ void test_cherrypick_workdir__rename(void)
...
@@ -300,7 +300,7 @@ void test_cherrypick_workdir__rename(void)
{
0100644
,
"28d9eb4208074ad1cc84e71ccc908b34573f05d2"
,
0
,
"file3.txt.renamed"
},
{
0100644
,
"28d9eb4208074ad1cc84e71ccc908b34573f05d2"
,
0
,
"file3.txt.renamed"
},
};
};
opts
.
merge_opts
.
tree_flags
|=
GIT_MERGE_TRE
E_FIND_RENAMES
;
opts
.
merge_opts
.
flags
|=
GIT_MERG
E_FIND_RENAMES
;
opts
.
merge_opts
.
rename_threshold
=
50
;
opts
.
merge_opts
.
rename_threshold
=
50
;
git_oid_fromstr
(
&
head_oid
,
"cfc4f0999a8367568e049af4f72e452d40828a15"
);
git_oid_fromstr
(
&
head_oid
,
"cfc4f0999a8367568e049af4f72e452d40828a15"
);
...
@@ -335,7 +335,7 @@ void test_cherrypick_workdir__both_renamed(void)
...
@@ -335,7 +335,7 @@ void test_cherrypick_workdir__both_renamed(void)
{
0100644
,
"28d9eb4208074ad1cc84e71ccc908b34573f05d2"
,
2
,
"file3.txt.renamed_on_branch"
},
{
0100644
,
"28d9eb4208074ad1cc84e71ccc908b34573f05d2"
,
2
,
"file3.txt.renamed_on_branch"
},
};
};
opts
.
merge_opts
.
tree_flags
|=
GIT_MERGE_TRE
E_FIND_RENAMES
;
opts
.
merge_opts
.
flags
|=
GIT_MERG
E_FIND_RENAMES
;
opts
.
merge_opts
.
rename_threshold
=
50
;
opts
.
merge_opts
.
rename_threshold
=
50
;
git_oid_fromstr
(
&
head_oid
,
"44cd2ed2052c9c68f9a439d208e9614dc2a55c70"
);
git_oid_fromstr
(
&
head_oid
,
"44cd2ed2052c9c68f9a439d208e9614dc2a55c70"
);
...
...
tests/merge/trees/commits.c
View file @
fa78782f
...
@@ -134,7 +134,7 @@ void test_merge_trees_commits__fail_on_conflict(void)
...
@@ -134,7 +134,7 @@ void test_merge_trees_commits__fail_on_conflict(void)
git_index
*
index
;
git_index
*
index
;
git_merge_options
opts
=
GIT_MERGE_OPTIONS_INIT
;
git_merge_options
opts
=
GIT_MERGE_OPTIONS_INIT
;
opts
.
tree_flags
|=
GIT_MERGE_TRE
E_FAIL_ON_CONFLICT
;
opts
.
flags
|=
GIT_MERG
E_FAIL_ON_CONFLICT
;
cl_git_fail_with
(
GIT_EMERGECONFLICT
,
cl_git_fail_with
(
GIT_EMERGECONFLICT
,
merge_trees_from_branches
(
&
index
,
repo
,
"df_side1"
,
"df_side2"
,
&
opts
));
merge_trees_from_branches
(
&
index
,
repo
,
"df_side1"
,
"df_side2"
,
&
opts
));
...
...
tests/merge/trees/treediff.c
View file @
fa78782f
...
@@ -47,7 +47,7 @@ static void test_find_differences(
...
@@ -47,7 +47,7 @@ static void test_find_differences(
git_iterator_options
iter_opts
=
GIT_ITERATOR_OPTIONS_INIT
;
git_iterator_options
iter_opts
=
GIT_ITERATOR_OPTIONS_INIT
;
git_merge_options
opts
=
GIT_MERGE_OPTIONS_INIT
;
git_merge_options
opts
=
GIT_MERGE_OPTIONS_INIT
;
opts
.
tree_flags
|=
GIT_MERGE_TRE
E_FIND_RENAMES
;
opts
.
flags
|=
GIT_MERG
E_FIND_RENAMES
;
opts
.
target_limit
=
1000
;
opts
.
target_limit
=
1000
;
opts
.
rename_threshold
=
50
;
opts
.
rename_threshold
=
50
;
...
...
tests/merge/workdir/renames.c
View file @
fa78782f
...
@@ -63,7 +63,7 @@ void test_merge_workdir_renames__renames(void)
...
@@ -63,7 +63,7 @@ void test_merge_workdir_renames__renames(void)
{
0100644
,
"b69fe837e4cecfd4c9a40cdca7c138468687df07"
,
0
,
"7-both-renamed.txt~rename_conflict_theirs"
},
{
0100644
,
"b69fe837e4cecfd4c9a40cdca7c138468687df07"
,
0
,
"7-both-renamed.txt~rename_conflict_theirs"
},
};
};
merge_opts
.
tree_flags
|=
GIT_MERGE_TRE
E_FIND_RENAMES
;
merge_opts
.
flags
|=
GIT_MERG
E_FIND_RENAMES
;
merge_opts
.
rename_threshold
=
50
;
merge_opts
.
rename_threshold
=
50
;
cl_git_pass
(
merge_branches
(
repo
,
GIT_REFS_HEADS_DIR
BRANCH_RENAME_OURS
,
GIT_REFS_HEADS_DIR
BRANCH_RENAME_THEIRS
,
&
merge_opts
,
NULL
));
cl_git_pass
(
merge_branches
(
repo
,
GIT_REFS_HEADS_DIR
BRANCH_RENAME_OURS
,
GIT_REFS_HEADS_DIR
BRANCH_RENAME_THEIRS
,
&
merge_opts
,
NULL
));
...
@@ -99,7 +99,7 @@ void test_merge_workdir_renames__ours(void)
...
@@ -99,7 +99,7 @@ void test_merge_workdir_renames__ours(void)
{
0100644
,
"b42712cfe99a1a500b2a51fe984e0b8a7702ba11"
,
0
,
"7-both-renamed.txt"
},
{
0100644
,
"b42712cfe99a1a500b2a51fe984e0b8a7702ba11"
,
0
,
"7-both-renamed.txt"
},
};
};
merge_opts
.
tree_flags
|=
GIT_MERGE_TRE
E_FIND_RENAMES
;
merge_opts
.
flags
|=
GIT_MERG
E_FIND_RENAMES
;
merge_opts
.
rename_threshold
=
50
;
merge_opts
.
rename_threshold
=
50
;
checkout_opts
.
checkout_strategy
=
GIT_CHECKOUT_SAFE
|
GIT_CHECKOUT_USE_OURS
;
checkout_opts
.
checkout_strategy
=
GIT_CHECKOUT_SAFE
|
GIT_CHECKOUT_USE_OURS
;
...
@@ -147,7 +147,7 @@ void test_merge_workdir_renames__similar(void)
...
@@ -147,7 +147,7 @@ void test_merge_workdir_renames__similar(void)
{
0100644
,
"b69fe837e4cecfd4c9a40cdca7c138468687df07"
,
0
,
"7-both-renamed.txt~rename_conflict_theirs"
},
{
0100644
,
"b69fe837e4cecfd4c9a40cdca7c138468687df07"
,
0
,
"7-both-renamed.txt~rename_conflict_theirs"
},
};
};
merge_opts
.
tree_flags
|=
GIT_MERGE_TRE
E_FIND_RENAMES
;
merge_opts
.
flags
|=
GIT_MERG
E_FIND_RENAMES
;
merge_opts
.
rename_threshold
=
50
;
merge_opts
.
rename_threshold
=
50
;
cl_git_pass
(
merge_branches
(
repo
,
GIT_REFS_HEADS_DIR
BRANCH_RENAME_OURS
,
GIT_REFS_HEADS_DIR
BRANCH_RENAME_THEIRS
,
&
merge_opts
,
NULL
));
cl_git_pass
(
merge_branches
(
repo
,
GIT_REFS_HEADS_DIR
BRANCH_RENAME_OURS
,
GIT_REFS_HEADS_DIR
BRANCH_RENAME_THEIRS
,
&
merge_opts
,
NULL
));
...
...
tests/revert/workdir.c
View file @
fa78782f
...
@@ -410,7 +410,7 @@ void test_revert_workdir__rename_1_of_2(void)
...
@@ -410,7 +410,7 @@ void test_revert_workdir__rename_1_of_2(void)
{
0100644
,
"0f5bfcf58c558d865da6be0281d7795993646cee"
,
2
,
"file6.txt"
},
{
0100644
,
"0f5bfcf58c558d865da6be0281d7795993646cee"
,
2
,
"file6.txt"
},
};
};
opts
.
merge_opts
.
tree_flags
|=
GIT_MERGE_TRE
E_FIND_RENAMES
;
opts
.
merge_opts
.
flags
|=
GIT_MERG
E_FIND_RENAMES
;
opts
.
merge_opts
.
rename_threshold
=
50
;
opts
.
merge_opts
.
rename_threshold
=
50
;
git_oid_fromstr
(
&
head_oid
,
"cef56612d71a6af8d8015691e4865f7fece905b5"
);
git_oid_fromstr
(
&
head_oid
,
"cef56612d71a6af8d8015691e4865f7fece905b5"
);
...
@@ -444,7 +444,7 @@ void test_revert_workdir__rename(void)
...
@@ -444,7 +444,7 @@ void test_revert_workdir__rename(void)
{
"file4.txt"
,
"file5.txt"
,
""
},
{
"file4.txt"
,
"file5.txt"
,
""
},
};
};
opts
.
merge_opts
.
tree_flags
|=
GIT_MERGE_TRE
E_FIND_RENAMES
;
opts
.
merge_opts
.
flags
|=
GIT_MERG
E_FIND_RENAMES
;
opts
.
merge_opts
.
rename_threshold
=
50
;
opts
.
merge_opts
.
rename_threshold
=
50
;
git_oid_fromstr
(
&
head_oid
,
"55568c8de5322ff9a95d72747a239cdb64a19965"
);
git_oid_fromstr
(
&
head_oid
,
"55568c8de5322ff9a95d72747a239cdb64a19965"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment