The sourceBranch and targetBranch has a commonAncestorCommit with an existing file Foo.cs. A lot of (let's say: 3000) other files exist too.
The sourceBranch contains one single extra commit on top of commonAncestorCommit with a modification inside a file Foo.cs.
The targetBranch (current branch) contains one single extra commit on top of commonAncestorCommit in which the file Foo.cs has been renamed to Bar.cs, and a lot of (let's say: 2000) other files have also been renamed.
The following merge from sourceBranch to targetBranch ignores TargetLimit (merge.renameLimit), and causes an unnecessary conflict:
using (var repo = new Repository(...))
{
Commands.Checkout(repo, targetBranch);
var mergeOptions = new MergeOptions { TargetLimit = 7000 };
repo.Merge(sourceBranch, mergerSignature, mergeOptions)
}
Expected behavior
A successful merge without conflict.
Actual behavior
We are staying in the ongoing merge operation, and the git status reports conflict for the file Foo.cs stating that it has been "deleted by us".
Note that the plain git merge command can merge this without conflicts if the merge.renameLimit setting is set to 7000 in the .gitconfig file.
Reproduction steps
The
sourceBranch
andtargetBranch
has acommonAncestorCommit
with an existing fileFoo.cs
. A lot of (let's say: 3000) other files exist too.The
sourceBranch
contains one single extra commit on top ofcommonAncestorCommit
with a modification inside a fileFoo.cs
.The
targetBranch
(current branch) contains one single extra commit on top ofcommonAncestorCommit
in which the fileFoo.cs
has been renamed toBar.cs
, and a lot of (let's say: 2000) other files have also been renamed.The following merge from
sourceBranch
totargetBranch
ignoresTargetLimit
(merge.renameLimit
), and causes an unnecessary conflict:Expected behavior
A successful merge without conflict.
Actual behavior
We are staying in the ongoing merge operation, and the
git status
reports conflict for the fileFoo.cs
stating that it has been "deleted by us".Note that the plain
git merge
command can merge this without conflicts if themerge.renameLimit
setting is set to 7000 in the.gitconfig
file.Version of LibGit2Sharp (release number or SHA1)
LibGit2Sharp 0.26.2 LibGit2Sharp 0.27.0-preview-0182
Operating system(s) tested; .NET runtime tested
Windows 10 Enterprise N .NET 6.0.8