##// END OF EJS Templates
hgweb: do not import uuid immediately to avoid its side effect...
hgweb: do not import uuid immediately to avoid its side effect With hgdemandimport disabled (chg's case), `import uuid` has an immediate side effect calling `ctypes.util.find_library` trying to locate the `libuuid` library. This happens at `import` time before `dispatch.run()`. The call trace is like: File "hg/hg", line 54, in <module> from mercurial import ( File "hg/mercurial/dispatch.py", line 24, in <module> from . import ( File "hg/mercurial/commands.py", line 23, in <module> from . import ( File "hg/mercurial/help.py", line 33, in <module> from .hgweb import ( File "hg/mercurial/hgweb/__init__.py", line 20, in <module> from . import ( File "hg/mercurial/hgweb/hgweb_mod.py", line 14, in <module> from .common import ( File "hg/mercurial/hgweb/common.py", line 15, in <module> import uuid File "/usr/lib64/python2.7/uuid.py", line 404, in <module> lib = ctypes.CDLL(ctypes.util.find_library(libname)) The problem is, `ctypes.util.find_library` will execute `sh -c '/sbin/ldconfig -p 2>/dev/null'` on Python <= 2.7.12. The output of `sh` may pollute the terminal: shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory This patch moves `import uuid` so its side-effect can only happen after the cwd check in `dispatch._getlocal`. Therefore the terminal won't be polluted by importing `uuid`. Differential Revision: https://phab.mercurial-scm.org/D1024

File last commit:

r32990:816a4fa7 default
r34644:f42dec9c default
Show More
shortlog.tmpl
55 lines | 1.9 KiB | application/x-cheetah | CheetahLexer
{header}
<title>{repo|escape}: Shortlog</title>
<link rel="alternate" type="application/atom+xml"
href="{url|urlescape}atom-log" title="Atom feed for {repo|escape}"/>
<link rel="alternate" type="application/rss+xml"
href="{url|urlescape}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="/">Mercurial</a> {pathdef%breadcrumb} / shortlog
</div>
<div class="page_nav">
<div>
<a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a> |
shortlog |
<a href="{url|urlescape}log/{symrev}{sessionvars%urlparameter}">changelog</a> |
<a href="{url|urlescape}graph/{symrev}{sessionvars%urlparameter}">graph</a> |
<a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a> |
<a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
<a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a> |
<a href="{url|urlescape}file/{symrev}{sessionvars%urlparameter}">files</a>{archives%archiveentry} |
<a href="{url|urlescape}help{sessionvars%urlparameter}">help</a>
<br/>{changenav%navshort}<br/>
</div>
{searchform}
</div>
<div class="title">&nbsp;</div>
<table class="shortlogtable" cellspacing="0">
{entries%shortlogentry}
</table>
<div class="extra_nav">
{changenav%navshort}
</div>
<script type="text/javascript"{if(nonce, ' nonce="{nonce}"')}>
ajaxScrollInit(
'{url|urlescape}shortlog/%next%{sessionvars%urlparameter}',
'{nextentry%"{node}"}', <!-- NEXTHASH
function (htmlText, previousVal) \{
var m = htmlText.match(/'(\w+)', <!-- NEXTHASH/);
return m ? m[1] : null;
},
'.shortlogtable > tbody:nth-of-type(1)',
'<tr class="%class%">\
<td colspan="4" style="text-align: center;">%text%</td>\
</tr>'
);
</script>
{footer}