Add symlink method to util.opener.
Differences from os.symlink:
- the symlink name is relative to the opener base directory
- if a file with that name already exists, it's removed
- if necessary, parent directories are created
- if the system (OS or filesystem) doesn't support symlinks, a
regular file is created. Its contents are the symlink target.
<table class="logEntry parity#parity#">
<tr>
<th class="age">#date|age# ago:</th>
<th class="firstline"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#desc|strip|firstline|escape#</a></th>
</tr>
<tr>
<th class="revision">revision #filerev#:</td>
<td class="node">
<a href="#url#file/#node|short#/#file|urlescape#{sessionvars%urlparameter}">#node|short#</a>
<a href="#url#diff/#node|short#/#file|urlescape#{sessionvars%urlparameter}">(diff)</a>
<a href="#url#annotate/#node|short#/#file|urlescape#{sessionvars%urlparameter}">(annotate)</a>
</td>
</tr>
#rename%filelogrename#
<tr>
<th class="author">author:</th>
<td class="author">#author|obfuscate#</td>
</tr>
<tr>
<th class="date">date:</th>
<td class="date">#date|date#</td>
</tr>
</table>