gitk: add option to perform 'git fetch' command
PATCH 1/1 gitk: add option to perform 'git fetch' command
From: Vladimir Chigarev <[email protected]>
There wasn't ability to perform 'git fetch' from gitk tool. Add 'Fetch' option to 'File' menu.
Bind it to 'F7' key.
---
gitk: add option to perform 'git fetch' command
There wasn't ability to perform 'git fetch' from gitk tool. Add 'Fetch' option to 'File' menu. Bind it to 'F7' key.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-872%2Fchiga17%2Fgitk-fetch-option-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-872/chiga17/gitk-fetch-option-v1
Pull-Request: https://github.com/git/git/pull/872
gitk-git/gitk | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)
gitk-git/gitk +31 -0
@@ -499,6 +499,34 @@ proc getcommits {selid} { } } +proc fetch {} { + global bgcolor NS fetch_output + + set fetch_output {} + if {[catch {exec sh -c "git fetch -v 2>&1"} fetch_output]} { + } + + set w .about + if {[winfo exists $w]} { + raise $w + return + } + ttk_toplevel $w + wm title $w [mc "Fetch"] + make_transient $w . + message $w.m -text [mc " $fetch_output "] \ + -justify left -aspect 600 -border 2 -bg $bgcolor -relief groove + pack $w.m -side top -fill x -padx 2 -pady 2 + ${NS}::button $w.ok -text [mc "Close"] -command "destroy $w" -default active + pack $w.ok -side bottom + bind $w <Visibility> "focus $w.ok" + bind $w <Key-Escape> "destroy $w" + bind $w <Key-Return> "destroy $w" + tk::PlaceWindow $w widget . + + reloadcommits +} + proc updatecommits {} { global curview vcanopt vorigargs vfilelimit viewinstances global viewactive viewcomplete tclencoding
@@ -2089,6 +2117,7 @@ proc makewindow {} { mc "&File" cascade { {mc "&Update" command updatecommits -accelerator F5} {mc "&Reload" command reloadcommits -accelerator Shift-F5} + {mc "&Fetch" command fetch -accelerator F7} {mc "Reread re&ferences" command rereadrefs} {mc "&List references" command showrefs -accelerator F2} {xx "" separator}
@@ -2609,6 +2638,7 @@ proc makewindow {} { bindkey f nextfile bind . <F5> updatecommits bindmodfunctionkey Shift 5 reloadcommits + bind . <F7> fetch bind . <F2> showrefs bindmodfunctionkey Shift 4 {newview 0} bind . <F4> edit_or_newview
@@ -3125,6 +3155,7 @@ proc keys {} { [mc "<%s-KP-> Decrease font size" $M1T] [mc "<%s-minus> Decrease font size" $M1T] [mc "<F5> Update"] +[mc "<F7> Fetch"] " \ -justify left -bg $bgcolor -border 2 -relief groove pack $w.m -side top -fill both -padx 2 -pady 2
base-commit: 72c4083ddf91b489b7b7b812df67ee8842177d98
Signature · 1 line
gitgitgadget
[Cc:ing Paul, the gitk maintainer]
Paul, this patch has been stuck on the Git mailing list for a few months. Could I ask you whether there is a chance that you could review it?
Thanks,
Johannes
Quoted 89 lines · Vladimir Chigarev via GitGitGadget
From: Vladimir Chigarev <[email protected]>
There wasn't ability to perform 'git fetch' from gitk tool. Add 'Fetch' option to 'File' menu.
Bind it to 'F7' key.Signed-off-by Vladimir Chigarev <[email protected]>---
gitk: add option to perform 'git fetch' commandThere wasn't ability to perform 'git fetch' from gitk tool. Add 'Fetch' option to 'File' menu. Bind it to 'F7' key.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-872%2Fchiga17%2Fgitk-fetch-option-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-872/chiga17/gitk-fetch-option-v1
Pull-Request: https://github.com/git/git/pull/872gitk-git/gitk | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)gitk-git/gitk +31
-0@@ -499,6 +499,34 @@ proc getcommits {selid} { } } +proc fetch {} { + global bgcolor NS fetch_output + + set fetch_output {} + if {[catch {exec sh -c "git fetch -v 2>&1"} fetch_output]} { + } + + set w .about + if {[winfo exists $w]} { + raise $w + return + } + ttk_toplevel $w + wm title $w [mc "Fetch"] + make_transient $w . + message $w.m -text [mc " $fetch_output "] \ + -justify left -aspect 600 -border 2 -bg $bgcolor -relief groove + pack $w.m -side top -fill x -padx 2 -pady 2 + ${NS}::button $w.ok -text [mc "Close"] -command "destroy $w" -default active + pack $w.ok -side bottom + bind $w <Visibility> "focus $w.ok" + bind $w <Key-Escape> "destroy $w" + bind $w <Key-Return> "destroy $w" + tk::PlaceWindow $w widget . + + reloadcommits +} + proc updatecommits {} { global curview vcanopt vorigargs vfilelimit viewinstances global viewactive viewcomplete tclencoding@@ -2089,6 +2117,7 @@ proc makewindow {} { mc "&File" cascade { {mc "&Update" command updatecommits -accelerator F5} {mc "&Reload" command reloadcommits -accelerator Shift-F5} + {mc "&Fetch" command fetch -accelerator F7} {mc "Reread re&ferences" command rereadrefs} {mc "&List references" command showrefs -accelerator F2} {xx "" separator}@@ -2609,6 +2638,7 @@ proc makewindow {} { bindkey f nextfile bind . <F5> updatecommits bindmodfunctionkey Shift 5 reloadcommits + bind . <F7> fetch bind . <F2> showrefs bindmodfunctionkey Shift 4 {newview 0} bind . <F4> edit_or_newview@@ -3125,6 +3155,7 @@ proc keys {} { [mc "<%s-KP-> Decrease font size" $M1T] [mc "<%s-minus> Decrease font size" $M1T] [mc "<F5> Update"] +[mc "<F7> Fetch"] " \ -justify left -bg $bgcolor -border 2 -relief groove pack $w.m -side top -fill both -padx 2 -pady 2base-commit:
72c4083ddf91b489b7b7b812df67ee8842177d98--
gitgitgadget
Quoted 4 lines · Vladimir Chigarev
Hello Paul,
Just a gentle reminder.
May I ask you to review my changes in gitk?
Thanks for the reminder. See comments below.
Quoted 5 lines
Quoted 5 lines
gitk-git/gitk proc getcommits {selid} { · line 506
Quoted 5 lines
gitk-git/gitk +5
-0+proc fetch {} { + global bgcolor NS fetch_output + + set fetch_output {} + if {[catch {exec sh -c "git fetch -v 2>&1"} fetch_output]} {
This "exec" call is synchronous, meaning that the gitk process won't do anything else until the exec call returns. Since git fetch is a network operation, that could be quite a long time, during which the GUI will be unresponsive. It would be better to use open rather than exec, which will return a file descriptor. You would then use filerun to set up a procedure to be called when the file descriptor is readable. That way you can arrange for the GUI to continue to respond while the git fetch is happening.
Also, it may be more useful to do "git fetch --all" rather than just "git fetch", though I'm not going to insist on that.
Quoted 3 lines
Quoted 3 lines
gitk-git/gitk proc getcommits {selid} { · line 509
Quoted 3 lines
gitk-git/gitk +3
-0+ } + + set w .about
Why are you reusing the "About gitk" window here? That doesn't seem right. Don't you mean "set w .fetch" or similar?
Quoted 9 lines
Quoted 9 lines
gitk-git/gitk proc getcommits {selid} { · line 518
Quoted 9 lines
gitk-git/gitk +9
-0+ if {[winfo exists $w]} { + raise $w + return + } + ttk_toplevel $w + wm title $w [mc "Fetch"] + make_transient $w . + message $w.m -text [mc " $fetch_output "] \ + -justify left -aspect 600 -border 2 -bg $bgcolor -relief groove
How long can the git fetch output be? If it can be say ten or more lines you might need to use a text widget and a scrollbar rather than a message widget.
Quoted 31 lines
Quoted 31 lines
Review
Quoted 2 lines
(quoted diff) +2
-0+ pack $w.m -side top -fill x -padx 2 -pady 2 + ${NS}::button $w.ok -text [mc "Close"] -command "destroy $w"-default active
Quoted 28 lines
gitk-git/gitk +11
-0+ pack $w.ok -side bottom + bind $w <Visibility> "focus $w.ok" + bind $w <Key-Escape> "destroy $w" + bind $w <Key-Return> "destroy $w" + tk::PlaceWindow $w widget . + + reloadcommits +} + proc updatecommits {} { global curview vcanopt vorigargs vfilelimit viewinstances global viewactive viewcomplete tclencoding@@ -2089,6 +2117,7 @@ proc makewindow {} { mc "&File" cascade { {mc "&Update" command updatecommits -accelerator F5} {mc "&Reload" command reloadcommits -accelerator Shift-F5} + {mc "&Fetch" command fetch -accelerator F7} {mc "Reread re&ferences" command rereadrefs} {mc "&List references" command showrefs -accelerator F2} {xx "" separator}@@ -2609,6 +2638,7 @@ proc makewindow {} { bindkey f nextfile bind . <F5> updatecommits bindmodfunctionkey Shift 5 reloadcommits + bind . <F7> fetch bind . <F2> showrefs bindmodfunctionkey Shift 4 {newview 0} bind . <F4> edit_or_newview
Quoted 8 lines
Quoted 8 lines
gitk-git/gitk proc keys {} { · line 3161
Quoted 8 lines
gitk-git/gitk +1
-0@@ -3125,6 +3155,7 @@ proc keys {} { [mc "<%s-KP-> Decrease font size" $M1T] [mc "<%s-minus> Decrease font size" $M1T] [mc "<F5> Update"] +[mc "<F7> Fetch"] " \ -justify left -bg $bgcolor -border 2 -relief groove pack $w.m -side top -fill both -padx 2 -pady 2
Paul.