private static MergeResult MergeToBranch(MergeInfoViewModel mergeInfoeViewModel, MergeOption mergeOption,
List<MergeRelation> mergeRelationships, Workspace workspace)
{
var source = mergeInfoeViewModel.SourcePath;
var target = mergeInfoeViewModel.TargetPath;
var version = mergeInfoeViewModel.ChangesetVersionSpec;
if (!GetLatest(target, mergeRelationships, workspace))
{
return MergeResult.CanNotGetLatest;
}
var mergeOptions = ToTfsMergeOptions(mergeOption);
var status = workspace.Merge(source, target, version, version, LockLevel.None, RecursionType.Full, mergeOptions);
if (HasConflicts(status))
{
var conflicts = AutoResolveConflicts(workspace, target, mergeOption);
if (!conflicts.IsNullOrEmpty())
{
return IsTryRestoreUnexpectedFile(conflicts)
? MergeResult.UnexpectedFileRestored
: MergeResult.HasConflicts;
}
}
return MergeResult.Merged;
}