private void UpdateGraph(GitRevision rev)
{
if (rev == null)
{
// Prune the graph and make sure the row count matches reality
Revisions.Prune();
return;
}
if (_filtredCurrentCheckout == null)
{
if (rev.Guid == CurrentCheckout)
{
_filtredCurrentCheckout = CurrentCheckout;
}
else
{
if (_currentCheckoutParents == null)
{
_currentCheckoutParents = GetAllParents(CurrentCheckout);
}
_filtredCurrentCheckout = _currentCheckoutParents.FirstOrDefault(parent => parent == rev.Guid);
}
}
string filtredCurrentCheckout = _filtredCurrentCheckout;
if (filtredCurrentCheckout == rev.Guid && ShowUncommitedChanges())
{
CheckUncommitedChanged( filtredCurrentCheckout );
}
var dataType = DvcsGraph.DataType.Normal;
if (rev.Guid == filtredCurrentCheckout)
dataType = DvcsGraph.DataType.Active;
else if (rev.Refs.Any())
dataType = DvcsGraph.DataType.Special;
Revisions.Add(rev.Guid, rev.ParentGuids, dataType, rev);
}