From: Michael Rappazzo <rappazzo@gmail.com>
To: paulus@samba.org
Cc: git@vger.kernel.org, Michael Rappazzo <rappazzo@gmail.com>
Subject: [PATCH 1/2] gitk: alter the ordering for the "Tags and heads" view
Date: Wed, 9 Mar 2016 13:18:09 -0500 [thread overview]
Message-ID: <1457547490-12249-2-git-send-email-rappazzo@gmail.com> (raw)
In-Reply-To: <1457547490-12249-1-git-send-email-rappazzo@gmail.com>
In the "Tags and heads" view, the list of refs is globally sorted.
Because of this, the list of local refs (heads) can be interrupted by the
list of remote refs. This change re-orders the view to be: local refs,
remote refs tracked by local refs, remote refs, tags, and then other refs.
Signed-off-by: Michael Rappazzo <rappazzo@gmail.com>
---
gitk | 48 ++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 42 insertions(+), 6 deletions(-)
diff --git a/gitk b/gitk
index 5f1255c..32fbc50 100755
--- a/gitk
+++ b/gitk
@@ -9933,35 +9933,71 @@ proc refill_reflist {} {
global curview
if {![info exists showrefstop] || ![winfo exists $showrefstop]} return
- set refs {}
+ set localrefs {}
+ set remoterefs {}
+ set locally_tracked_remote_refs {}
+ set tagrefs {}
+ set otherrefs {}
foreach n [array names headids] {
- if {[string match $reflistfilter $n]} {
+ if {![string match "remotes/*" $n] && [string match $reflistfilter $n]} {
if {[commitinview $headids($n) $curview]} {
- lappend refs [list $n H]
+ lappend localrefs [list $n H]
+ catch {set remote_name [exec git config --get branch.$n.remote]}
+ if {$remote_name ne ""} {
+ catch {set remote_ref [exec git config --get branch.$n.merge]}
+ set remote_ref [string map {"refs/heads/" ""} $remote_ref]
+ set locally_tracked_remote_ref "remotes/$remote_name/$remote_ref"
+ catch {set exists [exec git rev-parse --verify $locally_tracked_remote_ref]}
+ if {$exists ne ""} {
+ if {[lsearch $locally_tracked_remote_refs [list $locally_tracked_remote_ref H]] < 0} {
+ lappend locally_tracked_remote_refs [list $locally_tracked_remote_ref H]
+ }
+ }
+ set exists ""
+ }
} else {
interestedin $headids($n) {run refill_reflist}
}
}
}
+ set locally_tracked_remote_refs [lsort -index 0 $locally_tracked_remote_refs]
+ set localrefs [lsort -index 0 $localrefs]
+
+ foreach n [array names headids] {
+ if {[string match "remotes/*" $n] && [string match $reflistfilter $n]} {
+ if {[commitinview $headids($n) $curview]} {
+ if {[lsearch $locally_tracked_remote_refs [list $n H]] < 0} {
+ lappend remoterefs [list $n H]
+ }
+ } else {
+ interestedin $headids($n) {run refill_reflist}
+ }
+ }
+ }
+ set remoterefs [lsort -index 0 $remoterefs]
+
foreach n [array names tagids] {
if {[string match $reflistfilter $n]} {
if {[commitinview $tagids($n) $curview]} {
- lappend refs [list $n T]
+ lappend tagrefs [list $n T]
} else {
interestedin $tagids($n) {run refill_reflist}
}
}
}
+ set tagrefs [lsort -index 0 $tagrefs]
+
foreach n [array names otherrefids] {
if {[string match $reflistfilter $n]} {
if {[commitinview $otherrefids($n) $curview]} {
- lappend refs [list $n o]
+ lappend otherrefs [list "$n" o]
} else {
interestedin $otherrefids($n) {run refill_reflist}
}
}
}
- set refs [lsort -index 0 $refs]
+ set otherrefs [lsort -index 0 $otherrefs]
+ lappend refs {*}$localrefs {*}$locally_tracked_remote_refs {*}$remoterefs {*}$tagrefs {*}$otherrefs
if {$refs eq $reflist} return
# Update the contents of $showrefstop.list according to the
--
2.7.2
next prev parent reply other threads:[~2016-03-09 18:18 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-09 18:18 [PATCH 0/2] gitk: alter the ordering for the "Tags and heads" view Michael Rappazzo
2016-03-09 18:18 ` Michael Rappazzo [this message]
2016-03-09 18:18 ` [PATCH 2/2] gitk: add an option to enable sorting the "Tags and heads" view by ref type Michael Rappazzo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1457547490-12249-2-git-send-email-rappazzo@gmail.com \
--to=rappazzo@gmail.com \
--cc=git@vger.kernel.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).