diff options
Diffstat (limited to 'git-gui/lib/transport.tcl')
-rw-r--r-- | git-gui/lib/transport.tcl | 81 |
1 files changed, 59 insertions, 22 deletions
diff --git a/git-gui/lib/transport.tcl b/git-gui/lib/transport.tcl index b18d9c7a1b..e5d211edea 100644 --- a/git-gui/lib/transport.tcl +++ b/git-gui/lib/transport.tcl @@ -20,6 +20,35 @@ proc prune_from {remote} { console::exec $w [list git remote prune $remote] } +proc fetch_from_all {} { + set w [console::new \ + [mc "fetch all remotes"] \ + [mc "Fetching new changes from all remotes"]] + + set cmd [list git fetch --all] + if {[is_config_true gui.pruneduringfetch]} { + lappend cmd --prune + } + + console::exec $w $cmd +} + +proc prune_from_all {} { + global all_remotes + + set w [console::new \ + [mc "remote prune all remotes"] \ + [mc "Pruning tracking branches deleted from all remotes"]] + + set cmd [list git remote prune] + + foreach r $all_remotes { + lappend cmd $r + } + + console::exec $w $cmd +} + proc push_to {remote} { set w [console::new \ [mc "push %s" $remote] \ @@ -91,50 +120,59 @@ trace add variable push_remote write \ proc do_push_anywhere {} { global all_remotes current_branch global push_urltype push_remote push_url push_thin push_tags - global push_force + global push_force use_ttk NS set w .push_setup toplevel $w + catch {wm attributes $w -type dialog} + wm withdraw $w wm geometry $w "+[winfo rootx .]+[winfo rooty .]" + pave_toplevel $w - label $w.header -text [mc "Push Branches"] -font font_uibold + ${NS}::label $w.header -text [mc "Push Branches"] \ + -font font_uibold -anchor center pack $w.header -side top -fill x - frame $w.buttons - button $w.buttons.create -text [mc Push] \ + ${NS}::frame $w.buttons + ${NS}::button $w.buttons.create -text [mc Push] \ -default active \ -command [list start_push_anywhere_action $w] pack $w.buttons.create -side right - button $w.buttons.cancel -text [mc "Cancel"] \ + ${NS}::button $w.buttons.cancel -text [mc "Cancel"] \ -default normal \ -command [list destroy $w] pack $w.buttons.cancel -side right -padx 5 pack $w.buttons -side bottom -fill x -pady 10 -padx 10 - labelframe $w.source -text [mc "Source Branches"] - listbox $w.source.l \ + ${NS}::labelframe $w.source -text [mc "Source Branches"] + slistbox $w.source.l \ -height 10 \ -width 70 \ - -selectmode extended \ - -yscrollcommand [list $w.source.sby set] + -selectmode extended foreach h [load_all_heads] { $w.source.l insert end $h if {$h eq $current_branch} { $w.source.l select set end + $w.source.l yview end } } - scrollbar $w.source.sby -command [list $w.source.l yview] - pack $w.source.sby -side right -fill y pack $w.source.l -side left -fill both -expand 1 pack $w.source -fill both -expand 1 -pady 5 -padx 5 - labelframe $w.dest -text [mc "Destination Repository"] + ${NS}::labelframe $w.dest -text [mc "Destination Repository"] if {$all_remotes ne {}} { - radiobutton $w.dest.remote_r \ + ${NS}::radiobutton $w.dest.remote_r \ -text [mc "Remote:"] \ -value remote \ -variable push_urltype - eval tk_optionMenu $w.dest.remote_m push_remote $all_remotes + if {$use_ttk} { + ttk::combobox $w.dest.remote_m -state readonly \ + -exportselection false \ + -textvariable push_remote \ + -values $all_remotes + } else { + eval tk_optionMenu $w.dest.remote_m push_remote $all_remotes + } grid $w.dest.remote_r $w.dest.remote_m -sticky w if {[lsearch -sorted -exact $all_remotes origin] != -1} { set push_remote origin @@ -145,13 +183,11 @@ proc do_push_anywhere {} { } else { set push_urltype url } - radiobutton $w.dest.url_r \ + ${NS}::radiobutton $w.dest.url_r \ -text [mc "Arbitrary Location:"] \ -value url \ -variable push_urltype - entry $w.dest.url_t \ - -borderwidth 1 \ - -relief sunken \ + ${NS}::entry $w.dest.url_t \ -width 50 \ -textvariable push_url \ -validate key \ @@ -166,16 +202,16 @@ proc do_push_anywhere {} { grid columnconfigure $w.dest 1 -weight 1 pack $w.dest -anchor nw -fill x -pady 5 -padx 5 - labelframe $w.options -text [mc "Transfer Options"] - checkbutton $w.options.force \ + ${NS}::labelframe $w.options -text [mc "Transfer Options"] + ${NS}::checkbutton $w.options.force \ -text [mc "Force overwrite existing branch (may discard changes)"] \ -variable push_force grid $w.options.force -columnspan 2 -sticky w - checkbutton $w.options.thin \ + ${NS}::checkbutton $w.options.thin \ -text [mc "Use thin pack (for slow network connections)"] \ -variable push_thin grid $w.options.thin -columnspan 2 -sticky w - checkbutton $w.options.tags \ + ${NS}::checkbutton $w.options.tags \ -text [mc "Include tags"] \ -variable push_tags grid $w.options.tags -columnspan 2 -sticky w @@ -191,5 +227,6 @@ proc do_push_anywhere {} { bind $w <Key-Escape> "destroy $w" bind $w <Key-Return> [list start_push_anywhere_action $w] wm title $w [append "[appname] ([reponame]): " [mc "Push"]] + wm deiconify $w tkwait window $w } |