Fixes for push corner case
TAH found a bug where push would push things the remote already had,
raising an assertion. This turned out to be because the changeset
protocol was not recording a common subset node in one case.
Also discovered was that the protocol was queueing multiple copies of
a node for pull. Fixed by changing fetch to a hash.
Add some more debugging output.
<table class="parity#parity#" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td align="right" width="15%"><b>#date|age# ago: </b></td>
<td><b><a href="?cmd=changeset;node=#node#">#desc|firstline|escape#</a></b></td></tr>
<tr>
<td align="right">revision #filerev#: </td>
<td><a href="?cmd=file;file=#file#;filenode=#filenode#">#filenode|short#</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|obfuscate#</td></tr>
<tr>
<td align="right">date: </td>
<td>#date|date# (#date|age# ago)</td></tr>
</table>