public void SetStatus(string filename, GitFileStatus status)
{
if (!String.IsNullOrWhiteSpace(filename))
{
var fileKey = filename.ToLower();
var changeStatus = GitFile.IsChangedStatus(status) ? status : GitFileStatus.Unaltered;
if (_fileStatus.ContainsKey(fileKey))
{
if (changeStatus == GitFileStatus.Unaltered)
{
ChangesetFileStatus dStatus;
_fileStatus.TryRemove(fileKey, out dStatus);
}
else
{
_fileStatus.AddOrUpdate(fileKey, new ChangesetFileStatus(changeStatus), (key, val) => new ChangesetFileStatus(changeStatus));
}
}
else if (changeStatus != GitFileStatus.Unaltered)
{
_fileStatus.AddOrUpdate(fileKey, new ChangesetFileStatus(changeStatus), (key, val) => new ChangesetFileStatus(changeStatus));
}
}
}