annotate: deal with merges
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
annotate: deal with merges
This rewrite of the annotate code deals with merges:
- - find all ancestors
- - sort ancestors topologically
- - for each ancestor, pairwise annotate with parents
- - keep a cache of annotations for efficiency
manifest hash: b960d9b9c6a7f6ba351c97675b00a1dd3004dcf1
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCnJclywK+sNU5EO8RAphZAKCkUuHh4jEJz7YwD9uzCT76GaSR/wCfUVUQ
VbGna/9jrOAFlrB3mZ3e4qg=
=yDFy
-----END PGP SIGNATURE-----
<table class="parity#parity#" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td align="right" width="15%"><b>#age# ago: </b></td>
<td><b><a href="?cmd=changeset;node=#node#">#shortdesc#</a></b></td</tr>
<tr>
<td align="right">revision #filerev#: </td>
<td><a href="?cmd=file;file=#file#;filenode=#filenode#">#filenode#</a>
<a href="?cmd=filediff;file=#file#;node=#node#">(diff)</a>
<a href="?cmd=annotate;file=#file#;filenode=#filenode#">(annotate)</a>
</td></tr>
<tr>
<td align="right">author: </td>
<td>#author#</td></tr>
<tr>
<td align="right">date: </td>
<td>#date#</td></tr>
</table>