Mercurial (hg) SCMTool

Review Request #97 — Created June 22, 2007 and submitted — Latest diff uploaded

Information

Review Board SVN (deprecated)
trunk
137

Reviewers

Update 2007-08-09:

Moved fixture data into its own JSON file. Catch up with upstream changes. General clean up.

The tests now use a hg repo in testdata/hg_repo, which I couldn't attach to the patch. I have emailed a tarball to David.

Update 2007-08-06:

Uploaded a new diff to use the new DiffParser per Christian's comment.

Update 2007-07-17:

Uploaded a new diff that addresses the issues noted by Christian.

Also, a small fix to the parsing of diffs that create files, and a small change to make us compatible with Mercurial 0.9.4 (repo.LookupError moved, so I use a more general and hopefully stable exception).

=====

Update:

Uploaded a new diff that fixes the style/whitespace issues noted.

Now applies against rev 773 (in particular, the rename of SCMException to SCMError).

I've also cleaned up the handling of diffs that create files, and overridden a more sensible method in DiffParser.

=====

Update:

Uploaded a new diff that now applies against the DiffParser patch (http://reviews.review-board.org/r/99/) directly, rather than against the GitTool patch.

=====

A very tentative attempt at Mercurial support for reviewboard.

This patch is based on Nick Loeve's git scmtool (http://reviews.review-board.org/r/80/). NOTE that it depends on the changes to DiffParser in that patch (so that HgTool can provide a parser for hg-style diffs).

If anyone is interested, I have a mirror of the reviewboard source in mercurial (http://hg.mojain.com/mirrors/reviewboard) and a Mercurial Queues repo containing this patch and the git one it depends on (http://hg.mojain.com/patches/reviewboard).
Update 2007-08-09: tests working again--all tests passing. 

Update 2007-08-06: the tests are currently broken, due to an upstream change to django. I'm working on getting them fixed.

=====

I have it talking to a Mercurial repository and correctly reading diffs.

There are basic unit tests for the diff parsing and other supporting methods.

I had to remove the test that actually retrieved a file from a repo, since I haven't found a good way of getting a repo into a patch (the .hg dir contains binary files). I suspect that the answer will be to create the repo dynamically as part of the fixture setup. (I have a rough version of this working, but it's not in this patch due to being *very* rough).