private void ProcessBlame(GitRevision revision, List<string> children, Control controlToMask, int scrollpos) { var blameCommitter = new StringBuilder(); var blameFile = new StringBuilder(); 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[] {'\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(string guid, string fileName, RevisionGrid revGrid, Control controlToMask, Encoding encoding) { //refresh only when something changed if (guid.Equals(commitInfo.Revision) && fileName.Equals(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; 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.Revision = guid; if (controlToMask != null) controlToMask.UnMask(); }); }