From 31f2ba8f5d8fe46cdb5af3669da515b978c706c1 Mon Sep 17 00:00:00 2001 From: Philippe Miossec Date: Wed, 29 May 2019 18:17:12 +0200 Subject: [PATCH] WIP: try to solve "Blame to previous revision" #6605 --- GitUI/UserControls/BlameControl.cs | 50 ++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/GitUI/UserControls/BlameControl.cs b/GitUI/UserControls/BlameControl.cs index 8d9cf49e768..7edc20ecf1a 100644 --- a/GitUI/UserControls/BlameControl.cs +++ b/GitUI/UserControls/BlameControl.cs @@ -551,23 +551,47 @@ private void blamePreviousRevisionToolStripMenuItem_Click(object sender, EventAr var objectId = _blame.Lines[line].Commit.ObjectId; int originalLine = _blame.Lines[line].OriginLineNumber; - GitBlame blame = Module.Blame(_fileName, objectId + "^", _encoding, originalLine + ",+1"); - if (blame.Lines.Count > 0) + + // TODO: Finish => blame the direct parent commit from the selected line + + var selectedRevision = _revGrid.GetRevision(objectId); + if (!selectedRevision.HasParent) { - var revision = blame.Lines[0].Commit.ObjectId; - if (_revGrid != null) - { - _clickedBlameLine = blame.Lines[0]; - _revGrid.SetSelectedRevision(revision); - } - else + _revGrid.SetSelectedRevision(selectedRevision); + using (var frm = new FormCommitDiff(UICommands, selectedRevision.ObjectId)) { - using (var frm = new FormCommitDiff(UICommands, revision)) - { - frm.ShowDialog(this); - } + frm.ShowDialog(this); } + + return; } + + if (selectedRevision.ParentIds.Count == 1) + { + _revGrid.SetSelectedRevision(selectedRevision.FirstParentGuid); + return; + } + + // TODO: Finish => What to do when there are more than 1 parents?!? + _revGrid.SetSelectedRevision(selectedRevision.FirstParentGuid); + + ////GitBlame blame = Module.Blame(_fileName, objectId + "^", _encoding, originalLine + ",+1"); + ////if (blame.Lines.Count > 0) + ////{ + //// var revision = blame.Lines[0].Commit.ObjectId; + //// if (_revGrid != null) + //// { + //// _clickedBlameLine = blame.Lines[0]; + //// _revGrid.SetSelectedRevision(revision); + //// } + //// else + //// { + //// using (var frm = new FormCommitDiff(UICommands, revision)) + //// { + //// frm.ShowDialog(this); + //// } + //// } + ////} } private void showChangesToolStripMenuItem_Click(object sender, EventArgs e)