##// END OF EJS Templates
localrepo: decorate dirstate() with filecache...
localrepo: decorate dirstate() with filecache We refresh the stat info when releasing repo.wlock(), right after writing it. Also, invalidate the dirstate by deleting its attribute. This will force a stat by the decorator that actually checks if anything changed, rather than reading it again every time. Note that prior to this, there was a single dirstate instance created for a localrepo. It was invalidated by calling dirstate.invalidated(), clearing its internal attributes. As a consequence, the following construct is no longer safe: ds = repo.dirstate # keep a reference to the repo's dirstate wlock = repo.wlock() try: ds.setparents(...) finally: wlock.release() # dirstate should be written here Since it's possible that the dirstate was modified between lines #1 and #2, therefore changes to the old dirstate won't get written when the lock releases, because a new instance was created by the decorator.

File last commit:

r14046:b24e5a70 default
r14930:372d9d8b default
Show More
fileannotate.tmpl
65 lines | 2.3 KiB | application/x-cheetah | CheetahLexer
{header}
<title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
<link rel="alternate" type="application/atom+xml"
href="{url}atom-log" title="Atom feed for {repo|escape}"/>
<link rel="alternate" type="application/rss+xml"
href="{url}rss-log" title="RSS feed for {repo|escape}"/>
</head>
<body>
<div class="page_header">
<a href="{logourl}" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
</div>
<div class="page_nav">
<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
<a href="{url}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
<a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
annotate |
<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
<a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a> |
<a href="{url}help{sessionvars%urlparameter}">help</a>
<br/>
</div>
<div class="title">{file|escape}</div>
<div class="title_text">
<table cellspacing="0">
<tr>
<td>author</td>
<td>{author|obfuscate}</td></tr>
<tr>
<td></td>
<td class="date age">{date|date}</td></tr>
{branch%filerevbranch}
<tr>
<td>changeset {rev}</td>
<td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
{parent%fileannotateparent}
{child%fileannotatechild}
<tr>
<td>permissions</td>
<td style="font-family:monospace">{permissions|permissions}</td></tr>
</table>
</div>
<div class="page_path">
{desc|strip|escape|addbreaks|nonempty}
</div>
<div class="page_body">
<table>
{annotate%annotateline}
</table>
</div>
{footer}