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>
Petr Baudis committed
Sep 24, 2008 at 22:44 UTC
0d4044123cb081bd690dece6505ffbcb8476e7ef
1 file changed
+37
lib/remote.tcl
+37
@@ -137,6 +137,7 @@ proc add_fetch_entry {r} {
137
set remote_m .mbar.remote
138
set fetch_m $remote_m.fetch
139
set prune_m $remote_m.prune
140
+ set remove_m $remote_m.remove
141
set enable 0
142
if {![catch {set a $repo_config(remote.$r.url)}]} {
143
if {![catch {set a $repo_config(remote.$r.fetch)}]} {
@@ -157,6 +158,11 @@ proc add_fetch_entry {r} {
158
159
if {$enable} {
160
if {![winfo exists $fetch_m]} {
161
+ menu $remove_m
162
+ $remote_m insert 0 cascade \
163
+ -label [mc "Remove Remote"] \
164
+ -menu $remove_m
165
+
166
menu $prune_m
167
$remote_m insert 0 cascade \
168
-label [mc "Prune from"] \
@@ -174,6 +180,9 @@ proc add_fetch_entry {r} {
180
$prune_m add command \
181
-label $r \
182
-command [list prune_from $r]
183
+ $remove_m add command \
184
+ -label $r \
185
+ -command [list remove_remote $r]
186
}
187
}
188
@@ -236,3 +245,31 @@ proc add_single_remote {name location} {
245
add_fetch_entry $name
246
add_push_entry $name
247
}
248
+
249
+proc delete_from_menu {menu name} {
250
+ if {[winfo exists $menu]} {
251
+ $menu delete $name
252
+ }
253
+}
254
+
255
+proc remove_remote {name} {
256
+ global all_remotes repo_config
257
+
258
+ git remote rm $name
259
+
260
+ catch {
261
+ # Missing values are ok
262
+ unset repo_config(remote.$name.url)
263
+ unset repo_config(remote.$name.fetch)
264
+ unset repo_config(remote.$name.push)
265
+ }
266
+
267
+ set i [lsearch -exact all_remotes $name]
268
+ lreplace all_remotes $i $i
269
+
270
+ set remote_m .mbar.remote
271
+ delete_from_menu $remote_m.fetch $name
272
+ delete_from_menu $remote_m.prune $name
273
+ delete_from_menu $remote_m.remove $name
274
+ delete_from_menu $remote_m.push $name
275
+}