about summary refs log tree commit diff
path: root/third_party/git/git-gui/lib/remote.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/git-gui/lib/remote.tcl')
-rw-r--r--third_party/git/git-gui/lib/remote.tcl333
1 files changed, 0 insertions, 333 deletions
diff --git a/third_party/git/git-gui/lib/remote.tcl b/third_party/git/git-gui/lib/remote.tcl
deleted file mode 100644
index ef77ed7399c5..000000000000
--- a/third_party/git/git-gui/lib/remote.tcl
+++ /dev/null
@@ -1,333 +0,0 @@
-# git-gui remote management
-# Copyright (C) 2006, 2007 Shawn Pearce
-
-set some_heads_tracking 0;  # assume not
-
-proc is_tracking_branch {name} {
-	global tracking_branches
-	foreach spec $tracking_branches {
-		set t [lindex $spec 0]
-		if {$t eq $name || [string match $t $name]} {
-			return 1
-		}
-	}
-	return 0
-}
-
-proc all_tracking_branches {} {
-	global tracking_branches
-
-	set all [list]
-	set pat [list]
-	set cmd [list]
-
-	foreach spec $tracking_branches {
-		set dst [lindex $spec 0]
-		if {[string range $dst end-1 end] eq {/*}} {
-			lappend pat $spec
-			lappend cmd [string range $dst 0 end-2]
-		} else {
-			lappend all $spec
-		}
-	}
-
-	if {$pat ne {}} {
-		set fd [eval git_read for-each-ref --format=%(refname) $cmd]
-		while {[gets $fd n] > 0} {
-			foreach spec $pat {
-				set dst [string range [lindex $spec 0] 0 end-2]
-				set len [string length $dst]
-				if {[string equal -length $len $dst $n]} {
-					set src [string range [lindex $spec 2] 0 end-2]
-					set spec [list \
-						$n \
-						[lindex $spec 1] \
-						$src[string range $n $len end] \
-						]
-					lappend all $spec
-				}
-			}
-		}
-		close $fd
-	}
-
-	return [lsort -index 0 -unique $all]
-}
-
-proc load_all_remotes {} {
-	global repo_config
-	global all_remotes tracking_branches some_heads_tracking
-	global remote_url
-
-	set some_heads_tracking 0
-	set all_remotes [list]
-	set trck [list]
-
-	set rh_str refs/heads/
-	set rh_len [string length $rh_str]
-	set rm_dir [gitdir remotes]
-	if {[file isdirectory $rm_dir]} {
-		set all_remotes [glob \
-			-types f \
-			-tails \
-			-nocomplain \
-			-directory $rm_dir *]
-
-		foreach name $all_remotes {
-			catch {
-				set fd [open [file join $rm_dir $name] r]
-				while {[gets $fd line] >= 0} {
-					if {[regexp {^URL:[ 	]*(.+)$} $line line url]} {
-						set remote_url($name) $url
-						continue
-					}
-					if {![regexp {^Pull:[ 	]*([^:]+):(.+)$} \
-						$line line src dst]} continue
-					if {[string index $src 0] eq {+}} {
-						set src [string range $src 1 end]
-					}
-					if {![string equal -length 5 refs/ $src]} {
-						set src $rh_str$src
-					}
-					if {![string equal -length 5 refs/ $dst]} {
-						set dst $rh_str$dst
-					}
-					if {[string equal -length $rh_len $rh_str $dst]} {
-						set some_heads_tracking 1
-					}
-					lappend trck [list $dst $name $src]
-				}
-				close $fd
-			}
-		}
-	}
-
-	foreach line [array names repo_config remote.*.url] {
-		if {![regexp ^remote\.(.*)\.url\$ $line line name]} continue
-		lappend all_remotes $name
-		set remote_url($name) $repo_config(remote.$name.url)
-
-		if {[catch {set fl $repo_config(remote.$name.fetch)}]} {
-			set fl {}
-		}
-		foreach line $fl {
-			if {![regexp {^([^:]+):(.+)$} $line line src dst]} continue
-			if {[string index $src 0] eq {+}} {
-				set src [string range $src 1 end]
-			}
-			if {![string equal -length 5 refs/ $src]} {
-				set src $rh_str$src
-			}
-			if {![string equal -length 5 refs/ $dst]} {
-				set dst $rh_str$dst
-			}
-			if {[string equal -length $rh_len $rh_str $dst]} {
-				set some_heads_tracking 1
-			}
-			lappend trck [list $dst $name $src]
-		}
-	}
-
-	set tracking_branches [lsort -index 0 -unique $trck]
-	set all_remotes [lsort -unique $all_remotes]
-}
-
-proc add_fetch_entry {r} {
-	global repo_config
-	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)}]} {
-			set enable 1
-		}
-	} else {
-		catch {
-			set fd [open [gitdir remotes $r] r]
-			while {[gets $fd n] >= 0} {
-				if {[regexp {^Pull:[ \t]*([^:]+):} $n]} {
-					set enable 1
-					break
-				}
-			}
-			close $fd
-		}
-	}
-
-	if {$enable} {
-		make_sure_remote_submenues_exist $remote_m
-
-		$fetch_m add command \
-			-label $r \
-			-command [list fetch_from $r]
-		$prune_m add command \
-			-label $r \
-			-command [list prune_from $r]
-		$remove_m add command \
-			-label $r \
-			-command [list remove_remote $r]
-	}
-}
-
-proc add_push_entry {r} {
-	global repo_config
-	set remote_m .mbar.remote
-	set push_m $remote_m.push
-	set enable 0
-	if {![catch {set a $repo_config(remote.$r.url)}]} {
-		if {![catch {set a $repo_config(remote.$r.push)}]} {
-			set enable 1
-		}
-	} else {
-		catch {
-			set fd [open [gitdir remotes $r] r]
-			while {[gets $fd n] >= 0} {
-				if {[regexp {^Push:[ \t]*([^:]+):} $n]} {
-					set enable 1
-					break
-				}
-			}
-			close $fd
-		}
-	}
-
-	if {$enable} {
-		if {![winfo exists $push_m]} {
-			menu $push_m
-			$remote_m insert 0 cascade \
-				-label [mc "Push to"] \
-				-menu $push_m
-		}
-
-		$push_m add command \
-			-label $r \
-			-command [list push_to $r]
-	}
-}
-
-proc make_sure_remote_submenues_exist {remote_m} {
-	set fetch_m $remote_m.fetch
-	set prune_m $remote_m.prune
-	set remove_m $remote_m.remove
-
-	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"] \
-			-menu $prune_m
-
-		menu $fetch_m
-		$remote_m insert 0 cascade \
-			-label [mc "Fetch from"] \
-			-menu $fetch_m
-	}
-}
-
-proc update_all_remotes_menu_entry {} {
-	global all_remotes
-
-	if {[git-version < 1.6.6]} { return }
-
-	set have_remote 0
-	foreach r $all_remotes {
-		incr have_remote
-	}
-
-	set remote_m .mbar.remote
-	set fetch_m $remote_m.fetch
-	set prune_m $remote_m.prune
-	if {$have_remote > 1} {
-		make_sure_remote_submenues_exist $remote_m
-		if {[$fetch_m type end] eq "command" \
-				&& [$fetch_m entrycget end -label] ne [mc "All"]} {
-
-			$fetch_m insert end separator
-			$fetch_m insert end command \
-				-label [mc "All"] \
-				-command fetch_from_all
-
-			$prune_m insert end separator
-			$prune_m insert end command \
-				-label [mc "All"] \
-				-command prune_from_all
-		}
-	} else {
-		if {[winfo exists $fetch_m]} {
-			if {[$fetch_m type end] eq "command" \
-					&& [$fetch_m entrycget end -label] eq [mc "All"]} {
-
-				delete_from_menu $fetch_m end
-				delete_from_menu $fetch_m end
-
-				delete_from_menu $prune_m end
-				delete_from_menu $prune_m end
-			}
-		}
-	}
-}
-
-proc populate_remotes_menu {} {
-	global all_remotes
-
-	foreach r $all_remotes {
-		add_fetch_entry $r
-		add_push_entry $r
-	}
-
-	update_all_remotes_menu_entry
-}
-
-proc add_single_remote {name location} {
-	global all_remotes repo_config
-	lappend all_remotes $name
-
-	git remote add $name $location
-
-	# XXX: Better re-read the config so that we will never get out
-	# of sync with git remote implementation?
-	set repo_config(remote.$name.url) $location
-	set repo_config(remote.$name.fetch) "+refs/heads/*:refs/remotes/$name/*"
-
-	add_fetch_entry $name
-	add_push_entry $name
-
-	update_all_remotes_menu_entry
-}
-
-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]
-	set all_remotes [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
-	# Not all remotes are in the push menu
-	catch { delete_from_menu $remote_m.push $name }
-
-	update_all_remotes_menu_entry
-}