Re: [RFC] More diff possibilities in gitweb

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Mar 17, 2007 at 10:51:51PM +0100, Jakub Narebski wrote:
> Martin Koegler wrote:
> 
> > The whole is implemented in JavaScript on the client side (tested with
> > IE 6 and Mozilla). On the server side, only the JavaScript file is
> > included in the output (see below). 
> 
> I'd rather not use JavaScript for that, but perhaps add in the history
> view (shortlog, history) selectbox to select commits (for shortlog, and
> history of a directory) or versions of a blob/file (history of a file)
> like in an "info" view e.g. in MoinMoin wiki:
>   http://git.or.cz/gitwiki/GitSurvey?action=info
> JavaScript can be used to beautify this like e.g. MediaWiki engine
> does:
>   http://en.wikipedia.org/w/index.php?title=Darcs&action=history 
> (to allow selection of diff only in forward direction).

Let's focus on the UI first:

Using a select box, as shown above, exposes only a small part of all
possible combinations, eg. how to compare commits on different
branches.

In my solution, I add to each link to a compareable object (commit,
tree, blob) two new link, eg: link "commit" becomes "commit (base |
diff)". "base" stores the ID of the object in a cookie. "diff"
retrieves the cookie and compares it with it's associated object.

Currently, only few combinations are implemented. Future version could
integrate tags (as an tag links to one commit). Additionally,
comparing tags/commits with a tree could be enabled, as a tag/commit
link to one tree.

Storing the base object in a cookie enables the user to use multiple
windows/tabs showing, eg. different branches. He can select in on
window the base object, switch to an other window, where he selects
the diff option. He can also go back in the browser history, without
losing his selection.

Any sugesstions, how the UI can be improved or designed better?

To the implementation:

The whole thing can be implemented without any JavaScript on the
server side. For an out of tree implementation, my prototype is
simpler to maintain, as it needs only a few small changes to gitweb.

If there is an interesst in this feature (and nobody opposes including
it), I can reimplement it in perl.

I would do it in the following way:
1) introduce git_treediff
2) Add the generation of a base and diff link to each object
3) If a base link is selected, the server sends a Set-Cookie header
and redirects to the page, where it came from. So maybe the broser can
fetch the page out of its cash in some situation.
4) If a diff link is selected, based on the base object in the cookie,
the url to do the diff and redirects the browser to it. This should
simplify caching.

If depending on cookies is a problem for some out there, the base
object can be passed in the URLs as fallback. It would require, that
the select base object is included in every link, which gitweb
generates.

mfg Martin Kögler
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]