From: Stefan Haller <lists@xxxxxxxxxxxxxxxx> Sometimes it's desirable to see what changes were introduced by a merge commit, rather than how conflicts were resolved. This adds a checkbox which, when turned on, makes gitk show the equivalent of "git show --first-parent <commit>" for merge commits. Signed-off-by: Stefan Haller <stefan@xxxxxxxxxxxxxxxx> --- Paul Mackerras <paulus@xxxxxxxxx> wrote: > I just applied Thomas Rast's patch, so you'll need to rebase. OK, here's a new patch, rebased onto current master (but otherwise unchanged for now). > Also you're right that we're running out of space; perhaps we need to make > the pane header two rows high. The suggestion was to make it two rows high only if it doesn't fit on one row (i.e. dynamically "line-wrap"), and I like the idea. Unfortunately that's beyond my Tk skills; anybody willing to help? > Finally, "First parent" doesn't really convey to me immediately what it > does -- I have to think about it, so it will probably confuse new users. > I don't know what would be better, though. What I like about it is that it's consistent with the command-line client, "git show --first-parent". But I don't insist on it if anybody has a better suggestion. gitk | 25 ++++++++++++++++++++++--- 1 files changed, 22 insertions(+), 3 deletions(-) diff --git a/gitk b/gitk index e82c6bf..7201ba0 100755 --- a/gitk +++ b/gitk @@ -2269,6 +2269,10 @@ proc makewindow {} { pack .bleft.mid.worddiff -side left -padx 5 } + ${NS}::checkbutton .bleft.mid.firstparent -text [mc "First parent"] \ + -command changefirstparent -variable firstparent + pack .bleft.mid.firstparent -side left -padx 5 + set ctext .bleft.bottom.ctext text $ctext -background $bgcolor -foreground $fgcolor \ -state disabled -font textfont \ @@ -6897,6 +6901,7 @@ proc selectline {l isnew {desired_loc {}}} { global cmitmode showneartags allcommits global targetrow targetid lastscrollrows global autoselect jump_to_here + global firstparent catch {unset pending_select} $canv delete hover @@ -7038,7 +7043,7 @@ proc selectline {l isnew {desired_loc {}}} { init_flist [mc "Comments"] if {$cmitmode eq "tree"} { gettree $id - } elseif {[llength $olds] <= 1} { + } elseif {[llength $olds] <= 1 || $firstparent} { startdiff $id } else { mergediff $id @@ -7442,7 +7447,7 @@ proc diffcmd {ids flags} { proc gettreediffs {ids} { global treediff treepending - if {[catch {set gdtf [open [diffcmd $ids {--no-commit-id}] r]}]} return + if {[catch {set gdtf [open [diffcmd $ids {--no-commit-id -m --first-parent}] r]}]} return set treepending $ids set treediff {} @@ -7534,12 +7539,20 @@ proc changeworddiff {name ix op} { reselectline } +proc changefirstparent {} { + global treediffs + catch {unset treediffs} + + reselectline +} + proc getblobdiffs {ids} { global blobdifffd diffids env global diffinhdr treediffs global diffcontext global ignorespace global worddiff + global firstparent global limitdiffs vfilelimit curview global diffencoding targetline diffnparents global git_version currdiffsubmod @@ -7552,13 +7565,18 @@ proc getblobdiffs {ids} { if {[package vcompare $git_version "1.6.6"] >= 0} { set submodule "--submodule" } - set cmd [diffcmd $ids "-p $textconv $submodule -C --cc --no-commit-id -U$diffcontext"] + set cmd [diffcmd $ids "-p $textconv $submodule -C --no-commit-id -U$diffcontext"] if {$ignorespace} { append cmd " -w" } if {$worddiff ne [mc "Line diff"]} { append cmd " --word-diff=porcelain" } + if {$firstparent} { + append cmd " -m --first-parent" + } else { + append cmd " --cc" + } if {$limitdiffs && $vfilelimit($curview) ne {}} { set cmd [concat $cmd -- $vfilelimit($curview)] } @@ -11453,6 +11471,7 @@ set diffcolors {red "#00a000" blue} set diffcontext 3 set ignorespace 0 set worddiff "" +set firstparent 0 set markbgcolor "#e0e0ff" set circlecolors {white blue gray blue blue} -- 1.7.3.2.442.g97e50 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html