Git development
 help / color / mirror / Atom feed
From: Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
To: Paul Mackerras <paulus@samba.org>
Cc: GIT list <git@vger.kernel.org>
Subject: [PATCH] gitk: Add a visual tag for remote refs
Date: Tue, 18 Apr 2006 23:53:07 +0200	[thread overview]
Message-ID: <200604182353.07759.Josef.Weidendorfer@gmx.de> (raw)

This patch partly changes the background color for remote refs.
It makes it easy to quickly distinguish remote refs from local
developer branches.

I ignore remote HEADs, as these really should be drawn as
aliases to other heads. But there is no simple way to
detect that HEADs really are aliases for other refs via
"git-ls-remote".

Signed-off-by: Josef Weidendorfer <Josef.Weidendorfer@gmx.de>

---

To see the effect of this patch, you need remote refs in your
repository. Such refs are created when using "--use-separate-remote"
with git-clone.

IMHO showing HEAD refs as aliases to real refs would be nice to
have in gitk (What is the current branch?). Unfortunately,
"git-ls-remote", which is used in gitk, does not give the info
whether a ref is a symbolic link to another.
So for this time, I ignore remote HEADs, too. They are only confusing
as they would have been drawn now.

Josef


 gitk |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

f073dd11d6f2d473797b4c85cd4ac9758b6141b6
diff --git a/gitk b/gitk
index 87e7162..b642326 100755
--- a/gitk
+++ b/gitk
@@ -290,10 +290,16 @@ proc readrefs {} {
 	    match id path]} {
 	    continue
 	}
+	if {[regexp {^remotes/.*/HEAD$} $path match]} {
+	    continue
+	}
 	if {![regexp {^(tags|heads)/(.*)$} $path match type name]} {
 	    set type others
 	    set name $path
 	}
+	if {[regexp {^remotes/} $path match]} {
+	    set type heads
+	}
 	if {$type == "tags"} {
 	    set tagids($name) $id
 	    lappend idtags($id) $name
@@ -1718,6 +1724,14 @@ proc drawtags {id x xt y1} {
 	    set xl [expr {$xl - $delta/2}]
 	    $canv create polygon $x $yt $xr $yt $xr $yb $x $yb \
 		-width 1 -outline black -fill $col -tags tag.$id
+	    if {[regexp {^(remotes/.*/|remotes/)} $tag match remoteprefix]} {
+	        set rwid [font measure $mainfont $remoteprefix]
+		set xi [expr {$x + 1}]
+		set yti [expr {$yt + 1}]
+		set xri [expr {$x + $rwid}]
+		$canv create polygon $xi $yti $xri $yti $xri $yb $xi $yb \
+			-width 0 -fill "#ffddaa" -tags tag.$id
+	    }
 	}
 	set t [$canv create text $xl $y1 -anchor w -text $tag \
 		   -font $mainfont -tags tag.$id]
-- 
1.3.0.rc4.g8060-dirty

                 reply	other threads:[~2006-04-18 21:53 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=200604182353.07759.Josef.Weidendorfer@gmx.de \
    --to=josef.weidendorfer@gmx.de \
    --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