public BranchStatus GetStatus()
{
var branches = m_Client.ListBranches();
if (branches == null)
return BranchStatus.Unknown;
Branch remoteBranch = branches.Item1.FirstOrDefault(x => x.Name == Config.BranchName);
Branch localBranch = m_Client.Workspace.GetBranch(remoteBranch.ID);
KeyValuePair<Guid, Guid> id = branches.Item2.FirstOrDefault(x => x.Key == remoteBranch.ID);
bool present = m_Client.Workspace.GetVersion(id.Value) != null;
if (!present)
return BranchStatus.Behind;
if (present && localBranch != null)
{
var heads = m_Client.Workspace.GetBranchHeads(localBranch);
if (heads.Count == 1 && heads[0].Version != id.Value)
return BranchStatus.Ahead;
}
return BranchStatus.Current;
}