Merge branch 'master' into new
Conflicts: gitk
This commit is contained in:
commit
96535e615d
84
gitk
84
gitk
@ -34,10 +34,10 @@ proc start_rev_list {view} {
|
|||||||
set order "--date-order"
|
set order "--date-order"
|
||||||
}
|
}
|
||||||
if {[catch {
|
if {[catch {
|
||||||
set fd [open [concat | git-rev-list --header $order \
|
set fd [open [concat | git rev-list --header $order \
|
||||||
--parents --boundary --default HEAD $args] r]
|
--parents --boundary --default HEAD $args] r]
|
||||||
} err]} {
|
} err]} {
|
||||||
puts stderr "Error executing git-rev-list: $err"
|
puts stderr "Error executing git rev-list: $err"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
set commfd($view) $fd
|
set commfd($view) $fd
|
||||||
@ -94,10 +94,10 @@ proc getcommitlines {fd view} {
|
|||||||
}
|
}
|
||||||
if {[string range $err 0 4] == "usage"} {
|
if {[string range $err 0 4] == "usage"} {
|
||||||
set err "Gitk: error reading commits$fv:\
|
set err "Gitk: error reading commits$fv:\
|
||||||
bad arguments to git-rev-list."
|
bad arguments to git rev-list."
|
||||||
if {$viewname($view) eq "Command line"} {
|
if {$viewname($view) eq "Command line"} {
|
||||||
append err \
|
append err \
|
||||||
" (Note: arguments to gitk are passed to git-rev-list\
|
" (Note: arguments to gitk are passed to git rev-list\
|
||||||
to allow selection of commits to be displayed.)"
|
to allow selection of commits to be displayed.)"
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -148,7 +148,7 @@ proc getcommitlines {fd view} {
|
|||||||
if {[string length $shortcmit] > 80} {
|
if {[string length $shortcmit] > 80} {
|
||||||
set shortcmit "[string range $shortcmit 0 80]..."
|
set shortcmit "[string range $shortcmit 0 80]..."
|
||||||
}
|
}
|
||||||
error_popup "Can't parse git-rev-list output: {$shortcmit}"
|
error_popup "Can't parse git rev-list output: {$shortcmit}"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
set id [lindex $ids 0]
|
set id [lindex $ids 0]
|
||||||
@ -217,7 +217,7 @@ proc doupdate {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc readcommit {id} {
|
proc readcommit {id} {
|
||||||
if {[catch {set contents [exec git-cat-file commit $id]}]} return
|
if {[catch {set contents [exec git cat-file commit $id]}]} return
|
||||||
parsecommit $id $contents 0
|
parsecommit $id $contents 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,8 +278,8 @@ proc parsecommit {id contents listed} {
|
|||||||
set headline $comment
|
set headline $comment
|
||||||
}
|
}
|
||||||
if {!$listed} {
|
if {!$listed} {
|
||||||
# git-rev-list indents the comment by 4 spaces;
|
# git rev-list indents the comment by 4 spaces;
|
||||||
# if we got this via git-cat-file, add the indentation
|
# if we got this via git cat-file, add the indentation
|
||||||
set newcomment {}
|
set newcomment {}
|
||||||
foreach line [split $comment "\n"] {
|
foreach line [split $comment "\n"] {
|
||||||
append newcomment " "
|
append newcomment " "
|
||||||
@ -339,14 +339,14 @@ proc readrefs {} {
|
|||||||
set type {}
|
set type {}
|
||||||
set tag {}
|
set tag {}
|
||||||
catch {
|
catch {
|
||||||
set commit [exec git-rev-parse "$id^0"]
|
set commit [exec git rev-parse "$id^0"]
|
||||||
if {"$commit" != "$id"} {
|
if {"$commit" != "$id"} {
|
||||||
set tagids($name) $commit
|
set tagids($name) $commit
|
||||||
lappend idtags($commit) $name
|
lappend idtags($commit) $name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
set tagcontents($name) [exec git-cat-file tag "$id"]
|
set tagcontents($name) [exec git cat-file tag "$id"]
|
||||||
}
|
}
|
||||||
} elseif { $type == "heads" } {
|
} elseif { $type == "heads" } {
|
||||||
set headids($name) $id
|
set headids($name) $id
|
||||||
@ -359,21 +359,21 @@ proc readrefs {} {
|
|||||||
close $refd
|
close $refd
|
||||||
}
|
}
|
||||||
|
|
||||||
proc show_error {w msg} {
|
proc show_error {w top msg} {
|
||||||
message $w.m -text $msg -justify center -aspect 400
|
message $w.m -text $msg -justify center -aspect 400
|
||||||
pack $w.m -side top -fill x -padx 20 -pady 20
|
pack $w.m -side top -fill x -padx 20 -pady 20
|
||||||
button $w.ok -text OK -command "destroy $w"
|
button $w.ok -text OK -command "destroy $top"
|
||||||
pack $w.ok -side bottom -fill x
|
pack $w.ok -side bottom -fill x
|
||||||
bind $w <Visibility> "grab $w; focus $w"
|
bind $top <Visibility> "grab $top; focus $top"
|
||||||
bind $w <Key-Return> "destroy $w"
|
bind $top <Key-Return> "destroy $top"
|
||||||
tkwait window $w
|
tkwait window $top
|
||||||
}
|
}
|
||||||
|
|
||||||
proc error_popup msg {
|
proc error_popup msg {
|
||||||
set w .error
|
set w .error
|
||||||
toplevel $w
|
toplevel $w
|
||||||
wm transient $w .
|
wm transient $w .
|
||||||
show_error $w $msg
|
show_error $w $w $msg
|
||||||
}
|
}
|
||||||
|
|
||||||
proc makewindow {} {
|
proc makewindow {} {
|
||||||
@ -382,7 +382,7 @@ proc makewindow {} {
|
|||||||
global findtype findtypemenu findloc findstring fstring geometry
|
global findtype findtypemenu findloc findstring fstring geometry
|
||||||
global entries sha1entry sha1string sha1but
|
global entries sha1entry sha1string sha1but
|
||||||
global maincursor textcursor curtextcursor
|
global maincursor textcursor curtextcursor
|
||||||
global rowctxmenu mergemax
|
global rowctxmenu mergemax wrapcomment
|
||||||
global highlight_files gdttype
|
global highlight_files gdttype
|
||||||
global searchstring sstring
|
global searchstring sstring
|
||||||
|
|
||||||
@ -570,6 +570,7 @@ proc makewindow {} {
|
|||||||
pack $ctext -side left -fill both -expand 1
|
pack $ctext -side left -fill both -expand 1
|
||||||
.ctop.cdet add .ctop.cdet.left
|
.ctop.cdet add .ctop.cdet.left
|
||||||
|
|
||||||
|
$ctext tag conf comment -wrap $wrapcomment
|
||||||
$ctext tag conf filesep -font [concat $textfont bold] -back "#aaaaaa"
|
$ctext tag conf filesep -font [concat $textfont bold] -back "#aaaaaa"
|
||||||
$ctext tag conf hunksep -fore blue
|
$ctext tag conf hunksep -fore blue
|
||||||
$ctext tag conf d0 -fore red
|
$ctext tag conf d0 -fore red
|
||||||
@ -744,7 +745,7 @@ proc savestuff {w} {
|
|||||||
global stuffsaved findmergefiles maxgraphpct
|
global stuffsaved findmergefiles maxgraphpct
|
||||||
global maxwidth
|
global maxwidth
|
||||||
global viewname viewfiles viewargs viewperm nextviewnum
|
global viewname viewfiles viewargs viewperm nextviewnum
|
||||||
global cmitmode
|
global cmitmode wrapcomment
|
||||||
|
|
||||||
if {$stuffsaved} return
|
if {$stuffsaved} return
|
||||||
if {![winfo viewable .]} return
|
if {![winfo viewable .]} return
|
||||||
@ -757,6 +758,7 @@ proc savestuff {w} {
|
|||||||
puts $f [list set maxgraphpct $maxgraphpct]
|
puts $f [list set maxgraphpct $maxgraphpct]
|
||||||
puts $f [list set maxwidth $maxwidth]
|
puts $f [list set maxwidth $maxwidth]
|
||||||
puts $f [list set cmitmode $cmitmode]
|
puts $f [list set cmitmode $cmitmode]
|
||||||
|
puts $f [list set wrapcomment $wrapcomment]
|
||||||
puts $f "set geometry(width) [winfo width .ctop]"
|
puts $f "set geometry(width) [winfo width .ctop]"
|
||||||
puts $f "set geometry(height) [winfo height .ctop]"
|
puts $f "set geometry(height) [winfo height .ctop]"
|
||||||
puts $f "set geometry(canv1) [expr {[winfo width $canv]-2}]"
|
puts $f "set geometry(canv1) [expr {[winfo width $canv]-2}]"
|
||||||
@ -1388,7 +1390,7 @@ proc vieweditor {top n title} {
|
|||||||
checkbutton $top.perm -text "Remember this view" -variable newviewperm($n)
|
checkbutton $top.perm -text "Remember this view" -variable newviewperm($n)
|
||||||
grid $top.perm - -pady 5 -sticky w
|
grid $top.perm - -pady 5 -sticky w
|
||||||
message $top.al -aspect 1000 -font $uifont \
|
message $top.al -aspect 1000 -font $uifont \
|
||||||
-text "Commits to include (arguments to git-rev-list):"
|
-text "Commits to include (arguments to git rev-list):"
|
||||||
grid $top.al - -sticky w -pady 5
|
grid $top.al - -sticky w -pady 5
|
||||||
entry $top.args -width 50 -textvariable newviewargs($n) \
|
entry $top.args -width 50 -textvariable newviewargs($n) \
|
||||||
-background white
|
-background white
|
||||||
@ -3526,11 +3528,11 @@ proc commit_descriptor {p} {
|
|||||||
|
|
||||||
# append some text to the ctext widget, and make any SHA1 ID
|
# append some text to the ctext widget, and make any SHA1 ID
|
||||||
# that we know about be a clickable link.
|
# that we know about be a clickable link.
|
||||||
proc appendwithlinks {text} {
|
proc appendwithlinks {text tags} {
|
||||||
global ctext commitrow linknum curview
|
global ctext commitrow linknum curview
|
||||||
|
|
||||||
set start [$ctext index "end - 1c"]
|
set start [$ctext index "end - 1c"]
|
||||||
$ctext insert end $text
|
$ctext insert end $text $tags
|
||||||
$ctext insert end "\n"
|
$ctext insert end "\n"
|
||||||
set links [regexp -indices -all -inline {[0-9a-f]{40}} $text]
|
set links [regexp -indices -all -inline {[0-9a-f]{40}} $text]
|
||||||
foreach l $links {
|
foreach l $links {
|
||||||
@ -3660,7 +3662,7 @@ proc selectline {l isnew} {
|
|||||||
$ctext insert end "\n"
|
$ctext insert end "\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
set comment {}
|
set headers {}
|
||||||
set olds [lindex $parentlist $l]
|
set olds [lindex $parentlist $l]
|
||||||
if {[llength $olds] > 1} {
|
if {[llength $olds] > 1} {
|
||||||
set np 0
|
set np 0
|
||||||
@ -3671,23 +3673,22 @@ proc selectline {l isnew} {
|
|||||||
set tag m$np
|
set tag m$np
|
||||||
}
|
}
|
||||||
$ctext insert end "Parent: " $tag
|
$ctext insert end "Parent: " $tag
|
||||||
appendwithlinks [commit_descriptor $p]
|
appendwithlinks [commit_descriptor $p] {}
|
||||||
incr np
|
incr np
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
foreach p $olds {
|
foreach p $olds {
|
||||||
append comment "Parent: [commit_descriptor $p]\n"
|
append headers "Parent: [commit_descriptor $p]\n"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach c [lindex $childlist $l] {
|
foreach c [lindex $childlist $l] {
|
||||||
append comment "Child: [commit_descriptor $c]\n"
|
append headers "Child: [commit_descriptor $c]\n"
|
||||||
}
|
}
|
||||||
append comment "\n"
|
|
||||||
append comment [lindex $info 5]
|
|
||||||
|
|
||||||
# make anything that looks like a SHA1 ID be a clickable link
|
# make anything that looks like a SHA1 ID be a clickable link
|
||||||
appendwithlinks $comment
|
appendwithlinks $headers {}
|
||||||
|
appendwithlinks [lindex $info 5] {comment}
|
||||||
|
|
||||||
$ctext tag delete Comments
|
$ctext tag delete Comments
|
||||||
$ctext tag remove found 1.0 end
|
$ctext tag remove found 1.0 end
|
||||||
@ -3830,7 +3831,7 @@ proc gettree {id} {
|
|||||||
catch {unset diffmergeid}
|
catch {unset diffmergeid}
|
||||||
if {![info exists treefilelist($id)]} {
|
if {![info exists treefilelist($id)]} {
|
||||||
if {![info exists treepending]} {
|
if {![info exists treepending]} {
|
||||||
if {[catch {set gtf [open [concat | git-ls-tree -r $id] r]}]} {
|
if {[catch {set gtf [open [concat | git ls-tree -r $id] r]}]} {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
set treepending $id
|
set treepending $id
|
||||||
@ -3878,7 +3879,7 @@ proc showfile {f} {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
set blob [lindex $treeidlist($diffids) $i]
|
set blob [lindex $treeidlist($diffids) $i]
|
||||||
if {[catch {set bf [open [concat | git-cat-file blob $blob] r]} err]} {
|
if {[catch {set bf [open [concat | git cat-file blob $blob] r]} err]} {
|
||||||
puts "oops, error reading blob $blob: $err"
|
puts "oops, error reading blob $blob: $err"
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -3920,7 +3921,7 @@ proc mergediff {id l} {
|
|||||||
set diffids $id
|
set diffids $id
|
||||||
# this doesn't seem to actually affect anything...
|
# this doesn't seem to actually affect anything...
|
||||||
set env(GIT_DIFF_OPTS) $diffopts
|
set env(GIT_DIFF_OPTS) $diffopts
|
||||||
set cmd [concat | git-diff-tree --no-commit-id --cc $id]
|
set cmd [concat | git diff-tree --no-commit-id --cc $id]
|
||||||
if {[catch {set mdf [open $cmd r]} err]} {
|
if {[catch {set mdf [open $cmd r]} err]} {
|
||||||
error_popup "Error getting merge diffs: $err"
|
error_popup "Error getting merge diffs: $err"
|
||||||
return
|
return
|
||||||
@ -4032,7 +4033,7 @@ proc gettreediffs {ids} {
|
|||||||
set treepending $ids
|
set treepending $ids
|
||||||
set treediff {}
|
set treediff {}
|
||||||
if {[catch \
|
if {[catch \
|
||||||
{set gdtf [open [concat | git-diff-tree --no-commit-id -r $ids] r]} \
|
{set gdtf [open [concat | git diff-tree --no-commit-id -r $ids] r]} \
|
||||||
]} return
|
]} return
|
||||||
fconfigure $gdtf -blocking 0
|
fconfigure $gdtf -blocking 0
|
||||||
fileevent $gdtf readable [list gettreediffline $gdtf $ids]
|
fileevent $gdtf readable [list gettreediffline $gdtf $ids]
|
||||||
@ -4068,7 +4069,7 @@ proc getblobdiffs {ids} {
|
|||||||
global nextupdate diffinhdr treediffs
|
global nextupdate diffinhdr treediffs
|
||||||
|
|
||||||
set env(GIT_DIFF_OPTS) $diffopts
|
set env(GIT_DIFF_OPTS) $diffopts
|
||||||
set cmd [concat | git-diff-tree --no-commit-id -r -p -C $ids]
|
set cmd [concat | git diff-tree --no-commit-id -r -p -C $ids]
|
||||||
if {[catch {set bdf [open $cmd r]} err]} {
|
if {[catch {set bdf [open $cmd r]} err]} {
|
||||||
puts "error getting diffs: $err"
|
puts "error getting diffs: $err"
|
||||||
return
|
return
|
||||||
@ -4737,7 +4738,7 @@ proc mkpatchgo {} {
|
|||||||
set oldid [$patchtop.fromsha1 get]
|
set oldid [$patchtop.fromsha1 get]
|
||||||
set newid [$patchtop.tosha1 get]
|
set newid [$patchtop.tosha1 get]
|
||||||
set fname [$patchtop.fname get]
|
set fname [$patchtop.fname get]
|
||||||
if {[catch {exec git-diff-tree -p $oldid $newid >$fname &} err]} {
|
if {[catch {exec git diff-tree -p $oldid $newid >$fname &} err]} {
|
||||||
error_popup "Error creating patch: $err"
|
error_popup "Error creating patch: $err"
|
||||||
}
|
}
|
||||||
catch {destroy $patchtop}
|
catch {destroy $patchtop}
|
||||||
@ -4945,7 +4946,7 @@ proc showtag {tag isnew} {
|
|||||||
} else {
|
} else {
|
||||||
set text "Tag: $tag\nId: $tagids($tag)"
|
set text "Tag: $tag\nId: $tagids($tag)"
|
||||||
}
|
}
|
||||||
appendwithlinks $text
|
appendwithlinks $text {}
|
||||||
$ctext conf -state disabled
|
$ctext conf -state disabled
|
||||||
init_flist {}
|
init_flist {}
|
||||||
}
|
}
|
||||||
@ -5300,11 +5301,11 @@ proc tcl_encoding {enc} {
|
|||||||
# defaults...
|
# defaults...
|
||||||
set datemode 0
|
set datemode 0
|
||||||
set diffopts "-U 5 -p"
|
set diffopts "-U 5 -p"
|
||||||
set wrcomcmd "git-diff-tree --stdin -p --pretty"
|
set wrcomcmd "git diff-tree --stdin -p --pretty"
|
||||||
|
|
||||||
set gitencoding {}
|
set gitencoding {}
|
||||||
catch {
|
catch {
|
||||||
set gitencoding [exec git-repo-config --get i18n.commitencoding]
|
set gitencoding [exec git repo-config --get i18n.commitencoding]
|
||||||
}
|
}
|
||||||
if {$gitencoding == ""} {
|
if {$gitencoding == ""} {
|
||||||
set gitencoding "utf-8"
|
set gitencoding "utf-8"
|
||||||
@ -5326,6 +5327,7 @@ set uparrowlen 7
|
|||||||
set downarrowlen 7
|
set downarrowlen 7
|
||||||
set mingaplen 30
|
set mingaplen 30
|
||||||
set cmitmode "patch"
|
set cmitmode "patch"
|
||||||
|
set wrapcomment "none"
|
||||||
|
|
||||||
set colors {green red blue magenta darkgrey brown orange}
|
set colors {green red blue magenta darkgrey brown orange}
|
||||||
|
|
||||||
@ -5347,7 +5349,7 @@ foreach arg $argv {
|
|||||||
# check that we can find a .git directory somewhere...
|
# check that we can find a .git directory somewhere...
|
||||||
set gitdir [gitdir]
|
set gitdir [gitdir]
|
||||||
if {![file isdirectory $gitdir]} {
|
if {![file isdirectory $gitdir]} {
|
||||||
show_error . "Cannot find the git directory \"$gitdir\"."
|
show_error {} . "Cannot find the git directory \"$gitdir\"."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5358,7 +5360,7 @@ if {$i >= 0} {
|
|||||||
set revtreeargs [lrange $revtreeargs 0 [expr {$i - 1}]]
|
set revtreeargs [lrange $revtreeargs 0 [expr {$i - 1}]]
|
||||||
} elseif {$revtreeargs ne {}} {
|
} elseif {$revtreeargs ne {}} {
|
||||||
if {[catch {
|
if {[catch {
|
||||||
set f [eval exec git-rev-parse --no-revs --no-flags $revtreeargs]
|
set f [eval exec git rev-parse --no-revs --no-flags $revtreeargs]
|
||||||
set cmdline_files [split $f "\n"]
|
set cmdline_files [split $f "\n"]
|
||||||
set n [llength $cmdline_files]
|
set n [llength $cmdline_files]
|
||||||
set revtreeargs [lrange $revtreeargs 0 end-$n]
|
set revtreeargs [lrange $revtreeargs 0 end-$n]
|
||||||
@ -5367,9 +5369,9 @@ if {$i >= 0} {
|
|||||||
# so look for "fatal:".
|
# so look for "fatal:".
|
||||||
set i [string first "fatal:" $err]
|
set i [string first "fatal:" $err]
|
||||||
if {$i > 0} {
|
if {$i > 0} {
|
||||||
set err [string range [expr {$i + 6}] end]
|
set err [string range $err [expr {$i + 6}] end]
|
||||||
}
|
}
|
||||||
show_error . "Bad arguments to gitk:\n$err"
|
show_error {} . "Bad arguments to gitk:\n$err"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user