Redmine Mercurial Overhaul

It does never change database schema, so we don't need to migrate db. And it reduces the number of hg calls, which means it must be as fast as the 0.9-stable.

It implements or fixes:

  • Tag/branch support, #1981
  • File size issue, #3421
  • Node ID instead of revision number, #3724
  • Diff of changeset can be wrong if the previous changeset isn't the parent.
  • Changesets should be ordered by revision number instead of committed date. This happens to fix #3449, which is caused by wrong latest_changeset. In DVCS, the latest committed date does not mean the latest changeset.
  • Hgrc support, #6515, created by Alessio.


  • Some test cases may not work.
  • Some codes are badly implemented. I need to clean up them.
  • Maybe it lacks compatibility with older Mercurial clients. It uses helper extension to fetch file entries, sizes, tags, branches, etc. at once, but it's yet tested, say, with Mercurial 0.9.5. BTW, this extension is based on Alessio's, thanks!, but I mangled it too heavily. :)
  • We can reduce bunch of database queries.

How to apply these patches:

Get Redmine from SVN (requires hgsubversion):
% hg clone svn+ redmine
% cd redmine
Switch to stable branch:
% hg update 1.0-stable
Get and apply patches:
% hg clone .hg/patches
% hg qpush -a

If you don't have hgsubversion, try the following repo maintained by Toshi:

% hg clone

See also