git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH (GITK,GIT-GUI,DOCS) 4/7] git-gui: Support passing blame to a parent commit.

From
Alexander Gavrilov <angavrilov@gmail.com>
Date
Aug 23, 2008, 08:30 UTC
Message-ID
<200808231230.51693.angavrilov@gmail.com>
In-Reply-To
<200808231230.00397.angavrilov@gmail.com>

Add a context menu item that switches the view to the parent of the commit under cursor. It is useful to see how the file looked before the change, and find older changes in the same lines.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
---
 lib/blame.tcl |   48 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 38 insertions(+), 10 deletions(-)
diff --git a/lib/blame.tcl b/lib/blame.tcl
index d6c56e8..8b555a1 100644
--- a/lib/blame.tcl
+++ b/lib/blame.tcl
@@ -262,6 +262,9 @@ constructor new {i_commit i_path} {
 	$w.ctxm add command \
 		-label [mc "Show History Context"] \
 		-command [cb _gitkcommit]
+	$w.ctxm add command \
+		-label [mc "Blame Parent Commit"] \
+		-command [cb _blameparent]
 
 	foreach i $w_columns {
 		for {set g 0} {$g < [llength $group_colors]} {incr g} {
@@ -790,19 +793,27 @@ method _load_commit {cur_w cur_d pos} {
 	set lno [lindex [split [$cur_w index $pos] .] 0]
 	set dat [lindex $line_data $lno]
 	if {$dat ne {}} {
-		lappend history [list \
-			$commit $path \
-			$highlight_column \
-			$highlight_line \
-			[lindex [$w_file xview] 0] \
-			[lindex [$w_file yview] 0] \
-			]
-		set commit [lindex $dat 0]
-		set path   [lindex $dat 1]
-		_load $this [list [lindex $dat 2]]
+		_load_new_commit $this  \
+			[lindex $dat 0] \
+			[lindex $dat 1] \
+			[list [lindex $dat 2]]
 	}
 }
 
+method _load_new_commit {new_commit new_path jump} {
+	lappend history [list \
+		$commit $path \
+		$highlight_column \
+		$highlight_line \
+		[lindex [$w_file xview] 0] \
+		[lindex [$w_file yview] 0] \
+		]
+
+	set commit $new_commit
+	set path   $new_path
+	_load $this $jump
+}
+
 method _showcommit {cur_w lno} {
 	global repo_config
 	variable active_color
@@ -969,6 +980,23 @@ method _gitkcommit {} {
 	}
 }
 
+method _blameparent {} {
+	set dat [_get_click_amov_info $this]
+	if {$dat ne {}} {
+		set cmit [lindex $dat 0]
+
+		if {[catch {set cparent [git rev-parse --verify "$cmit^"]}]} {
+			error_popup [strcat [mc "Cannot find parent commit:"] "\n\n$err"]
+			return;
+		}
+
+		_load_new_commit $this  \
+			$cparent \
+			[lindex $dat 1] \
+			[list [lindex $dat 2]]
+	}
+}
+
 method _show_tooltip {cur_w pos} {
 	if {$tooltip_wm ne {}} {
 		_open_tooltip $this $cur_w
-- 
1.6.0.rc2
Previous: Alexander GavrilovNext: Alexander Gavrilov
Message 8 of 12 in “Improve gui blame and gitk integration”
  1. 0/7 Improve gui blame and gitk integrationAlexander Gavrilov, Aug 23, 2008
  2. 1/7 gitk: Allow overriding the default commit.Alexander Gavrilov, Aug 23, 2008
  3. 2/7 gitk: Support calling git gui blame from gitk.Alexander Gavrilov, Aug 23, 2008
  4. Paul MackerrasAug 26, 2008
  5. Johannes SixtAug 26, 2008
  6. Paul MackerrasAug 26, 2008
  7. 3/7 git-gui: Support starting gitk from Gui BlameAlexander Gavrilov, Aug 23, 2008
  8. 4/7 git-gui: Support passing blame to a parent commit.Alexander Gavrilov, Aug 23, 2008
  9. 5/7 git-gui: Better positioning in Blame Parent CommitAlexander Gavrilov, Aug 23, 2008
  10. 6/7 git-gui: Allow specifying an initial line for git gui blame.Alexander Gavrilov, Aug 23, 2008
  11. Shawn O. PearceAug 25, 2008
  12. 7/7 Document new options of gui tools.Alexander Gavrilov, Aug 23, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.