Tue, 27 May 2014 21:02:16 -0700 dirstate.status: assign members one by one instead of unpacking the tuple
Siddharth Agarwal <sid0@fb.com> [Tue, 27 May 2014 21:02:16 -0700] rev 21810
dirstate.status: assign members one by one instead of unpacking the tuple With this patch, hg status and hg diff regain their previous speed. The following tests are run against a working copy with over 270,000 files. Here, 'before' means without this or the previous patch applied. Note that in this case `hg perfstatus` isn't representative since it doesn't take dirstate parsing time into account. $ time hg status # best of 5 before: 2.03s user 1.25s system 99% cpu 3.290 total after: 2.01s user 1.25s system 99% cpu 3.261 total $ time hg diff # best of 5 before: 1.32s user 0.78s system 99% cpu 2.105 total after: 1.27s user 0.79s system 99% cpu 2.066 total
Tue, 27 May 2014 14:27:41 -0700 parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com> [Tue, 27 May 2014 14:27:41 -0700] rev 21809
parsers: inline fields of dirstate values in C version Previously, while unpacking the dirstate we'd create 3-4 new CPython objects for most dirstate values: - the state is a single character string, which is pooled by CPython - the mode is a new object if it isn't 0 due to being in the lookup set - the size is a new object if it is greater than 255 - the mtime is a new object if it isn't -1 due to being in the lookup set - the tuple to contain them all In some cases such as regular hg status, we actually look at all the objects. In other cases like hg add, hg status for a subdirectory, or hg status with the third-party hgwatchman enabled, we look at almost none of the objects. This patch eliminates most object creation in these cases by defining a custom C struct that is exposed to Python with an interface similar to a tuple. Only when tuple elements are actually requested are the respective objects created. The gains, where they're expected, are significant. The following tests are run against a working copy with over 270,000 files. parse_dirstate becomes significantly faster: $ hg perfdirstate before: wall 0.186437 comb 0.180000 user 0.160000 sys 0.020000 (best of 35) after: wall 0.093158 comb 0.100000 user 0.090000 sys 0.010000 (best of 95) and as a result, several commands benefit: $ time hg status # with hgwatchman enabled before: 0.42s user 0.14s system 99% cpu 0.563 total after: 0.34s user 0.12s system 99% cpu 0.471 total $ time hg add new-file before: 0.85s user 0.18s system 99% cpu 1.033 total after: 0.76s user 0.17s system 99% cpu 0.931 total There is a slight regression in regular status performance, but this is fixed in an upcoming patch.
Tue, 27 May 2014 17:10:28 -0700 dirstate: add dirstatetuple to create dirstate values
Siddharth Agarwal <sid0@fb.com> [Tue, 27 May 2014 17:10:28 -0700] rev 21808
dirstate: add dirstatetuple to create dirstate values Upcoming patches will switch away from using Python tuples for dirstate values in compiled builds. Make that easier by introducing a variable called dirstatetuple, currently set to tuple. In upcoming patches, this will be set to an object from the parsers module.
Tue, 27 May 2014 15:22:23 -0700 parsers: remove no longer used dirstate_unset
Siddharth Agarwal <sid0@fb.com> [Tue, 27 May 2014 15:22:23 -0700] rev 21807
parsers: remove no longer used dirstate_unset
Tue, 27 May 2014 15:17:38 -0700 pack_dirstate: in C version, for invalidation set dict to what we write to disk
Siddharth Agarwal <sid0@fb.com> [Tue, 27 May 2014 15:17:38 -0700] rev 21806
pack_dirstate: in C version, for invalidation set dict to what we write to disk For files written out in the last second, Mercurial used to invalidate all the stat data (state, size, mode, mtime) while persisting to disk. This included invalidating the data in the dirstate dict as well. In commit 187bf2dde7c1, this was found to be unnecessary, and Mercurial switched to invalidating only the mtime. However, in the C version of pack_dirstate the value set in the dict was still the fully invalidated one. Switch to invalidating just the mtime in the dict as well.
Thu, 26 Jun 2014 11:10:28 -0400 record: update comment to match code
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 26 Jun 2014 11:10:28 -0400] rev 21805
record: update comment to match code Commit 205599e31870 changed how newfiles get passed to commitfunc, but did not change the corresponding comment that explains this. This commit also updates this comment.
Sat, 21 Jun 2014 14:49:49 +0530 hg: update newly added listdir function of vfs in clone
Chinmay Joshi <c@chinmayjoshi.com> [Sat, 21 Jun 2014 14:49:49 +0530] rev 21804
hg: update newly added listdir function of vfs in clone This change invokes os.listdir() via newly added vfs function in clone.
Sat, 21 Jun 2014 14:44:09 +0530 hg: use vfs functions in clone
Chinmay Joshi <c@chinmayjoshi.com> [Sat, 21 Jun 2014 14:44:09 +0530] rev 21803
hg: use vfs functions in clone This change applies vfs functions in clone. destvfs.exists will invoke os.path.lexists via lexists of vfs to check for broken symbolic links.
Sat, 21 Jun 2014 14:40:29 +0530 hg: update util.writefile method to use write with vfs in share
Chinmay Joshi <c@chinmayjoshi.com> [Sat, 21 Jun 2014 14:40:29 +0530] rev 21802
hg: update util.writefile method to use write with vfs in share This patch replaces util.writefile() to use destvfs.write().
Sat, 21 Jun 2014 14:37:39 +0530 hg: update to use vfs functions in shared destination repository
Chinmay Joshi <c@chinmayjoshi.com> [Sat, 21 Jun 2014 14:37:39 +0530] rev 21801
hg: update to use vfs functions in shared destination repository This patch uses destvfs with base as .hg directory in shared destination repository to update filesystem function with vfs. Some methods are changed to use vfs functions with destvfs. branch 'default' HG: bookmark '@' HG: changed mercurial/hg.py
Sat, 21 Jun 2014 14:29:20 +0530 hg: use vfs functions in destination repository with share
Chinmay Joshi <c@chinmayjoshi.com> [Sat, 21 Jun 2014 14:29:20 +0530] rev 21800
hg: use vfs functions in destination repository with share In this patch, dstwvfs is added to use vfs functions in working directory of destination shared repository. Existing filesystem operations are updated to use vfs functions through dstwvfs.
Fri, 20 Jun 2014 21:18:14 +0530 vfs: add listdir for os.listdir in vfs
Chinmay Joshi <c@chinmayjoshi.com> [Fri, 20 Jun 2014 21:18:14 +0530] rev 21799
vfs: add listdir for os.listdir in vfs This patch adds listdir() in vfs to use os.listdir().
Mon, 23 Jun 2014 09:24:56 -0400 templater: restore use of callable() since it was readded in Python 3.2
Augie Fackler <raf@durin42.com> [Mon, 23 Jun 2014 09:24:56 -0400] rev 21798
templater: restore use of callable() since it was readded in Python 3.2
Mon, 23 Jun 2014 09:24:38 -0400 hook: restore use of callable() since it was readded in Python 3.2
Augie Fackler <raf@durin42.com> [Mon, 23 Jun 2014 09:24:38 -0400] rev 21797
hook: restore use of callable() since it was readded in Python 3.2
Mon, 23 Jun 2014 09:24:24 -0400 help: restore use of callable() since it was readded in Python 3.2
Augie Fackler <raf@durin42.com> [Mon, 23 Jun 2014 09:24:24 -0400] rev 21796
help: restore use of callable() since it was readded in Python 3.2
Mon, 23 Jun 2014 09:24:06 -0400 extensions: restore use of callable() since it was readded in Python 3.2
Augie Fackler <raf@durin42.com> [Mon, 23 Jun 2014 09:24:06 -0400] rev 21795
extensions: restore use of callable() since it was readded in Python 3.2
Mon, 23 Jun 2014 09:24:16 -0400 fancyopts: restore use of callable() since it was readded in Python 3.2
Augie Fackler <raf@durin42.com> [Mon, 23 Jun 2014 09:24:16 -0400] rev 21794
fancyopts: restore use of callable() since it was readded in Python 3.2
Mon, 23 Jun 2014 09:23:57 -0400 gendoc: restore use of callable() since it was readded in Python 3.2
Augie Fackler <raf@durin42.com> [Mon, 23 Jun 2014 09:23:57 -0400] rev 21793
gendoc: restore use of callable() since it was readded in Python 3.2
Mon, 23 Jun 2014 09:23:47 -0400 check-seclevel: restore use of callable() since it was readded in Python 3.2
Augie Fackler <raf@durin42.com> [Mon, 23 Jun 2014 09:23:47 -0400] rev 21792
check-seclevel: restore use of callable() since it was readded in Python 3.2
Mon, 23 Jun 2014 09:22:53 -0400 check-code: drop ban on callable() which was restored in Python 3.2
Augie Fackler <raf@durin42.com> [Mon, 23 Jun 2014 09:22:53 -0400] rev 21791
check-code: drop ban on callable() which was restored in Python 3.2 A followup will restore use of callable() in place of the awkward hasattr() construction we were using to be one step closer to Python 3.
Sat, 21 Jun 2014 15:56:49 +1000 diff: add nobinary config to suppress git-style binary diffs
Stephen Lee <sphen.lee@gmail.com> [Sat, 21 Jun 2014 15:56:49 +1000] rev 21790
diff: add nobinary config to suppress git-style binary diffs
Mon, 23 Jun 2014 13:50:44 -0500 branchmap: don't use ui.warn for debug message
Matt Mackall <mpm@selenic.com> [Mon, 23 Jun 2014 13:50:44 -0500] rev 21789
branchmap: don't use ui.warn for debug message
Mon, 23 Jun 2014 13:46:42 -0500 branch: add debug message for branch cache write failure
Matt Mackall <mpm@selenic.com> [Mon, 23 Jun 2014 13:46:42 -0500] rev 21788
branch: add debug message for branch cache write failure
Sun, 04 May 2014 22:36:07 -0700 record: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:36:07 -0700] rev 21787
record: define inferrepo in command decorator
Sun, 04 May 2014 22:30:47 -0700 mq: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:30:47 -0700] rev 21786
mq: define inferrepo in command decorator
Sun, 04 May 2014 22:23:45 -0700 largefiles: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:23:45 -0700] rev 21785
largefiles: define inferrepo in command decorator
Sun, 04 May 2014 22:32:15 -0700 keyword: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:32:15 -0700] rev 21784
keyword: define inferrepo in command decorator
Sun, 04 May 2014 22:33:22 -0700 hgk: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:33:22 -0700] rev 21783
hgk: define inferrepo in command decorator
Sun, 04 May 2014 22:28:46 -0700 graphlog: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:28:46 -0700] rev 21782
graphlog: define inferrepo in command decorator
Sun, 04 May 2014 22:29:27 -0700 extdiff: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:29:27 -0700] rev 21781
extdiff: define inferrepo in command decorator
Sun, 04 May 2014 22:25:28 -0700 children: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:25:28 -0700] rev 21780
children: define inferrepo in command decorator
Sun, 04 May 2014 22:24:38 -0700 churn: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:24:38 -0700] rev 21779
churn: define inferrepo in command decorator
Sun, 04 May 2014 22:22:59 -0700 commands: define inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:22:59 -0700] rev 21778
commands: define inferrepo in command decorator
Sun, 04 May 2014 22:20:00 -0700 cmdutil: support inferrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:20:00 -0700] rev 21777
cmdutil: support inferrepo in command decorator
Sun, 04 May 2014 22:16:56 -0700 keyword: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:16:56 -0700] rev 21776
keyword: define optionalrepo in command decorator
Sun, 04 May 2014 22:16:05 -0700 commands: define optionalrepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:16:05 -0700] rev 21775
commands: define optionalrepo in command decorator
Sun, 04 May 2014 22:12:34 -0700 cmdutil: add optionalrepo argument to command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:12:34 -0700] rev 21774
cmdutil: add optionalrepo argument to command decorator
Sun, 04 May 2014 22:07:45 -0700 tests: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:07:45 -0700] rev 21773
tests: define norepo in command decorator
Sun, 04 May 2014 22:03:11 -0700 share: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:03:11 -0700] rev 21772
share: define norepo in command decorator
Sun, 04 May 2014 22:04:14 -0700 mq: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:04:14 -0700] rev 21771
mq: define norepo in command decorator
Sun, 04 May 2014 21:11:15 -0700 largefiles: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 21:11:15 -0700] rev 21770
largefiles: define norepo in command decorator
Sun, 04 May 2014 22:02:25 -0700 convert: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 22:02:25 -0700] rev 21769
convert: define norepo in command decorator
Sun, 04 May 2014 20:57:01 -0700 commands: define norepo in command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 20:57:01 -0700] rev 21768
commands: define norepo in command decorator
Sun, 04 May 2014 20:58:25 -0700 commands: add norepo argument to command decorator
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 20:58:25 -0700] rev 21767
commands: add norepo argument to command decorator Since decorators are evaluated at module load time and since the @command decorator imports commands, the norepo variable (along with its friends) may not be declared yet. These variables are now declared before @command usage to ensure they are present.
Sun, 04 May 2014 18:45:04 -0700 cmdutil: better document command()
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 May 2014 18:45:04 -0700] rev 21766
cmdutil: better document command()
Wed, 11 Jun 2014 22:19:29 -0400 convert: update the transplant, rebase and graft references in 'extra'
Matt Harbison <matt_harbison@yahoo.com> [Wed, 11 Jun 2014 22:19:29 -0400] rev 21765
convert: update the transplant, rebase and graft references in 'extra' This change allows the origin() and destination() revsets to yield the same results in the new and old repos after a conversion. Previously, nothing would be listed for queries in the new repo. Like the SHA1 updates to the commit messages, this is only operational when the 'convert.hg.saverev=True' option is specified. If the old reference cannot be found, it is left as-is. It seems slightly better to leave stale evidence of the graft/transplant/rebase than to eliminate it entirely.
Wed, 18 Jun 2014 20:59:36 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 18 Jun 2014 20:59:36 -0500] rev 21764
merge with stable
Wed, 18 Jun 2014 20:51:49 -0500 run-tests: hold iolock across diff/prompt when interactive
Matt Mackall <mpm@selenic.com> [Wed, 18 Jun 2014 20:51:49 -0500] rev 21763
run-tests: hold iolock across diff/prompt when interactive Otherwise diff may get separated from the corresponding prompt by other threads. This required moving the interactive prompting from one helper method to another.
Wed, 18 Jun 2014 15:26:07 -0500 bookmarks: improve the bookmark help (issue4244)
Matt Mackall <mpm@selenic.com> [Wed, 18 Jun 2014 15:26:07 -0500] rev 21762
bookmarks: improve the bookmark help (issue4244)
Wed, 18 Jun 2014 19:46:18 -0500 push: restore contents of HG_URL for hooks (issue4268) stable
Matt Mackall <mpm@selenic.com> [Wed, 18 Jun 2014 19:46:18 -0500] rev 21761
push: restore contents of HG_URL for hooks (issue4268)
Wed, 18 Jun 2014 13:47:14 -0500 tests: ignore missing file with PYTHONDONTWRITEBYTECODE (issue4239) stable
Matt Mackall <mpm@selenic.com> [Wed, 18 Jun 2014 13:47:14 -0500] rev 21760
tests: ignore missing file with PYTHONDONTWRITEBYTECODE (issue4239)
Mon, 16 Jun 2014 13:30:46 -0500 hgweb: avoid initialization race (issue4280) stable
Matt Mackall <mpm@selenic.com> [Mon, 16 Jun 2014 13:30:46 -0500] rev 21759
hgweb: avoid initialization race (issue4280)
Mon, 16 Jun 2014 12:04:48 -0500 p4: accept changesets with no description (issue4282) stable
Matt Mackall <mpm@selenic.com> [Mon, 16 Jun 2014 12:04:48 -0500] rev 21758
p4: accept changesets with no description (issue4282)
Sat, 14 Jun 2014 11:56:20 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 14 Jun 2014 11:56:20 -0500] rev 21757
merge with stable
Fri, 30 May 2014 12:57:58 -0700 test-run-tests.t: test the --nodiff option
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 30 May 2014 12:57:58 -0700] rev 21756
test-run-tests.t: test the --nodiff option
Fri, 30 May 2014 12:12:12 -0700 test-run-tests.t: test the --interactive option
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 30 May 2014 12:12:12 -0700] rev 21755
test-run-tests.t: test the --interactive option
Fri, 13 Jun 2014 14:45:23 +0530 run-tests: fixes the '--interactive' option error
anuraggoel <anurag.dsps@gmail.com> [Fri, 13 Jun 2014 14:45:23 +0530] rev 21754
run-tests: fixes the '--interactive' option error This patch fixes a regression recently introduced by a refactoring. Previously when failure occurs while testing with '--interactive' was enable, it didn't prompt user by asking whether he wants to accept this failure changes or not. This was happening beacuse of the 'if' condition if ret or not self._options.interactive or \ not os.path.exists(test.errpath): Everytime failure occurs, this condition gets true and returns back even when '--interactive' is enabled. This condition don't led the function to execute further, which consist the '--interactive' functionality. Now, on failure with '--interactive' enabled, it prompts user whether he wants to accepts failure changes or not. If yes then test gets passed and returns true, else test gets failed. On every failure, results gets stored in "self.failures.append((test, reason))" But if failure changes accepted by user then test must get "pop out" from failed test list.
Fri, 13 Jun 2014 14:33:02 +0530 run-tests: checks behaviour of test on failure while testing
anuraggoel <anurag.dsps@gmail.com> [Fri, 13 Jun 2014 14:33:02 +0530] rev 21753
run-tests: checks behaviour of test on failure while testing On failure while testing, if this function "result.addFailure(self, str(e))" returns true then test get 'passed' else count as 'failed'.
Sat, 14 Jun 2014 11:49:02 -0500 revlog: fix check-code error stable
Matt Mackall <mpm@selenic.com> [Sat, 14 Jun 2014 11:49:02 -0500] rev 21752
revlog: fix check-code error
Fri, 13 Jun 2014 17:42:04 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 13 Jun 2014 17:42:04 -0500] rev 21751
merge with stable
(0) -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 +30000 tip