diff options
author | Vincent Ambo <mail@tazj.in> | 2021-09-21T10·03+0300 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2021-09-21T11·29+0300 |
commit | 43b1791ec601732ac31195df96781a848360a9ac (patch) | |
tree | daae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/git-gui/lib/remote.tcl | |
parent | 2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff) |
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping it in sync with cgit would be easier this way, but it has proven not to be a big issue. On the other hand, a vendored copy of git is an annoying maintenance burden. It is much easier to rebase the single (dottime) patch that we have. This removes the vendored copy of git and instead passes the git source code to cgit via `pkgs.srcOnly`, which includes the applied patch so that cgit can continue rendering dottime. Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/git-gui/lib/remote.tcl')
-rw-r--r-- | third_party/git/git-gui/lib/remote.tcl | 333 |
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 -} |