liscju <piotr.listkiewicz@gmail.com> [Thu, 12 May 2016 11:36:51 +0200] rev 29317
largefiles: rename match_ to matchmod import in lfcommands
liscju <piotr.listkiewicz@gmail.com> [Tue, 10 May 2016 15:20:04 +0200] rev 29316
py3: make largefiles/wirestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Tue, 10 May 2016 15:14:41 +0200] rev 29315
py3: make largefiles/uisetup.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Tue, 10 May 2016 15:04:22 +0200] rev 29314
py3: make largefiles/reposetup.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Tue, 10 May 2016 15:00:22 +0200] rev 29313
py3: make largefiles/remotestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Tue, 10 May 2016 14:41:58 +0200] rev 29312
py3: make largefiles/proto.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Tue, 10 May 2016 14:26:36 +0200] rev 29311
py3: make largefiles/overrides.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Tue, 10 May 2016 14:20:51 +0200] rev 29310
py3: make largefiles/localstore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Tue, 10 May 2016 15:09:22 +0200] rev 29309
py3: make largefiles/lfutil.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Sat, 07 May 2016 15:44:46 +0200] rev 29308
py3: make largefiles/lfcommands.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Fri, 06 May 2016 14:30:23 +0200] rev 29307
py3: make largefiles/basestore.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Fri, 06 May 2016 14:28:32 +0200] rev 29306
py3: make largefiles/__init__.py use absolute_import
liscju <piotr.listkiewicz@gmail.com> [Sat, 04 Jun 2016 16:53:44 +0200] rev 29305
largefiles: move basestore._openstore into new module to remove cycle
Kostia Balytskyi <ikostia@fb.com> [Thu, 02 Jun 2016 22:39:01 +0100] rev 29304
revset: make filteredset.__nonzero__ respect the order of the filteredset
This fix allows __nonzero__ to respect the direction of iteration of the
whole filteredset. Here's the case when it matters. Imagine that we have a
very large repository and we want to execute a command like:
$ hg log --rev '(tip:0) and user(ikostia)' --limit 1
(we want to get the latest commit by me).
Mercurial will evaluate a filteredset lazy data structure, an
instance of the filteredset class, which will know that it has to iterate
in a descending order (isdescending() will return True if called). This
means that when some code iterates over the instance of this filteredset,
the 'and user(ikostia)' condition will be first checked on the latest
revision, then on the second latest and so on, allowing Mercurial to
print matches as it founds them. However, cmdutil.getgraphlogrevs
contains the following code:
revs = _logrevs(repo, opts)
if not revs:
return revset.baseset(), None, None
The "not revs" expression is evaluated by calling filteredset.__nonzero__,
which in its current implementation will try to iterate the filteredset
in ascending order until it finds a revision that matches the 'and user(..'
condition. If the condition is only true on late revisions, a lot of
useless iterations will be done. These iterations could be avoided if
__nonzero__ followed the order of the filteredset, which in my opinion
is a sensible thing to do here.
The problem gets even worse when instead of 'user(ikostia)' some more
expensive check is performed, like grepping the commit diff.
I tested this fix on a very large repo where tip is my commit and my very
first commit comes fairly late in the revision history. Results of timing
of the above command on that very large repo.
-with my fix:
real 0m1.795s
user 0m1.657s
sys 0m0.135s
-without my fix:
real 1m29.245s
user 1m28.223s
sys 0m0.929s
I understand that this is a very specific kind of problem that presents
itself very rarely, only on very big repositories and with expensive
checks and so on. But I don't see any disadvantages to this kind of fix
either.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 03 Jun 2016 00:44:20 +0900] rev 29303
phases: make writing phaseroots file out avoid ambiguity of file stat
Cached attribute repo._phasecache uses stat of '.hg/phaseroots' file
to examine validity of cached contents. If writing '.hg/phaseroots'
file out keeps ctime, mtime and size of it, change is overlooked, and
old contents cached before change isn't invalidated as expected.
To avoid ambiguity of file stat, this patch writes '.hg/phaseroots'
file out with checkambig=True.
This patch is a part of "Exact Cache Validation Plan":
https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 03 Jun 2016 00:44:20 +0900] rev 29302
dirstate: make writing branch file out avoid ambiguity of file stat
Cached attribute dirstate._branch uses stat of '.hg/branch' file to
examine validity of cached contents. If writing '.hg/branch' file out
keeps ctime, mtime and size of it, change is overlooked, and old
contents cached before change isn't invalidated as expected.
To avoid ambiguity of file stat, this patch writes '.hg/branch' file
out with checkambig=True.
This patch is a part of "Exact Cache Validation Plan":
https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 03 Jun 2016 00:44:20 +0900] rev 29301
dirstate: make writing dirstate file out avoid ambiguity of file stat
Cached attribute repo.dirstate uses stat of '.hg/dirstate' file to
examine validity of cached contents. If writing '.hg/dirstate' file
out keeps ctime, mtime and size of it, change is overlooked, and old
contents cached before change isn't invalidated as expected.
To avoid ambiguity of file stat, this patch writes '.hg/dirstate' file
out with checkambig=True.
The former diff hunk changes the code path for "dirstate.write()", and
the latter changes the code path for "dirstate.savebackup()".
This patch is a part of "Exact Cache Validation Plan":
https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 03 Jun 2016 00:44:20 +0900] rev 29300
bookmarks: make writing files out avoid ambiguity of file stat
Cached attribute repo._bookmarks uses stat of '.hg/bookmarks' and
'.hg/bookmarks.current' files to examine validity of cached
contents. If writing these files out keeps ctime, mtime and size of
them, change is overlooked, and old contents cached before change
isn't invalidated as expected.
To avoid ambiguity of file stat, this patch writes '.hg/bookmarks' and
'.hg/bookmarks.current' files out with checkambig=True.
This patch is a part of "Exact Cache Validation Plan":
https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 03 Jun 2016 00:44:20 +0900] rev 29299
transaction: avoid ambiguity of file stat at closing transaction
Files below, which might be changed at closing transaction, are used
to examine validity of cached properties. If changing keeps ctime,
mtime and size of a file, change is overlooked, and old contents
cached before change isn't invalidated as expected.
- .hg/bookmarks
- .hg/dirstate
- .hg/phaseroots
To avoid ambiguity of file stat, this patch writes files out with
checkambig=True at closing transaction.
checkambig becomes True only at closing (= 'not suffix'), because stat
information of '.pending' file isn't used to examine validity of
cached properties.
This patch is a part of "Exact Cache Validation Plan":
https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 03 Jun 2016 00:44:20 +0900] rev 29298
util: add __ne__ to filestat class for consistency
This is follow up for ca4065028e00, which introduced filestat class.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 16 Apr 2016 16:01:24 -0700] rev 29297
style: remove namespace class
For better or worse, our coding do not use use class for pure namespacing. We
remove the class introduced in a5009789960c.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 16 Apr 2016 15:59:30 -0700] rev 29296
style: don't use capital letter for constant
For better or worse, our coding do not use all caps for constants. We rename
constant name introduced in a5009789960c.
Danek Duvall <danek.duvall@oracle.com> [Thu, 02 Jun 2016 16:18:44 -0700] rev 29295
tests-subrepo-git: use "f" to dump pwned.txt, for portability
Rather than sometimes using a complicated shell construct to dump pwned.txt
(if it wasn't expected to exist, but might, if something were broken) or
just cat (if it was expected to exist), just use the "f" utility, which
will be consistent in its behavior across different platforms.
Also make sure that *something* gets put into pwned.txt, even if we ended
up typoing the message variable.
Mads Kiilerich <madski@unity3d.com> [Wed, 01 Jun 2016 21:40:52 +0200] rev 29294
bundle2: don't assume ordering of heads checked after push
Usually, the heads will have the same ordering in handlecheckheads. Insisting
on the same ordering is however an unnecessary constraint that in some custom
cases can cause pushes to fail even though the actual heads didn't change. This
caused production issues for us in combination with the current version of
https://bitbucket.org/Unity-Technologies/hgwebcachingproxy/ .