@matheusbsbs / matheus-bagliano / commits / 0d4044123c
Fork 0

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 +}