Mercurial history browsing
Contents
Project Name
Adding Functionality to the Browser Based UI for Mercurial History Browsing, hgweb
Project Description
Mozilla is just starting to use an exciting new distributed version control tool: Mercurial.
One of the exciting things about Mercurial is that the history—the list of all the changes that have ever been checked in—is not linear. It frequently has branches and merges. This is actually a good, important feature, as you know if you've read a little about distributed version control. The downside is that the history becomes a maze of twisty little passages. Benjamin Smedberg's demo shows the history of a repository with lots of merges (each box is a check-in; you can click on the boxes to move around).
There have been a couple attempts at showing history in an intuitive, graphical way. Mercurial comes with a web UI for browsing the repository, including history (here's what it looks like). It also comes with an "hg glog" extension that draws history as ASCII art, and an "hg view" extension that does roughly the same thing with a little GUI. Sadly, none of these applications qualifies as awesome.
The project's goal is to rectify this sad situation by writing an awesome browser-based UI for navigating Mercurial repository history.
Resources: jorendorff, bsmedberg
Project Leader(s)
Project Contributor(s)
- Tiago Moreira
Project Mentors
- Jason Ordendorff (jorendorff)
- Dirkjan Ochtman (djc)
- Ted Mielczarek (ted)
- Benjamin Smedberg (bsmedberg)
Project Details
September 23rd, 2008
Hgweb ideas |
---|
|
v0.1 Release Details
-
to get pushloghtml working on my machine (some progress made on this part) -
to locate the source files that dictate the amount of pushlog entries that get displayed and then alter it to display more entries-
Turns out that there was some miscommunication and I need to add an AJAX scrolling feature that dynamically loads more changesets
-
-
to add code that allows expand/collapse functionality (apparently all I need is a js lib according to humph)-
Turns out that there was another miscommunication as Ted has already added this feature. Look here. However the patch has some problems that will need to be fixed. I might fix this for my 0.2 release (undecided for now)
-
To release v0.1 on time
v0.2 Release Details (More Information) (Final result)
-
To continue work on bug 459727-
Implement a loader GIF(View here) -
Getting the correct Chronological order when adding more entries OnScroll (View here)(Final result) -
Getting merge changesets to show up correctly when adding more entries OnScroll (View here)(final result)-
Making sure the new entries that load OnScroll comply with bug 445560 (Expand/Collapse feature) ==> REMOVED from v0.2 - this functionality should wait until the expand/collapse functionality itself is approved and goes live. This should be a separate bug
-
-
To make buglinks work -
To make changeset links work -
To get the correct date formating -
On first page load show 20 entries instead of 10(View here) -
To get the correct author names (right now, sometimes it returns the email address while other times the name of the author)(View solution here)
-
-
To fix ted's patch for bug 445560(View here) -
To implement "the which files were touched by a changeset" feature for bug 448707(View here)
v0.3 Release Details (View here)
-
Problem with my patch for bug 445560(View here)-
Fixed problems with my patch by adding 2 new patches(View here)-
Fix 1: Should use ids instead of dates -
Fix 2: Should store unique identifiers in the class instead of the id of the tag
-
-
-
My patch for bug 448707 approved!(View here) - Implementing the Graph view for the pushlog
-
Downloading Dirkjan's (djc) Graph view's source code(View here) -
Getting djc's Graph view running on my computer (localhost) with hg serve(View here) -
Understanding how djc's Graph view works(View here) (View here 2) - Coding the Graph view for the pushlog
-
1st interation - Make it look similar to the coal template's graph view(View here)
-
-
- Problem with my patch for bug 459727 (View here)
-
To calculate the max use SELECT COUNT(*) FROM ... instead of asking for all the rows and then counting them -
getMaxEntries called, then 'start' used once the user scrolls. But the user might scroll before the first result comes back, while start is still zero -- a race condition. -
The JS code isn't consistently indented -
Patch seems to contain some non-ASCII characters. Bugzilla doesn't render it properly. Consider using an HTML entity reference, like – or —, instead of an actual Unicode character. -
In a few places the b tag is used where the server uses the strong tag; be consistent -
Loads more results when the user scrolls. What if the initial results don't fill up the window? -
Better to move CSS and formatting to stylesheets where possible
-
Project News
September 18th, 2008
- Picked the Mercurial History Browsing project
September 23rd, 2008
- Chatted with jorendorff about starting on the project
- Jorendorff made a blog post calling for ideas about the project
September 25th, 2008
- Chatted with jorendorff on setting my development environment
- Email conversation with jorendorff, asked some preliminary questions about the project and a hello world type of activity
September 26th, 2008
- Email conversation with jorendorff about setting up the development environment
September 28th, 2008
- Played around with hg. Details here
- Email conversation with jorendorff, asked for help on setting up the development environment and suggestions on a v0.1 release
- Email conversation with djc about hg_templates
September 29th, 2008
- Email conversation with jorendorff about v0.1 release ideas
October 1st, 2008
- Chatted with ted about getting a hold of the pushlog database
- Email conversation with jorendorff about setting up pushloghtml on my development environment and some questions/concerns regarding pushloghtml
October 2nd, 2008
- Development Environment almost setup and running except for pushloghtml
- Decided on v0.1 release (tentative, still need to clear it with humph)
- Email conversation with jorendorff clarifying some concerns about pushloghtml
- Email conversation with ted explaining how to setup pushloghtml
October 3rd, 2008
- Decided on v0.1 release (confirmed with humph). Updated v0.1 release blog post
- Email conversation asking about simplejson and pysqlite2 modules
- Email conversation with bsmedberg explaining simplejson and pysqlite2 questions
October 5th, 2008
- Problems with getting pushloghtml to work here. Work in progress...
October 6th, 2008
- Multiple email conversations asking djc and bsmedberg about a "no module found" error relating to simplejson and pysqlite2
October 7th, 2008
- Email conversation with djc, discussing ideas about the causes of the "no module found" error
October 8th, 2008
- Email conversation with djc asking questions about building Mercurial from source
October 9th, 2008
- Email conversation with djc discussing issues with building Mercurial from source
- Development environment setup. Ready for coding to begin!
October 13th, 2008
- Filed the bug: pushloghtml should show more than 10 entries at a time
- ted has already filed a bug for the expand/collapse feature: html pushlog should fold merge changesets into one line
- Chatted with jorendorff and ted about setting up my development environment and the expand/collapse feature
October 14th, 2008
- Applied Ted's patch to my development environment to fix the bug: html pushlog should fold merge changesets into one line, check out my blog post for details
- Chatted with ted and djc on IRC about pushloghtml
October 16th, 2008
- Email conversation with ted discussing some questions about implementing an AJAX scrolling feature to load more pushlog changesets
October 17th, 2008
- Email conversation asking questions about the json-pushes script
October 18th, 2008
- Made a blog post regarding bug 459727 - Pushloghtml Should Show More Than 10 Entries, Working on v0.1 Release
October 19th, 2008
- Edited the blog post regarding bug 459727 - Pushloghtml Should Show More Than 10 Entries, Working on v0.1 Release
October 23rd, 2008
- Email conversation with djc regarding bug 459727
October 29th, 2008
- Had a conversation with djc regarding bug 459727
- Had a conversation with ted regarding bug 445560
November 3rd, 2008
- Had a conversation with djc regarding the date formatting for bug 459727
November 4th, 2008
- Had a conversation relating to v0.2 release with jorendorff (decided what I will include in v0.2)
November 5th, 2008
- Made a blog post relating to bug 459727
November 6th, 2008
- Had a discussion with jorendorff about how to implement the which files were touched by a changeset feature
November 7th, 2008
- Made a blog post discussing the details for v0.2 release
- Made a blog post about a problem with implementing merge changesets for bug 459727
November 8th, 2008
- Made a blog post adding a loader GIF for bug 459727
- Made a blog post about fixing bug 445560
November 10th, 2008
- Had a discussion with ted about the which files were touched by a changeset feature
- Had a discussion with jorendorff about the which files were touched by a changeset feature
November 11th, 2008
- Made a blog post about fixing bug 448707
- Had a chat with jorendorff and ted regarding whether bug 459727 should comply with bug 445560 from the get go
- Made a blog post about showing the correct author for new entries OnScrollDown for bug 459727
- Made a blog post regarding bug 459727: On initial PageLoad the pushlog should load 20 entries instead of 10
- Made a blog post concerning a problem with the chronological order for bug 459727
November 12th, 2008
- Had a discussion with ted and bsmedberg about the issue explained by the blog post here
- Edited the blog post about not getting the right author name. The edit provides a solution to the problem
- Edited the blog post detailing my problem with ctx.parents()[i].description()
November 13th, 2008
- Had a long discussion with jorendorff about fixing the issue described by the blog post here
- Edited the blog post detailing the problem and fix with ctx.parents()[i].description()
November 15th, 2008
- Made a blog post to add merge changeset functionality to bug 459727
November 16th, 2008
- Posted patch for bug 459727
- Posted patch for bug 445560
- Posted patch for bug 448707
November 19th, 2008
- Had a discussion with jorendorff about v0.3 release
November 24th, 2008
- Made a blog post about looking forward to my v0.3 release
- Had a discussion with ted about fixing my patch for bug 445560
- Made a blog post regarding this discussion
- Posted new hgpoller patch for bug 445560
- Posted new hg_templates patch for bug 445560
- Made a blog post about the two new patches for bug 445560
December 1st, 2008
- Had a discussion with jorendorff on the Graph view
- Made celebratory blog post about my patch for bug 448707 being accepted
- Made a blog post about understanding how graph data is passed from the server side to the client side
December 2nd, 2008
- Made a blog post about completing the 1st iteration for the graph (View here)
- Made a blog post about problems identified by jorendorff concerning my patch for bug 459727
December 3rd, 2008
- Added a new patch for hgpoller for bug 459727
- Added a new patch for hg_templates for bug 459727
- Blogged about the above patches here
External Links
- Distributed Version Control
- Mercurial
- Mercurial Basics
- mercurial-central shortlog page
- graph view
- better shortlog
- mozilla-central pushlog
- Desired features for hgweb
- jQuery tutorials
- Using XMLHttpRequest
- bonsai