FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Apr 2015 00:36:42 +0900] rev 24675
subrepo: use vfs.reljoin instead of os.path.join
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Apr 2015 00:36:42 +0900] rev 24674
subrepo: inline reporelpath into abstractsubrepo._relpath to centralize logic
"reporelpath()" is referred only from "abstractsubrepo._relpath()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Apr 2015 00:36:42 +0900] rev 24673
subrepo: add _relpath field to centralize subrelpath logic
This patch adds propertycache-ed "_relpath" field to
"abstractsubrepo", to centralize "subrelpath" logic into it.
Now, "subrelpath()" can always return "_relpath" field of the
specified subrepo object, because it is ensured that subrepo object
has it. To reduce changes in this patch, "subrelpath()" itself is
still kept, even though it seems to be redundant.
This is also a part of eliminating "os.path.*" API invocations for
"Windows UTF-8 Plan".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Apr 2015 00:36:42 +0900] rev 24672
subrepo: add wvfs field to access the working directory via vfs
This patch doesn't create vfs object in "abstractsubrepo.__init__()"
but adds propertycache-ed "wvfs" field, because the latter can:
- delay vfs instantiation until it is actually needed
- allow to use "hgsubrepo._repo.wvfs" as "wvfs"
"hgsubrepo._repo" is initialized after
"abstractsubrepo.__init__()" invocation, and passing
"hgsubrepo._repo.wvfs" to "abstractsubrepo.__init__()" is
difficult.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 10 Apr 2015 00:36:42 +0900] rev 24671
subrepo: change arguments of abstractsubrepo.__init__ (API)
This patch passes "ctx" and "path" instead of "ui" to
"abstractsubrepo.__init__()" and stores them as "_ctx" and "_path" to
use them in subsequent patches.
This also removes redundant field initializations in the constructor
of classes derived from "abstractsubrepo".
Drew Gottlieb <drgott@google.com> [Tue, 07 Apr 2015 15:18:52 -0700] rev 24670
treemanifest: optimize treemanifest._walk() to skip directories
This makes treemanifest.walk() not visit submanifests that are known not to
have any matching files. It does this by calling match.visitdir() on
submanifests as it walks.
This change also updates largefiles to be able to work with this new behavior
in treemanifests. It overrides match.visitdir(), the function that dictates
how walk() and matches() skip over directories.
The greatest speed improvements are seen with narrower scopes. For example,
this commit speeds up the following command on the Mozilla repo from 1.14s
to 1.02s:
hg files -r . dom/apps/
Whereas with a wider scope, dom/, the speed only improves from 1.21s to 1.13s.
As with similar a similar optimization to treemanifest.matches(), this change
will bring out even bigger performance improvements once treemanifests are
loaded lazily. Once that happens, we won't just skip over looking at
submanifests, but we'll skip even loading them.
Matt Harbison <matt_harbison@yahoo.com> [Wed, 08 Apr 2015 22:31:50 -0400] rev 24669
import-checker: force 'fcntl', 'grp', 'pwd', and 'termios' to stdlib modules
These are Unix only, and caused these additional warnings on Windows if they
aren't hardcoded as stdlib:
mercurial/posix.py mixed imports
stdlib: errno, getpass, os, socket, stat, sys, tempfile
relative: grp, pwd, unicodedata
mercurial/posix.py mixed imports
stdlib: re
relative: fcntl
mercurial/posix.py mixed imports
stdlib: array
relative: termios
Additionally, this was missing on Windows:
mercurial/crecord.py mixed imports
stdlib: fcntl, termios
relative: curses
https://docs.python.org/2/library/fcntl.html
https://docs.python.org/2/library/grp.html
https://docs.python.org/2/library/pwd.html
https://docs.python.org/2/library/termios.html
Matt Harbison <matt_harbison@yahoo.com> [Wed, 08 Apr 2015 22:23:51 -0400] rev 24668
import-checker: allow *.pyd based stdlib modules
These are Windows dlls, and eliminate the following import check diffs that are
not on Unix:
mercurial/changegroup.py mixed imports
stdlib: os, struct, tempfile, zlib
relative: bz2
mercurial/encoding.py mixed imports
stdlib: locale, os
relative: unicodedata
Martin von Zweigbergk <martinvonz@google.com> [Tue, 07 Apr 2015 22:35:44 -0700] rev 24667
manifest.walk: join nested if-conditions
This makes it more closely match the similar condition in
manifestdict.matches().
Martin von Zweigbergk <martinvonz@google.com> [Wed, 08 Apr 2015 10:01:31 -0700] rev 24666
manifestdict: inline _intersectfiles()
The _intersectfiles() method is only called from one place, it's
pretty short, and its caller has to be aware when it's appropriate to
call it (when the number of files in the matcher is not too large), so
let's inline it.
Martin von Zweigbergk <martinvonz@google.com> [Wed, 08 Apr 2015 10:03:59 -0700] rev 24665
manifestdict._intersectfiles: avoid one level of property indirection
We have already bothered to extract "lm = self._lm", so let's use "lm"
where possible.
Martin von Zweigbergk <martinvonz@google.com> [Wed, 08 Apr 2015 10:06:05 -0700] rev 24664
manifestdict.matches: avoid name 'lm' for a not-lazymanifest
Mathias De Maré <mathias.demare@gmail.com> [Tue, 24 Mar 2015 21:25:57 +0100] rev 24663
commands: add ui.statuscopies config knob
statuscopies enables viewing of copies and moves in 'hg status' by default.
Yuya Nishihara <yuya@tcha.org> [Sat, 04 Apr 2015 22:30:59 +0900] rev 24662
changelog: inline revlog.__contains__ in case it is used in hot loop
Currently __contains__ is called only by "rev()" revset, but "x in cl" is a
function that is likely to be used in hot loop. revlog.__contains__ is simple
enough to duplicate to changelog, so just inline it.