public void LoadBlame(GitRevision revision, List<string> children, string fileName, RevisionGrid revGrid, Control controlToMask, Encoding encoding) { //refresh only when something changed if (revision.Equals(CommitInfo.Revision) && fileName == _fileName && revGrid == _revGrid && encoding == _encoding) return; if (controlToMask != null) controlToMask.Mask(); var scrollpos = BlameFile.ScrollPos; var blameCommitter = new StringBuilder(); var blameFile = new StringBuilder(); _revGrid = revGrid; _fileName = fileName; _encoding = encoding; string guid = revision.Guid; blameLoader.Load(() => { _blame = Module.Blame(fileName, guid, encoding); }, () => { for (int i = 0; i < _blame.Lines.Count; i++) { GitBlameLine blameLine = _blame.Lines[i]; GitBlameHeader blameHeader = _blame.FindHeaderForCommitGuid(blameLine.CommitGuid); if (i > 0 && _blame.Lines[i - 1].CommitGuid == blameLine.CommitGuid) { blameCommitter.AppendLine(new string(' ', 200)); } else { blameCommitter.AppendLine((blameHeader.Author + " - " + blameHeader.AuthorTime + " - " + blameHeader.FileName + new string(' ', 100)).Trim(new[] { '\r', '\n' })); } if (blameLine.LineText == null) blameFile.AppendLine(""); else blameFile.AppendLine(blameLine.LineText.Trim(new char[] { '\r', '\n' })); } BlameCommitter.ViewText("committer.txt", blameCommitter.ToString()); BlameFile.ViewText(fileName, blameFile.ToString()); BlameFile.ScrollPos = scrollpos; CommitInfo.SetRevisionWithChildren(revision, children); if (controlToMask != null) controlToMask.UnMask(); }); }
public void LoadBlame(GitRevision revision, List<string> children, string fileName, RevisionGrid revGrid, Control controlToMask, Encoding encoding) { //refresh only when something changed if (revision.Equals(CommitInfo.Revision) && fileName == _fileName && revGrid == _revGrid && encoding == _encoding) return; if (controlToMask != null) controlToMask.Mask(); var scrollpos = BlameFile.ScrollPos; _revGrid = revGrid; _fileName = fileName; _encoding = encoding; string guid = revision.Guid; blameLoader.Load(() => _blame = Module.Blame(fileName, guid, encoding), () => ProcessBlame(revision, children, controlToMask, scrollpos)); }