Re: [RFC/PATCH] Configurable hyperlinking in gitk
From: Chris Packham <hidden>
Date: 2016-06-15 22:52:03
On 18/09/11 01:45, Jeff Epler wrote:
quoted
quoted
There are probably better names for the configuration options, too.It'd be nice if the config variables weren't gitk specific. .re and .sub could be applied to gitweb and maybe other git viewers outside of gig.git might decide to use them. My bikeshedding suggestion would be to just drop the gitk prefix and have linkify.re and linkify.sub.This seems like a reasonable idea, though since the implementation languages of gitk and gitweb are different it means some REs might get different interpretations in the different programs.quoted
Sometimes when a commit fixes multiple bugs we put all the bug numbers in separated by commas. I don't know Tcl well enough to tell if your code supports that or not.Multiple matches per line are OK, but they must be non-overlapping. Looking at the actual practice in Debian changelogs, I see that they do this: evince/changelog.Debian.gz: (Closes: #388368, #396467, #405130) so my original example would only linkify "Closes: #388638". But a revised pattern of #(\d+) would linkify "#388368", "#396467" and "#405130". (but risk a few more "false positive" links). I should revise my example accordingly. As for the problems with your substitutions, "&" is special in a tcl regsub (it stands for the whole matched string, like \0), so you'd want to use a substitution like git config gitk.linkify.debian-bts.sub \ 'http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=\1\&foo=bar'
Hmm no joy with \&. Seems to upset the invocation of git web-browse
git config gitk.linkify.bugtracker.sub \
'https://internalhost/code\&stuff/bugs.php?id=\1'
gitk
/home/chrisp/libexec/git-core/git-web--browse: line 167:
stuff/bugs.php?id=bug123: No such file or directory
fatal: 'web--browse' appears to be a git command, but we were not
able to execute it. Maybe git-web--browse is broken?
Using the following works as expected with no error with your updated patch.
git config gitk.linkify.bugtracker.sub \
'https://internalhost/code%26stuff/bugs.php?id=\1'
The problem with "%" has to do with Tk's event substitution and it's a bug that this happens; I should manually double the % at the proper point.