From: Jakub Narebski <jnareb@gmail.com>
To: git@vger.kernel.org
Subject: [RFC] gitweb: Incremental blame - suggestions for improvements
Date: Sun, 14 Dec 2008 08:11:54 -0800 (PST) [thread overview]
Message-ID: <m34p16eny3.fsf_-_@localhost.localdomain> (raw)
In-Reply-To: <1229213850-12787-1-git-send-email-jnareb@gmail.com>
A few suggestions for further improvement of blame_incremental:
* Better support for data mining in 'blame_incremental' view,
(for "lineno" links to (approximately) lead to previous version of
line) would probably require for gitweb to accept "<rev>^" for 'hb'
parameter (and perhaps resolve/parse it before saving to
$hash_base). This would also help performance of 'blame' view.
* Move some of processing to server, to 'blame_data' action, and for
example send whole saved and processed info for a group of lines as
JSON or as variation of "git blame --incremental" output.
* Better error checking: not only check if scripting is turned on,
but also if required methods like document.getElementById are
available. Probably would require falback to *ugh* document.write.
* Perhaps fallback on (slower) DOM methods if innerHTML is not
available or doesn't work, which is the case for some versions of
some browsers in strict XHTML (application/xml+html + XHTML DTD)
mode.
* Fallback on DOM Core methods of deleting cell if DOM HTML
deleteCell method is not available; check that DOM Core way does
not lead to memory leaks (by deleting element, but not its
children).
* Use 'one second spotlight' or other similar user interface patter
to signal in more visible way than reaching 100% in progress info,
and changing colors from 3-coloring to 2-color zebra in blame table
that all blame data was received and entered.
* Check in handleResponse if browser calls it on [each] server flush,
by checking if it is called more than once with http.readyState == 3
and with different http.responseText, and disable poll timer then.
* Mark boundary commits (this applies both to 'blame' and
'blame_incremental' views), using UNDOCUMENTED "boundary" header.
* A toy. Make progress bar indicator more smooth by interpolating
changes between updates, so it moves smoothly. This would make it
provide impression for user, not an accurate measure of blamed
percentage.
* A toy. Make sure that 3-coloring during updating blame table use
all three colors with similar frequency, for example by using the
following implementation of chooseColorNoFrom function:
// return one of given possible colors
// example: chooseColorNoFrom(2, 3) might be 2 or 3
var colorsFreq = [0, 0, 0];
// assumes that 1 <= arguments[i] <= colorsFreq.length
function chooseColorNoFrom() {
// choose the color which is least used
var colorNo = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (colorsFreq[arguments[i]-1] < colorsFreq[colorNo-1]) {
colorNo = arguments[i];
}
}
colorsFreq[colorNo-1]++;
return colorNo;
}
Do you have your own suggestions? Comments?
Would incremental blame help git-instaweb use?
--
Jakub Narebski
Poland
ShadeHawk on #git
prev parent reply other threads:[~2008-12-14 16:13 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-09 22:43 [PATCH 0/3] gitweb: Improve git_blame in preparation for incremental blame Jakub Narebski
2008-12-09 22:46 ` [PATCH 1/3] gitweb: Move 'lineno' id from link to row element in git_blame Jakub Narebski
2008-12-10 5:55 ` Luben Tuikov
2008-12-17 8:13 ` Petr Baudis
2008-12-09 22:48 ` [PATCH 2/3] gitweb: Cache $parent_commit info in git_blame() Jakub Narebski
2008-12-10 3:49 ` Nanako Shiraishi
2008-12-10 13:39 ` Jakub Narebski
2008-12-10 20:27 ` Junio C Hamano
2008-12-11 0:33 ` [PATCH 2/3 (edit v2)] " Jakub Narebski
2008-12-11 4:08 ` Luben Tuikov
2008-12-11 4:18 ` Junio C Hamano
2008-12-12 3:05 ` Junio C Hamano
2008-12-12 17:20 ` Jakub Narebski
2008-12-17 8:19 ` Petr Baudis
2008-12-17 8:34 ` Junio C Hamano
2008-12-10 6:20 ` [PATCH 2/3] " Luben Tuikov
2008-12-10 15:15 ` Jakub Narebski
2008-12-10 20:05 ` Luben Tuikov
2008-12-10 21:03 ` Jakub Narebski
2008-12-10 21:15 ` Luben Tuikov
2008-12-09 22:48 ` [PATCH 3/3] gitweb: A bit of code cleanup " Jakub Narebski
2008-12-10 2:13 ` Jakub Narebski
2008-12-10 8:35 ` Junio C Hamano
2008-12-10 6:24 ` Luben Tuikov
2008-12-10 20:11 ` [RFC/PATCH 4/3] gitweb: Incremental blame (proof of concept) Jakub Narebski
2008-12-11 0:47 ` Junio C Hamano
2008-12-11 1:22 ` Jakub Narebski
2008-12-11 17:28 ` Jakub Narebski
2008-12-11 22:34 ` Jakub Narebski
2008-12-14 0:17 ` [RFC/PATCH v2] " Jakub Narebski
2008-12-14 16:11 ` Jakub Narebski [this message]
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=m34p16eny3.fsf_-_@localhost.localdomain \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.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).