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">#desc|strip|firstline|escape#</th>
</tr>
<tr>
<th class="revision">changeset #rev#:</th>
<td class="node"><a href="#url#rev/#node|short#{sessionvars%urlparameter}">#node|short#</a></td>
</tr>
#parent%changelogparent#
#child%changelogchild#
#changelogtag#
<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>
<tr>
<th class="files"><a href="#url#file/#node|short#{sessionvars%urlparameter}">files</a>:</th>
<td class="files">#files#</td>
</tr>
</table>