summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2171bf4)
raw | patch | inline | side by side (parent: 2171bf4)
author | Shawn O. Pearce <spearce@spearce.org> | |
Sat, 25 Nov 2006 08:33:03 +0000 (03:33 -0500) | ||
committer | Shawn O. Pearce <spearce@spearce.org> | |
Sat, 25 Nov 2006 08:33:03 +0000 (03:33 -0500) |
Since the user should not work on a tracking branch we automatically
hide any branch which is used as a tracking branch by either a
remote.<name>.fetch config entry or by a Pull: line in a remotes file.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
hide any branch which is used as a tracking branch by either a
remote.<name>.fetch config entry or by a Pull: line in a remotes file.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui | patch | blob | history |
index 9bfed1f6a98184cc8e4df1b06f1201bfc1eca8b2..7406238c9029b2cd4639361c34c50d2e910c64d0 100755 (executable)
--- a/git-gui
+++ b/git-gui
## branch management
proc load_all_branches {} {
- global all_branches
+ global all_branches tracking_branches
set all_branches [list]
set cmd [list git for-each-ref]
lappend cmd refs/heads
set fd [open "| $cmd" r]
while {[gets $fd line] > 0} {
- if {[regsub ^refs/heads/ $line {} line]} {
- lappend all_branches $line
- }
+ if {![catch {set info $tracking_branches($line)}]} continue
+ if {![regsub ^refs/heads/ $line {} name]} continue
+ lappend all_branches $name
}
close $fd
## remote management
proc load_all_remotes {} {
- global gitdir all_remotes repo_config
+ global gitdir repo_config
+ global all_remotes tracking_branches
set all_remotes [list]
+ array unset tracking_branches
+
set rm_dir [file join $gitdir remotes]
if {[file isdirectory $rm_dir]} {
- set all_remotes [concat $all_remotes [glob \
+ set all_remotes [glob \
-types f \
-tails \
-nocomplain \
- -directory $rm_dir *]]
+ -directory $rm_dir *]
+
+ foreach name $all_remotes {
+ catch {
+ set fd [open [file join $rm_dir $name] r]
+ while {[gets $fd line] >= 0} {
+ if {![regexp {^Pull:[ ]*([^:]+):(.+)$} \
+ $line line src dst]} continue
+ if {![regexp ^refs/ $dst]} {
+ set dst "refs/heads/$dst"
+ }
+ set tracking_branches($dst) [list $name $src]
+ }
+ close $fd
+ }
+ }
}
foreach line [array names repo_config remote.*.url] {
- if {[regexp ^remote\.(.*)\.url\$ $line line name]} {
- lappend all_remotes $name
+ if {![regexp ^remote\.(.*)\.url\$ $line line name]} continue
+ lappend all_remotes $name
+
+ if {[catch {set fl $repo_config(remote.$name.fetch)}]} {
+ set fl {}
+ }
+ foreach line $fl {
+ if {![regexp {^([^:]+):(.+)$} $line line src dst]} continue
+ if {![regexp ^refs/ $dst]} {
+ set dst "refs/heads/$dst"
+ }
+ set tracking_branches($dst) [list $name $src]
}
}