diff options
author | Petr Baudis <pasky@suse.cz> | 2008-09-24 22:44:02 +0200 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2008-09-30 12:59:18 -0700 |
commit | 0d4044123cb081bd690dece6505ffbcb8476e7ef (patch) | |
tree | f7cb9badcc6c5624914e2bbce40b002a5e8cb2a6 | |
parent | ba6485e05d43abf66e6b651a41b1ddc511b0e5eb (diff) | |
download | git-0d4044123cb081bd690dece6505ffbcb8476e7ef.tar.gz git-0d4044123cb081bd690dece6505ffbcb8476e7ef.tar.xz |
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 <petr.baudis@novartis.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rw-r--r-- | lib/remote.tcl | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/remote.tcl b/lib/remote.tcl index 643f0bc54..185224735 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 +} |