git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[RFC PATCH 2/2] git-gui: teach fetch/prune menu to do it for all remotes

From
Heiko Voigt <hvoigt@hvoigt.net>
Date
Feb 13, 2011, 13:57 UTC
Message-ID
<20110213135714.GE31986@book.hvoigt.net>
In-Reply-To
<20110213134753.GC31986@book.hvoigt.net>

The commandline fetch already has this option for some time. Since this was not available at the time git gui was written lets implement it now.

Signed-off-by: Heiko Voigt <heiko.voigt@mahr.de>
---
It just came to my mind that I probably should implement a version check
of the commandline to ensure that this option is available. Thats why I
tagged only this patch with RFC.
Cheers Heiko
 lib/remote.tcl    |   45 +++++++++++++++++++++++++++++++++++++++++++++
 lib/transport.tcl |   29 +++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/lib/remote.tcl b/lib/remote.tcl
index d9eab78..7011681 100644
--- a/lib/remote.tcl
+++ b/lib/remote.tcl
@@ -230,6 +230,45 @@ proc make_sure_remote_submenues_exist {remote_m} {
 	}
 }
 
+proc update_all_remotes_menu_entry {} {
+	global all_remotes
+
+	set have_remote 0
+	foreach r $all_remotes {
+		set have_remote 1
+	}
+
+	set remote_m .mbar.remote
+	set fetch_m $remote_m.fetch
+	set prune_m $remote_m.prune
+	if {$have_remote} {
+		make_sure_remote_submenues_exist $remote_m
+		if {[$fetch_m entrycget 0 -label] ne "All"} {
+
+			$fetch_m insert 0 separator
+			$fetch_m insert 0 command \
+				-label "All" \
+				-command fetch_from_all
+
+			$prune_m insert 0 separator
+			$prune_m insert 0 command \
+	  			-label "All" \
+				-command prune_from_all
+		}
+	} else {
+		if {[winfo exists $fetch_m]} {
+			if {[$fetch_m type end] eq "separator"} {
+
+				delete_from_menu $fetch_m 0
+				delete_from_menu $fetch_m 0
+
+				delete_from_menu $prune_m 0
+				delete_from_menu $prune_m 0
+			}
+		}
+	}
+}
+
 proc populate_remotes_menu {} {
 	global all_remotes
 
@@ -237,6 +276,8 @@ proc populate_remotes_menu {} {
 		add_fetch_entry $r
 		add_push_entry $r
 	}
+
+	update_all_remotes_menu_entry
 }
 
 proc add_single_remote {name location} {
@@ -252,6 +293,8 @@ proc add_single_remote {name location} {
 
 	add_fetch_entry $name
 	add_push_entry $name
+
+	update_all_remotes_menu_entry
 }
 
 proc delete_from_menu {menu name} {
@@ -281,4 +324,6 @@ proc remove_remote {name} {
 	delete_from_menu $remote_m.remove $name
 	# Not all remotes are in the push menu
 	catch { delete_from_menu $remote_m.push $name }
+
+	update_all_remotes_menu_entry
 }
diff --git a/lib/transport.tcl b/lib/transport.tcl
index 3067058..7fad9b7 100644
--- a/lib/transport.tcl
+++ b/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] \
-- 
1.7.4.rc3.4.g155c4
Previous: Heiko VoigtNext: Pat Thoyts
Message 5 of 17 in “git-gui: fix deleting item from all_remotes variable”
  1. 1/2 git-gui: fix deleting item from all_remotes variableHeiko Voigt, Feb 12, 2011
  2. Pat ThoytsFeb 13, 2011
  3. Heiko VoigtFeb 13, 2011
  4. 1/2 git-gui: refactor remote submenu creation into subroutineHeiko Voigt, Feb 13, 2011
  5. 2/2 git-gui: teach fetch/prune menu to do it for all remotesHeiko Voigt, Feb 13, 2011
  6. git-gui: Include version check and test for tearoff menu entryPat Thoyts, Feb 14, 2011
  7. Heiko VoigtFeb 14, 2011
  8. Pat ThoytsFeb 15, 2011
  9. Heiko VoigtFeb 17, 2011
  10. Jens LehmannFeb 22, 2011
  11. 1/2 git-gui: fetch/prune all entry only for more than one entryHeiko Voigt, Feb 22, 2011
  12. Pat ThoytsFeb 24, 2011
  13. 2/2 git-gui: fetch/prune all entry appears lastHeiko Voigt, Feb 22, 2011
  14. Jens LehmannFeb 23, 2011
  15. Pat ThoytsFeb 24, 2011
  16. Heiko VoigtFeb 13, 2011
  17. Heiko VoigtFeb 13, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.