From 0d4044123cb081bd690dece6505ffbcb8476e7ef Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Wed, 24 Sep 2008 22:44:02 +0200 Subject: [PATCH] git-gui: Add support for removing remotes We introduce new submenu Remote -> Remove Remote, allowing to remove remotes. In the future, we might consider a confirmation popup to avoid misclicks, but removing a remote is not very lossy operation. Signed-off-by: Petr Baudis Signed-off-by: Shawn O. Pearce --- lib/remote.tcl | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/lib/remote.tcl b/lib/remote.tcl index 643f0bc543..1852247358 100644 --- a/lib/remote.tcl +++ b/lib/remote.tcl @@ -137,6 +137,7 @@ proc add_fetch_entry {r} { set remote_m .mbar.remote set fetch_m $remote_m.fetch set prune_m $remote_m.prune + set remove_m $remote_m.remove set enable 0 if {![catch {set a $repo_config(remote.$r.url)}]} { if {![catch {set a $repo_config(remote.$r.fetch)}]} { @@ -157,6 +158,11 @@ proc add_fetch_entry {r} { if {$enable} { if {![winfo exists $fetch_m]} { + menu $remove_m + $remote_m insert 0 cascade \ + -label [mc "Remove Remote"] \ + -menu $remove_m + menu $prune_m $remote_m insert 0 cascade \ -label [mc "Prune from"] \ @@ -174,6 +180,9 @@ proc add_fetch_entry {r} { $prune_m add command \ -label $r \ -command [list prune_from $r] + $remove_m add command \ + -label $r \ + -command [list remove_remote $r] } } @@ -236,3 +245,31 @@ proc add_single_remote {name location} { add_fetch_entry $name add_push_entry $name } + +proc delete_from_menu {menu name} { + if {[winfo exists $menu]} { + $menu delete $name + } +} + +proc remove_remote {name} { + global all_remotes repo_config + + git remote rm $name + + catch { + # Missing values are ok + unset repo_config(remote.$name.url) + unset repo_config(remote.$name.fetch) + unset repo_config(remote.$name.push) + } + + set i [lsearch -exact all_remotes $name] + lreplace all_remotes $i $i + + set remote_m .mbar.remote + delete_from_menu $remote_m.fetch $name + delete_from_menu $remote_m.prune $name + delete_from_menu $remote_m.remove $name + delete_from_menu $remote_m.push $name +} -- GitLab