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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.