Mon, 03 Oct 2016 13:18:31 +0200 copies: style fixes and add comment
Gábor Stefanik <gabor.stefanik@nng.com> [Mon, 03 Oct 2016 13:18:31 +0200] rev 30046
copies: style fixes and add comment
Mon, 03 Oct 2016 16:19:55 +0200 copies: limit is an optimization, and doesn't provide guarantees
Gábor Stefanik <gabor.stefanik@nng.com> [Mon, 03 Oct 2016 16:19:55 +0200] rev 30045
copies: limit is an optimization, and doesn't provide guarantees
Sat, 01 Oct 2016 20:20:11 +0900 revset: do not rewrite ':y' to '0:y' (issue5385)
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Oct 2016 20:20:11 +0900] rev 30044
revset: do not rewrite ':y' to '0:y' (issue5385) That's no longer valid since the revision 0 may be hidden. Bypass validating the existence of '0' and filter it by spanset.
Sat, 01 Oct 2016 20:11:48 +0900 revset: extract function that creates range set from computed revisions
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Oct 2016 20:11:48 +0900] rev 30043
revset: extract function that creates range set from computed revisions So we can pass m=0 to _makerangeset() even if the revision 0 is hidden. Hidden revisions are filtered by spanset.
Mon, 12 Sep 2016 13:37:14 +0200 lazymanifest: write a more efficient, pypy friendly version of lazymanifest
Maciej Fijalkowski <fijall@gmail.com> [Mon, 12 Sep 2016 13:37:14 +0200] rev 30042
lazymanifest: write a more efficient, pypy friendly version of lazymanifest
Sun, 02 Oct 2016 22:34:40 -0700 hg: set default path correctly when doing a clone+share (issue5378)
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 02 Oct 2016 22:34:40 -0700] rev 30041
hg: set default path correctly when doing a clone+share (issue5378) Before, if performing a clone+share from a repo that was itself using shared storage, the share code would copy paths.default from the underlying repo being shared, not from the source given by the user. This patch teaches hg.clonewithshare to resolve paths.default and pass it to share so it can be written to the hgrc accordingly.
Sat, 01 Oct 2016 14:18:58 +0100 annotate: calculate line count correctly
Jun Wu <quark@fb.com> [Sat, 01 Oct 2016 14:18:58 +0100] rev 30040
annotate: calculate line count correctly Before this patch, the "lines" function inside "annotate" returns 1 for empty text (''). This patch makes it 0. Because the function should match mdiff.splitnewlines (used by mdiff.allblocks), or s.splitlines (used at the end of the "annotate" method). Both len(mdiff.splitnewlines('')) and len(''.splitlines(True)) are 0. This issue was discovered while testing fastannotate [1]. I could not find a test case to reveal this issue. However in theory this could reduce memory usage a little bit, and avoids surprises when people are touching this area in the future. [1]: https://bitbucket.org/facebook/hg-experimental/commits/525b3b98e93a
Sun, 02 Oct 2016 05:29:17 +0530 py3: use unicode in is_frozen()
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 02 Oct 2016 05:29:17 +0530] rev 30039
py3: use unicode in is_frozen() imp.is_frozen() doesnot accepts bytes on Python 3. It does accept both bytes and strings on Python 2.
Sun, 02 Oct 2016 03:38:14 +0530 py3: use unicodes in __slots__
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 02 Oct 2016 03:38:14 +0530] rev 30038
py3: use unicodes in __slots__ __slots__ doesnot accepts bytes on Python 3.
Sat, 01 Oct 2016 15:10:38 -0400 merge with stable
Augie Fackler <augie@google.com> [Sat, 01 Oct 2016 15:10:38 -0400] rev 30037
merge with stable
Fri, 30 Sep 2016 21:38:47 +0900 url: fix crash by empty path with #fragments
Yuya Nishihara <yuya@tcha.org> [Fri, 30 Sep 2016 21:38:47 +0900] rev 30036
url: fix crash by empty path with #fragments Before, "#foo" paths made hg crash. We've moved the #fragment parsing at 64fbd0de9773, but we shouldn't set path to None too early. This patch just removes the "if not path:" block since that's checked a few lines later.
Wed, 28 Sep 2016 20:07:32 +0900 py3: make i18n use encoding.environ
Yuya Nishihara <yuya@tcha.org> [Wed, 28 Sep 2016 20:07:32 +0900] rev 30035
py3: make i18n use encoding.environ
Wed, 28 Sep 2016 20:05:34 +0900 py3: provide encoding.environ which is a dict of bytes
Yuya Nishihara <yuya@tcha.org> [Wed, 28 Sep 2016 20:05:34 +0900] rev 30034
py3: provide encoding.environ which is a dict of bytes This can't be moved to pycompat.py since we need encoding.tolocal() to build bytes dict from unicode os.environ.
Wed, 28 Sep 2016 20:39:06 +0900 py3: convert encoding name and mode to str
Yuya Nishihara <yuya@tcha.org> [Wed, 28 Sep 2016 20:39:06 +0900] rev 30033
py3: convert encoding name and mode to str Otherwise tolocal() and fromlocal() wouldn't work on Python 3. Still tolocal() can't make a valid localstr object because localstr inherits str, but it can return some object without raising exceptions. Since Py3 bytes() behaves much like bytearray() than str() of Py2, we can't simply do s/str/bytes/g. I have no good idea to handle str/bytes divergence.
Wed, 28 Sep 2016 22:32:09 +0900 pycompat: extract function that converts attribute or encoding name to str
Yuya Nishihara <yuya@tcha.org> [Wed, 28 Sep 2016 22:32:09 +0900] rev 30032
pycompat: extract function that converts attribute or encoding name to str This will be used to convert encoding.encoding to a str acceptable by Python 3 functions. The source encoding is changed to "latin-1" because encoding.encoding can have arbitrary bytes. Since valid names should consist of ASCII characters, we don't care about the mapping of non-ASCII characters so long as invalid names are distinct from valid names.
Sat, 01 Oct 2016 15:00:23 -0400 Added signature for changeset 149433e68974 stable
Augie Fackler <raf@durin42.com> [Sat, 01 Oct 2016 15:00:23 -0400] rev 30031
Added signature for changeset 149433e68974
Wed, 28 Sep 2016 20:01:23 +0900 pycompat: provide 'ispy3' constant
Yuya Nishihara <yuya@tcha.org> [Wed, 28 Sep 2016 20:01:23 +0900] rev 30030
pycompat: provide 'ispy3' constant We compare version_info at several places, which seems enough to define a constant.
Sat, 01 Oct 2016 15:00:18 -0400 Added tag 3.9.2 for changeset 149433e68974 stable
Augie Fackler <raf@durin42.com> [Sat, 01 Oct 2016 15:00:18 -0400] rev 30029
Added tag 3.9.2 for changeset 149433e68974
Fri, 30 Sep 2016 00:27:35 +0200 extensions: add a note about debug output during extensions search
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 30 Sep 2016 00:27:35 +0200] rev 30028
extensions: add a note about debug output during extensions search These messages do not show up when one use '--debug'. This is quite confusing so we clarify the situation next to the 'ui.debug' call.
Fri, 30 Sep 2016 00:25:15 +0200 extensions: fix a debug message when searching for extensions
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 30 Sep 2016 00:25:15 +0200] rev 30027
extensions: fix a debug message when searching for extensions The "next" value was wrong. When 'hgext.NAME' is not found we now search for 'hgext3rd.NAME'.
Tue, 30 Aug 2016 15:16:28 -0700 dirstate: rebuild should update dirstate properly
Mateusz Kwapich <mitrandir@fb.com> [Tue, 30 Aug 2016 15:16:28 -0700] rev 30026
dirstate: rebuild should update dirstate properly Updating dirstate by simply adding and dropping files from self._map doesn't keep the other maps updated (think: _dirs, _copymap, _foldmap, _nonormalset) thus introducing cache inconsistency. This is also affecting the debugstate tests since now we don't even try to set correct mode and mtime for the files because they are marked dirty anyway and will be checked during next status call.
Tue, 27 Sep 2016 22:09:28 -0700 histedit: avoid converting nodeid to context and back again
Martin von Zweigbergk <martinvonz@google.com> [Tue, 27 Sep 2016 22:09:28 -0700] rev 30025
histedit: avoid converting nodeid to context and back again It looks like this became unnecessary in e767f5aba810 (histedit: fix preventing strips during histedit, 2015-04-04).
Tue, 13 Sep 2016 22:58:12 -0400 help: mark boolean flags with [no-] to explain that they can be negated
Augie Fackler <augie@google.com> [Tue, 13 Sep 2016 22:58:12 -0400] rev 30024
help: mark boolean flags with [no-] to explain that they can be negated That is, help gets tweaked thus: global options ([+] can be repeated): -v --[no-]verbose enable additional output Other proposals have included: global options ([+] can be repeated, options marked [?] are boolean flags): -v --verbose[?] enable additional output and global options ([+] can be repeated, options marked [^] are boolean flags): -v --verbose[^] enable additional output which avoid the unfortunate visual noise in this patch. In this version's favor, it's consistent with what I'm used to seeing in man pages and similar documentation venues.
Tue, 27 Sep 2016 14:46:34 +0200 mdiff: remove unused parameter 'refine' from allblocks()
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 27 Sep 2016 14:46:34 +0200] rev 30023
mdiff: remove unused parameter 'refine' from allblocks()
Mon, 26 Sep 2016 23:28:57 +0900 demandimport: error out early on missing attribute of non package (issue5373)
Yuya Nishihara <yuya@tcha.org> [Mon, 26 Sep 2016 23:28:57 +0900] rev 30022
demandimport: error out early on missing attribute of non package (issue5373) If the parent module isn't a package, all valid attributes must be obtained from it. We can raise ImportError early if any attributes not found.
Tue, 27 Sep 2016 21:56:00 +0900 demandimport: add 'nt' to ignore list (issue5373)
Yuya Nishihara <yuya@tcha.org> [Tue, 27 Sep 2016 21:56:00 +0900] rev 30021
demandimport: add 'nt' to ignore list (issue5373) pathlib2 tries to import nt. Since it is a built-in module, there should be no performance penalty. https://github.com/mcmtroffaes/pathlib2/blob/release/2.2.0/pathlib2.py#L33
Tue, 27 Sep 2016 22:36:00 +0900 demandimport: add '_ctypes.pointer' to ignore list on PyPy
Yuya Nishihara <yuya@tcha.org> [Tue, 27 Sep 2016 22:36:00 +0900] rev 30020
demandimport: add '_ctypes.pointer' to ignore list on PyPy The pointer module is shadowed by a subsequent import. Our demand importer can't handle this because both sub modules and attributes live in the same namespace. https://bitbucket.org/pypy/pypy/src/release-5.0.1/lib_pypy/_ctypes/__init__.py#__init__.py-5
Mon, 26 Sep 2016 16:12:40 +0800 hgweb: make anchor name actually match its href on help index page
Anton Shestakov <av6@dwimlabs.net> [Mon, 26 Sep 2016 16:12:40 +0800] rev 30019
hgweb: make anchor name actually match its href on help index page
Sat, 24 Sep 2016 12:22:30 -0700 perf: add perfchangegroupchangelog command
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Sep 2016 12:22:30 -0700] rev 30018
perf: add perfchangegroupchangelog command This command can be used for testing the performance of producing the changelog portion of a changegroup. We could use additional perf* commands for testing other parts of changegroup. Those can be written another time, when they are needed. (And those may want to refactor the changegroup generation API so code can be reused.) Speaking of code reuse, yes, this command does reinvent a small wheel. I didn't want to scope bloat to change the changegroup API because that will invite bikeshedding.
Sat, 24 Sep 2016 10:44:37 -0700 perf: add --reverse to perfrevlog
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Sep 2016 10:44:37 -0700] rev 30017
perf: add --reverse to perfrevlog It can be useful to know how fast we can read revisions from a revlog in reverse. This operation tends to occur in `hg log` commands, for example.
Sat, 24 Sep 2016 19:58:23 +0900 log: copy the way of ancestor traversal to --follow matcher (issue5376)
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Sep 2016 19:58:23 +0900] rev 30016
log: copy the way of ancestor traversal to --follow matcher (issue5376) We can't use fctx.linkrev() because follow() revset tries hard to simulate the traversal of changelog DAG, not filelog DAG. This patch fixes _makefollowlogfilematcher() to walk file ancestors in the same way as revset._follow(). I'll factor out a common function in future patches.
Sat, 24 Sep 2016 19:52:02 +0900 log: unroll loop that populates file paths for --patch --follow matcher
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Sep 2016 19:52:02 +0900] rev 30015
log: unroll loop that populates file paths for --patch --follow matcher We can't handle the first fctx in the same manner as its ancestors. Also, I think the original code was too tricky.
Sun, 25 Sep 2016 12:20:31 -0700 wireproto: rename argument to groupchunks()
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 25 Sep 2016 12:20:31 -0700] rev 30014
wireproto: rename argument to groupchunks() groupchunks() is a generic "turn a file object into a generator" function. It isn't limited to changegroups. Rename the argument and update the docstring to reflect this.
Sun, 25 Sep 2016 13:20:55 -0700 tests: actually test non-generaldelta variant for stream clones
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 25 Sep 2016 13:20:55 -0700] rev 30013
tests: actually test non-generaldelta variant for stream clones 608cabec1b15 accidentally made both tests test generaldelta repos. Restore the test for a non-gd repo.
Wed, 24 Aug 2016 20:18:58 -0700 revlog: document high frequency of code execution
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 24 Aug 2016 20:18:58 -0700] rev 30012
revlog: document high frequency of code execution Recording my notes while working on performance optimization.
Wed, 24 Aug 2016 20:00:52 -0700 revlog: make code in builddelta() slightly easier to read
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 24 Aug 2016 20:00:52 -0700] rev 30011
revlog: make code in builddelta() slightly easier to read self.compress() is destructured into its components. "l" is renamed to "deltalen."
Fri, 23 Sep 2016 14:37:15 -0400 py3: update test expectation on stable stable 3.9.2
Augie Fackler <augie@google.com> [Fri, 23 Sep 2016 14:37:15 -0400] rev 30010
py3: update test expectation on stable
Fri, 23 Sep 2016 12:45:10 -0500 grep: rewrite help to better document current (confusing) behavior stable
Kevin Bullock <kbullock+mercurial@ringworld.org> [Fri, 23 Sep 2016 12:45:10 -0500] rev 30009
grep: rewrite help to better document current (confusing) behavior
Fri, 23 Sep 2016 08:15:05 +0000 templates: add built-in files() function
Hannes Oldenburg <hannes.christian.oldenburg@gmail.com> [Fri, 23 Sep 2016 08:15:05 +0000] rev 30008
templates: add built-in files() function We already support multiple primitive for listing files, which were affected by the current changeset. This patch adds files() which returns files of the current changeset matching a given pattern or fileset query via the "set:" prefix.
Sat, 17 Sep 2016 17:02:56 +1000 rebase: rebase changesets in topo order (issue5370) (BC)
Xidorn Quan <me@upsuper.org> [Sat, 17 Sep 2016 17:02:56 +1000] rev 30007
rebase: rebase changesets in topo order (issue5370) (BC) There are two reasons that rebase should be done this way: 1. This would make rebasing faster because it would minimize the total number of files to be checked out in the process, as it don't need to switch back and forth between branches. 2. It makes resolving conflicts easier as user has a better context. This commit changes the behavior in "Test multiple root handling" of test-rebase-obsolete.t. It is an expected change which reflects the new behavior that commits in a branch are grouped together when rebased.
Thu, 22 Sep 2016 12:36:30 -0700 dispatch: make hg --profile wrap reposetup
Arun Kulshreshtha <kulshrax@fb.com> [Thu, 22 Sep 2016 12:36:30 -0700] rev 30006
dispatch: make hg --profile wrap reposetup Move profiling.maybeprofile() from _runcommand to _dispatch() so that profiler output will include reposetup.
Thu, 22 Sep 2016 12:19:48 -0700 dispatch: change indentation level in _dispatch()
Arun Kulshreshtha <kulshrax@fb.com> [Thu, 22 Sep 2016 12:19:48 -0700] rev 30005
dispatch: change indentation level in _dispatch() Add an if True: placeholder for a profiling context manager that will be added in the next commit, for the purpose of reducing size of the diff due to trivial indentation changes. This change should be a no-op.
Thu, 22 Sep 2016 20:59:24 +0900 log: drop outdated optimization to walk revisions in reverse order
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 20:59:24 +0900] rev 30004
log: drop outdated optimization to walk revisions in reverse order Since revset is computed lazily, there would be no (or little) benefit to reverse 'revs' temporarily.
Thu, 22 Sep 2016 20:53:53 +0900 graphlog: preserve topo sort even if additional filter options specified
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 20:53:53 +0900] rev 30003
graphlog: preserve topo sort even if additional filter options specified Use ordered=revset.followorder instead. This change is logically the same as fa5e4f58dfbc.
Thu, 22 Sep 2016 21:52:00 +0900 transaction: open a file with checkambig=True to avoid file stat ambiguity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:52:00 +0900] rev 30002
transaction: open a file with checkambig=True to avoid file stat ambiguity Before this patch, if steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to revlog-style file (and close transaction) 2. discard appended data by truncation of rollback 3. append same size but different data to revlog-style file again Therefore, cache validation doesn't work after (3) as expected. To avoid file stat ambiguity around truncation, this patch opens a file with checkambig=True. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:52:00 +0900 repair: open a file with checkambig=True to avoid file stat ambiguity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:52:00 +0900] rev 30001
repair: open a file with checkambig=True to avoid file stat ambiguity Before this patch, if steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to revlog-style file (and close transaction) 2. discard appended data by truncation of strip 3. append same size but different data to revlog-style file again Therefore, cache validation doesn't work after (3) as expected. To avoid such file stat ambiguity around truncation, this patch opens a file with checkambig=True. This patch also introduces "with" statement style, to ensure immediate invocation of close() after truncation, because closing file is the only trigger to check (and get rid of) file stat ambiguity. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:59 +0900 changelog: specify checkambig=True to revlog.__init__, to avoid ambiguity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:59 +0900] rev 30000
changelog: specify checkambig=True to revlog.__init__, to avoid ambiguity If steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to 00changelog.i (and close transaction) 2. discard appended data by truncation (strip or rollback) 3. append same size but different data to 00changelog.i again Therefore, cache validation doesn't work after (3) as expected. To avoid such file stat ambiguity around truncation, this patch specifies checkambig=True to revlog.__init__(). This makes revlog write changes out with checkambig=True. Even though changes of 00changelog.i themselves are written out at changelog._finalize(), this checkambig=True is needed, because revlog.checkinlinesize(), which is invoked at the end of changelog._finalize(), might replace already changed 00changelog.i by converted one. Even after this patch, avoiding file stat ambiguity of 00changelog.i around truncation isn't yet completed, because truncation side isn't aware of this issue. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:59 +0900 changelog: specify checkambig=True to avoid ambiguity around truncation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:59 +0900] rev 29999
changelog: specify checkambig=True to avoid ambiguity around truncation If steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to 00changelog.i (and close transaction) 2. discard appended data by truncation (strip or rollback) 3. append same size but different data to 00changelog.i again Therefore, cache validation doesn't work after (3) as expected. To avoid such file stat ambiguity around truncation, this patch specifies checkambig=True for renaming or opening to write changes out at finalization. Even after this patch, avoiding file stat ambiguity of 00changelog.i around truncation isn't yet completed, because truncation side isn't aware of this issue. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:58 +0900 manifest: specify checkambig=True to revlog.__init__, to avoid ambiguity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:58 +0900] rev 29998
manifest: specify checkambig=True to revlog.__init__, to avoid ambiguity If steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to 00manifest.i (and close transaction) 2. discard appended data by truncation (strip or rollback) 3. append same size but different data to 00manifest.i again Therefore, cache validation doesn't work after (3) as expected. To avoid such file stat ambiguity around truncation, this patch specifies checkambig=True to revlog.__init__(). This makes revlog write changes out with checkambig=True. Even after this patch, avoiding file stat ambiguity of 00manifest.i around truncation isn't yet completed, because truncation side isn't aware of this issue. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:58 +0900 revlog: specify checkambig at writing to avoid file stat ambiguity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:58 +0900] rev 29997
revlog: specify checkambig at writing to avoid file stat ambiguity This allows revlog-style files to be written out with checkambig=True easily. Because avoiding file stat ambiguity is needed only for filecache-ed manifest and changelog, this patch does: - use False for default value of checkambig - focus only on writing changes of index file out This patch also adds optional argument checkambig to _divert/_delay for changelog, to safely accept checkambig specified in revlog layer. But this argument can be fully ignored, because: - changes are written into other than index file, if name != target - changes are never written into index file, otherwise (into pending file by _divert, or into in-memory buffer by _delay) This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:57 +0900 vfs: use checkambigatclosing in checkambig=True but atomictemp=False case
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:57 +0900] rev 29996
vfs: use checkambigatclosing in checkambig=True but atomictemp=False case In Mercurial source tree, opening a file in "a"/"a+" mode like below doesn't specify atomictemp=True for vfs, and this avoids file stat ambiguity check by atomictempfile. - writing changes out in revlog layer uses "a+" mode - truncation in repair.strip() uses "a" mode - truncation in transaction._playback() uses "a" mode If steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to revlog-style file (and close transaction) 2. discard appended data by truncation (strip or rollback) 3. append same size but different data to revlog-style file again Therefore, cache validation doesn't work after (3) as expected. This patch uses checkambigatclosing in checkambig=True but atomictemp=False case, to check (and get rid of) file stat ambiguity at closing. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:57 +0900 scmutil: add file object wrapper class to check ambiguity at closing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:57 +0900] rev 29995
scmutil: add file object wrapper class to check ambiguity at closing In Mercurial source tree, opening a file in "a"/"a+" mode like below doesn't specify atomictemp=True for vfs, and this avoids file stat ambiguity check by atomictempfile. - writing changes out in revlog layer uses "a+" mode - truncation in repair.strip() uses "a" mode - truncation in transaction._playback() uses "a" mode If steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to revlog-style file (and close transaction) 2. discard appended data by truncation (strip or rollback) 3. append same size but different data to revlog-style file again Therefore, cache validation doesn't work after (3) as expected. This patch adds file object wrapper class checkambigatclosing to check (and get rid of) ambiguity at closing. It is used by vfs in subsequent patch. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan BTW, checkambigatclosing is tested in test-filecache.py, even though it doesn't use filecache itself, because filecache assumes that file stat ambiguity never occurs (and there is no another test-*.py related to filecache).
Thu, 22 Sep 2016 21:51:56 +0900 scmutil: factor out common logic of delayclosedfile to reuse it
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:56 +0900] rev 29994
scmutil: factor out common logic of delayclosedfile to reuse it This is a preparation for the subsequent patch, which adds another proxy class for a file object.
Thu, 22 Sep 2016 13:20:06 +0800 spartan: remove unused templates
Anton Shestakov <av6@dwimlabs.net> [Thu, 22 Sep 2016 13:20:06 +0800] rev 29993
spartan: remove unused templates
Thu, 22 Sep 2016 13:19:44 +0800 monoblue: remove unused templates
Anton Shestakov <av6@dwimlabs.net> [Thu, 22 Sep 2016 13:19:44 +0800] rev 29992
monoblue: remove unused templates
Thu, 22 Sep 2016 13:19:25 +0800 gitweb: remove unused templates
Anton Shestakov <av6@dwimlabs.net> [Thu, 22 Sep 2016 13:19:25 +0800] rev 29991
gitweb: remove unused templates
Thu, 22 Sep 2016 13:18:59 +0800 paper: remove unused templates
Anton Shestakov <av6@dwimlabs.net> [Thu, 22 Sep 2016 13:18:59 +0800] rev 29990
paper: remove unused templates
Wed, 21 Sep 2016 17:05:27 -0400 help: add sections for revsets
timeless <timeless@mozdev.org> [Wed, 21 Sep 2016 17:05:27 -0400] rev 29989
help: add sections for revsets
Wed, 21 Sep 2016 17:23:05 +0000 help: move revsets.## documentation into infix section
timeless <timeless@mozdev.org> [Wed, 21 Sep 2016 17:23:05 +0000] rev 29988
help: move revsets.## documentation into infix section
Wed, 21 Sep 2016 16:33:37 +0000 help: clarify quotes are needed for filesets.size expressions
timeless <timeless@mozdev.org> [Wed, 21 Sep 2016 16:33:37 +0000] rev 29987
help: clarify quotes are needed for filesets.size expressions
Wed, 21 Sep 2016 20:43:41 +0800 paper: remove unused template "changelogchild"
Anton Shestakov <av6@dwimlabs.net> [Wed, 21 Sep 2016 20:43:41 +0800] rev 29986
paper: remove unused template "changelogchild"
Wed, 21 Sep 2016 20:43:10 +0800 monoblue: remove unused template "changelogchild"
Anton Shestakov <av6@dwimlabs.net> [Wed, 21 Sep 2016 20:43:10 +0800] rev 29985
monoblue: remove unused template "changelogchild"
Wed, 21 Sep 2016 20:35:46 +0800 gitweb: remove unused template "changelogchild"
Anton Shestakov <av6@dwimlabs.net> [Wed, 21 Sep 2016 20:35:46 +0800] rev 29984
gitweb: remove unused template "changelogchild"
Wed, 21 Sep 2016 20:19:35 +0800 monoblue: tweak branch table's last row's cell colspan on summary page
Anton Shestakov <av6@dwimlabs.net> [Wed, 21 Sep 2016 20:19:35 +0800] rev 29983
monoblue: tweak branch table's last row's cell colspan on summary page This table only has 3 columns, so max sensible colspan is 3.
(0) -30000 -10000 -3000 -1000 -300 -100 -64 +64 +100 +300 +1000 +3000 +10000 tip