mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-20 19:55:00 +00:00
78 lines
1.9 KiB
C#
78 lines
1.9 KiB
C#
namespace SourceGit.ViewModels
|
|
{
|
|
public class Conflict
|
|
{
|
|
public object Theirs
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public object Mine
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public bool IsResolved
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
public Conflict(Repository repo, WorkingCopy wc, Models.Change change)
|
|
{
|
|
_wc = wc;
|
|
_change = change;
|
|
|
|
IsResolved = new Commands.IsConflictResolved(repo.FullPath, change).ReadToEnd().IsSuccess;
|
|
|
|
var context = wc.InProgressContext;
|
|
if (context is CherryPickInProgress cherryPick)
|
|
{
|
|
Theirs = cherryPick.Head;
|
|
Mine = repo.CurrentBranch;
|
|
}
|
|
else if (context is RebaseInProgress rebase)
|
|
{
|
|
Theirs = repo.Branches.Find(x => x.IsLocal && x.Name == rebase.HeadName) ??
|
|
new Models.Branch()
|
|
{
|
|
IsLocal = true,
|
|
Name = rebase.HeadName,
|
|
FullName = $"refs/heads/{rebase.HeadName}"
|
|
};
|
|
|
|
Mine = rebase.Onto;
|
|
}
|
|
else if (context is RevertInProgress revert)
|
|
{
|
|
Theirs = revert.Head;
|
|
Mine = repo.CurrentBranch;
|
|
}
|
|
else if (context is MergeInProgress merge)
|
|
{
|
|
Theirs = merge.Source;
|
|
Mine = repo.CurrentBranch;
|
|
}
|
|
}
|
|
|
|
public void UseTheirs()
|
|
{
|
|
_wc.UseTheirs([_change]);
|
|
}
|
|
|
|
public void UseMine()
|
|
{
|
|
_wc.UseMine([_change]);
|
|
}
|
|
|
|
public void OpenExternalMergeTool()
|
|
{
|
|
_wc.UseExternalMergeTool(_change);
|
|
}
|
|
|
|
private WorkingCopy _wc = null;
|
|
private Models.Change _change = null;
|
|
}
|
|
}
|