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
- Chat with jorendorff
- We have to make sure you understand hg
- we have to decide on some very small thing that you can get running very soon
- we should talk it over and make sure it's clear how to do it
- we should plan to meet up later and brainstorm some, once you've had a chance to play around with hg
- Ideas from the blog post by jorendorff
- jorendorff's ideas
- History scroll forever, up and down. Something like a tumblelog
- Able to identify whether what one is looking at is in the mainline or a branch
- Major lines of development color coded i.e. blue for mozilla-central, orange for tracemonkey etc...
- This is possible using information from those repos’ pushlogs
- Pushlog info could be used to make those special paths relatively straight, with other smaller branches and mini-merges happening to the side or hidden by default with some sort of collapse/expand widget
- Show more info about each changeset, but only in an unobtrusive way
- Be able to know which dirs were touched and roughly the size of the diffs
- Be able to filter the history by file or dir
- A vertical timeline
- Location of a changeset on screen would tell something about when it was developed or pushed
- Be able to zoom in and out and see weeks, months, years of work
- Showing dates of when changes were "pushed" to mozilla-central, not the dates they were "committed"
- This makes the history linear and to some degree shows if a merge is big or small
- Jesse Ruderman Ideas
- Consider starting with the pushloghtml page, which the Moz community seems to use, rather than the shortlog page
- Gc Ideas
- Search history restricted to a particular data range and dirs
- because when a bug is found to start on a particular build from a month ago, need to find what was changed since the previous build, in relevant dirs
- Search history restricted to a particular data range and dirs
- RyanVM Ideas
- Be able to view more than 10 entries at a time in the changelog
- Jonas Sicking Ideas
- Uses HG web to digg thorugh logs for a given file
- Wondering "why was this code changed" or "what is this code trying to do"
- Today it is painful to dig this info up
- HG Blame allows you to see
- who last changed a given line, but many times that is just cleanup patches that don't change the functionality
- ability to see who made changes that actually changed the functionality
- Bonsai had better functionality
- Showed checkin comment for every given line and jump to that revision
- You could then manually step on revision back since the version numbers were numeric
- HG log should be able contain links to the previous version for every line
- Uses HG web to digg thorugh logs for a given file
- Boris
- Bonsai had the feature of being able to see the list of files touched by a checkin
- Clint
- Anything to make hunting down regression ranges
- Able to query by the person that checked in the patch and by source code directory.
- jorendorff's 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
- to add code that allows expand/collapse functionality (apparently all I need is a js lib according to humph)
- to release v0.1 on time
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
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
Other
- Week 4 BugZilla Lab