hgweb: use patch.diffhunks in webutil.diffs to simplify the algorithm
Function patch.diffhunks yields items for a "block" (i.e. a file) as a whole
so take advantage of this to simplify the algorithm and avoid parsing diff
lines to determine whether we're starting a new "block" or not. Thus we drop
to external block counter and rely on diffhunks iterations instead.
We also take advantage of the fact that patch.diffhunks() yields *lines* of
hunks (instead of a string) to avoid building a list that is ''.join-ed into a
string that is then split.
As lines in 'header' returned by patch.diffhunks() have no trailing new line,
we need to insert it ourselves to match template expectations.
$ hg init
$ echo a > a
$ hg ci -Am t
adding a
$ hg mv a b
$ hg ci -Am t1
$ hg debugrename b
b renamed from a:b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
$ hg mv b a
$ hg ci -Am t2
$ hg debugrename a
a renamed from b:37d9b5d994eab34eda9c16b195ace52c7b129980
$ hg debugrename --rev 1 b
b renamed from a:b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3