Mon, 18 May 2015 16:22:15 -0500 patchbomb: stop explicit import required by Python 2.4
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:22:15 -0500] rev 25202
patchbomb: stop explicit import required by Python 2.4 Ding Dong, the witch is dead!
Mon, 18 May 2015 16:20:12 -0500 pager: drop python 2.4 hack around subprocess
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:20:12 -0500] rev 25201
pager: drop python 2.4 hack around subprocess Farewell, we do not need you anymore.
Mon, 18 May 2015 16:18:18 -0500 check-code: drop ban of 'val if cond else otherval' construct
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:18:18 -0500] rev 25200
check-code: drop ban of 'val if cond else otherval' construct We now have access to this horrible but less bad than 'cond and val or otherval' syntax.
Mon, 18 May 2015 16:30:24 -0500 check-code: entirely drop the 'non-py24.py' file from the test
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:30:24 -0500] rev 25199
check-code: entirely drop the 'non-py24.py' file from the test There are no Python 2.4 related errors remaining.
Mon, 18 May 2015 16:11:44 -0500 check-code: drop the 'format' built-in
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:11:44 -0500] rev 25198
check-code: drop the 'format' built-in I'm not clear what it is doing, but one who knows what it is about can now make use of it.
Mon, 18 May 2015 16:09:05 -0500 check-code: drop ban of str.format
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 16:09:05 -0500] rev 25197
check-code: drop ban of str.format After discussion with Augie and Matt, we are fine with it being introduced in the code base.
Mon, 18 May 2015 22:40:16 -0400 statichttprepo: remove wrong getattr ladder
Augie Fackler <raf@durin42.com> [Mon, 18 May 2015 22:40:16 -0400] rev 25196
statichttprepo: remove wrong getattr ladder At least as far back as Python 2.6 the .code attribute is always defined, and to the best of my detective skills a .getcode() method has never been a thing.
Tue, 19 May 2015 07:17:57 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 19 May 2015 07:17:57 -0500] rev 25195
merge with stable
Sun, 17 May 2015 22:09:37 -0400 match: explicitly naming a subrepo implies always() for the submatcher stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 May 2015 22:09:37 -0400] rev 25194
match: explicitly naming a subrepo implies always() for the submatcher The files command supports naming directories to limit the output to children of that directory, and it also supports -S to force recursion into a subrepo. But previously, using -S and naming a subrepo caused nothing to be output. The reason was narrowmatcher() strips the current subrepo path off of each file, which would leave an empty list if only the subrepo was named. When matching on workingctx, dirstate.matches() would see the submatcher is not always(), so it returned the list of files in dmap for each file in the matcher- namely, an empty list. If a directory in a subrepo was named, the output was as expected, so this was inconsistent. The 'not anypats()' check is enforced by an existing test around line 140: $ hg remove -I 're:.*.txt' sub1 Without the check, this removed all of the files in the subrepo.
Sun, 17 May 2015 01:06:10 -0400 context: don't complain about a matcher's subrepo paths in changectx.walk() stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 May 2015 01:06:10 -0400] rev 25193
context: don't complain about a matcher's subrepo paths in changectx.walk() Previously, the first added test printed the following: $ hg files -S -r '.^' sub1/sub2/folder sub1/sub2/folder: no such file in rev 9bb10eebee29 sub1/sub2/folder: no such file in rev 9bb10eebee29 sub1/sub2/folder/test.txt One warning occured each time a subrepo was crossed into. The second test ensures that the matcher copy stays in place. Without the copy, the bad() function becomes an increasingly longer chain, and no message would be printed out for a file missing in the subrepo because the predicate would match in one of the replaced methods. Manifest doesn't know anything about subrepos, so it needs help ignoring subrepos when complaining about bad files.
Mon, 18 May 2015 22:35:27 -0500 ssh: capture output with bundle2 again (issue4642) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 22:35:27 -0500] rev 25192
ssh: capture output with bundle2 again (issue4642) I just discovered that we are not displaying ssh server output in real time anymore. So we can just fall back to the bundle2 output capture for now. This fix the race condition issue we where seeing in tests. Re-instating real time output for ssh would fix the issue too but lets get the test to pass first.
Fri, 24 Apr 2015 14:30:30 -0700 revset: optimize not public revset
Laurent Charignon <lcharignon@fb.com> [Fri, 24 Apr 2015 14:30:30 -0700] rev 25191
revset: optimize not public revset This patvh speeds up the computation of the not public() changeset and incidentally speed up the computation of divergents() changeset on our big repo by 100x from 50% to 0.5% of the time spent in smartlog with evolve. In this patch we optimize not public() to _notpublic() (new revset) and use the work on phaseset (from the previous commit) to be able to compute _notpublic() quickly. We use a non-lazy approach making the assumption the number of notpublic change will not be in the order of magnitude of the repo size. Adopting a lazy approach gives a speedup of 5x (vs 100x) only due to the overhead of the code for lazy generation.
Wed, 01 Apr 2015 11:17:17 -0700 phases: add set per phase in C phase computation
Laurent Charignon <lcharignon@fb.com> [Wed, 01 Apr 2015 11:17:17 -0700] rev 25190
phases: add set per phase in C phase computation To speed up the computation of draft(), secret(), divergent(), obsolete() and unstable() we need to have a fast way of getting the list of revisions that are in draft(), secret() or the union of both: not public(). This patch extends the work on phase computation in C and make the phase computation code also return a list of set for each non public phase. Using these sets we can quickly obtain all the revisions of a given phase. We do not return a set for the public phase as we expect it to be roughly the size of the repo. Also, it can be computed easily by substracting the entries in the non public phases from all the revs in the repo.
Fri, 08 May 2015 12:30:51 -0700 match: rename _fmap to _fileroots for clarity
Drew Gottlieb <drgott@google.com> [Fri, 08 May 2015 12:30:51 -0700] rev 25189
match: rename _fmap to _fileroots for clarity fmap isn't a very descriptive name for the set of the match's files.
Wed, 06 May 2015 15:59:35 -0700 match: remove unnecessary optimization where visitdir() returns 'all'
Drew Gottlieb <drgott@google.com> [Wed, 06 May 2015 15:59:35 -0700] rev 25188
match: remove unnecessary optimization where visitdir() returns 'all' Match's visitdir() was prematurely optimized to return 'all' in some cases, so that the caller would not have to call it for directories within the current directory. This change makes the visitdir system less flexible for future changes, such as making visitdir consider the match's include and exclude patterns. As a demonstration of this optimization not actually improving performance, I ran 'hg files -r . media' on the Mozilla repository, stored as treemanifest revlogs. With best of ten tries, the command took 1.07s both with and without the optimization, even though the optimization reduced the calls from visitdir() from 987 to 51.
Thu, 16 Apr 2015 17:12:33 -0400 dispatch: add support for python-flamegraph[0] profiling
Augie Fackler <augie@google.com> [Thu, 16 Apr 2015 17:12:33 -0400] rev 25187
dispatch: add support for python-flamegraph[0] profiling This gives us nicer svg flame graphs for output, which can make understanding some types of performance problems significantly easier. 0: https://github.com/evanhempel/python-flamegraph/
Tue, 28 Apr 2015 16:44:37 -0400 extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com> [Tue, 28 Apr 2015 16:44:37 -0400] rev 25186
extensions: document that `testedwith = 'internal'` is special Extension authors (notably at companies using hg) have been cargo-culting the `testedwith = 'internal'` bit from hg's own extensions, which then defeats our "file bugs over here" logic in dispatch. Let's be more aggressive about trying to give extension authors a hint about what testedwith should say.
Fri, 10 Apr 2015 23:12:33 -0700 treemanifest: cache directory logs and manifests
Martin von Zweigbergk <martinvonz@google.com> [Fri, 10 Apr 2015 23:12:33 -0700] rev 25185
treemanifest: cache directory logs and manifests Since manifests instances are cached on the manifest log instance, we can cache directory manifests by caching the directory manifest logs. The directory manifest log cache is a plain dict, so it never expires; we assume that we can keep all the directories in memory. The cache is kept on the root manifestlog, so access to directory manifest logs now has to go through the root manifest log. The caching will soon not be only an optimization. When we start lazily loading directory manifests, we need to make sure we don't create multiple instances of the log objects. The caching takes care of that problem.
Mon, 18 May 2015 15:40:23 -0500 hook: drop dedicated catch for 'KeyboardInterrupt'
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 15:40:23 -0500] rev 25184
hook: drop dedicated catch for 'KeyboardInterrupt' This is no longer under 'Exception' in Python 2.6.
Mon, 18 May 2015 15:38:24 -0500 recover: catch any exception, not just Exception
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 15:38:24 -0500] rev 25183
recover: catch any exception, not just Exception We want recover to be rock solid.
Mon, 18 May 2015 15:33:21 -0500 exchange: catch down to BaseException when handling bundle2
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 15:33:21 -0500] rev 25182
exchange: catch down to BaseException when handling bundle2 We can now catch more things.
Mon, 18 May 2015 13:23:14 -0500 bundle2: use BaseException in bundle2
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 13:23:14 -0500] rev 25181
bundle2: use BaseException in bundle2 We can ensure we fail over properly in more cases.
Mon, 18 May 2015 13:20:19 -0500 check-code: drop ban of BaseException
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 13:20:19 -0500] rev 25180
check-code: drop ban of BaseException Lets go back to the basic. It is available in Python 2.6.
Mon, 18 May 2015 13:25:07 -0500 wireproto: turn an 'except' into a 'finally' as suggest by the comment
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 13:25:07 -0500] rev 25179
wireproto: turn an 'except' into a 'finally' as suggest by the comment Look! More hidden footprints!
Mon, 18 May 2015 12:56:59 -0500 check-code: drop the yield inside try/finally ban
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 12:56:59 -0500] rev 25178
check-code: drop the yield inside try/finally ban This is now possible with Python 2.6.
Mon, 18 May 2015 15:34:42 -0400 run-tests: resurrect the wifexited polyfill (backout 6ab5a1c9ea3c)
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 May 2015 15:34:42 -0400] rev 25177
run-tests: resurrect the wifexited polyfill (backout 6ab5a1c9ea3c) Python 2.7.3 on Windows doesn't have os.WIFEXITED, and the test output looked like this before I interrupted it. $ ./run-tests.py --local -j2 -t700 EEEEEEEEEEEEEEEEEEEEEE
Mon, 18 May 2015 02:53:08 +0900 tests: check import cycles in hgext/**.py, too
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 May 2015 02:53:08 +0900] rev 25176
tests: check import cycles in hgext/**.py, too It is important to realize existing cycles in hgext/**.py.
Mon, 18 May 2015 02:52:58 +0900 import-checker: don't treat modules as relative one if not found
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 May 2015 02:52:58 +0900] rev 25175
import-checker: don't treat modules as relative one if not found The previous patch ensures all module names are recorded in `imports` as absolute names, so we no longer need to treat modules as ones imported relatively from the target source if they appear to not be from the stdlib.
Mon, 18 May 2015 02:52:55 +0900 import-checker: make imported_modules yield absolute dotted_name_of_path
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 May 2015 02:52:55 +0900] rev 25174
import-checker: make imported_modules yield absolute dotted_name_of_path This patch makes `imported_modules()` always yield absolute `dotted_name_of_path()`-ed name by strict detection with `fromlocal()`. This change improves circular detection in some points: - locally defined modules, of which name collides against one of standard library, can be examined correctly For example, circular import related to `commands` is overlooked before this patch. - names not useful for circular detection are ignored Names below are also yielded before this patch: - module names of standard library (= not locally defined one) - non-module names (e.g. `node.nullid` of `from node import nullid`) These redundant names decrease performance of circular detection. For example, with files at 1ef96a3b8b89, average loops per file in `checkmod()` is reduced from 165 to 109. - `__init__` can be handled correctly in `checkmod()` For example, current implementation has problems below: - `from xxx import yyy` doesn't recognize `xxx.__init__` as imported - `xxx.__init__` imported via `import xxx` is treated as `xxx`, and circular detection is aborted, because `key` of such module name is not `xxx` but `xxx.__init__` - it is easy to enhance for `from . import xxx` style or so (in the future) Module name detection in `imported_modules()` can use information in `ast.ImportFrom` fully. It is assumed that all locally defined modules are correctly specified to `import-checker.py` at once. Strictly speaking, when `from foo.bar.baz import module1` imports `foo.bar.baz.module1` module, current `imported_modules()` yields only `foo.bar.baz.__init__`, even though also `foo.__init__` and `foo.bar.__init__` should be yielded to detect circular import exactly. But this limitation is reasonable one for improvement in this patch, because current `__init__` files in Mercurial seems to be implemented carefully.
Mon, 18 May 2015 02:50:22 +0900 import-checker: add utility to examine what module is imported easily
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 18 May 2015 02:50:22 +0900] rev 25173
import-checker: add utility to examine what module is imported easily `fromlocalfunc()` uses: - `modulename` (of the target source) to compose absolute module name imported relatively from it It is assumed that `modulename` is an `dotted_name_of_path()`-ed source file, which may have `.__init__` at the end of it. This assumption makes composing `prefix` of relative name easy. - `localmods` to examine whether there is a locally defined (= Mercurial specific) module matching against the specified name It is assumed that module names not existing in `localmods` are ones of Python standard library.
Mon, 18 May 2015 12:31:41 -0500 subrepo: further replacement of try/except with 'next'
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 12:31:41 -0500] rev 25172
subrepo: further replacement of try/except with 'next' Burn StopIteration, Burn!
Mon, 18 May 2015 12:27:15 -0500 parsers: use 'next' instead of try/except
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 12:27:15 -0500] rev 25171
parsers: use 'next' instead of try/except This get rid of another StopIteration abomination. The change in self.current value is supposed to not matter as nobody should be calling '_advance' after that (as per Matt wisdom).
Mon, 18 May 2015 12:22:44 -0500 dagparser: use 'next' instead of try/except for default value
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 12:22:44 -0500] rev 25170
dagparser: use 'next' instead of try/except for default value "Ich liebe es wenn ein Plan funktioniert."
Mon, 18 May 2015 12:18:00 -0500 getlogrevs: rewrite a loop to get read of try/except
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 12:18:00 -0500] rev 25169
getlogrevs: rewrite a loop to get read of try/except Get rid of the 'except StopIteration' abomination.
Mon, 18 May 2015 12:17:08 -0500 _makelogrevset: replace try/except with 'next' usage
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 May 2015 12:17:08 -0500] rev 25168
_makelogrevset: replace try/except with 'next' usage More readable without the 'except StopIteration' abomination.
Sat, 16 May 2015 15:46:54 -0700 ignore: move readpatternfile to match.py
Durham Goode <durham@fb.com> [Sat, 16 May 2015 15:46:54 -0700] rev 25167
ignore: move readpatternfile to match.py In preparation for adding 'include:' rule support to match.py, let's move the pattern file reader function to match.py
Sat, 16 May 2015 15:45:46 -0700 ignore: rename readignorefile to readpatternfile
Durham Goode <durham@fb.com> [Sat, 16 May 2015 15:45:46 -0700] rev 25166
ignore: rename readignorefile to readpatternfile A future commit will move the readignorefile logic into match.py so it can be used from general match rules. Let's rename the function to represent this new behavior.
Sat, 16 May 2015 15:45:06 -0700 ignore: combine readignorefile and _ignorefile
Durham Goode <durham@fb.com> [Sat, 16 May 2015 15:45:06 -0700] rev 25165
ignore: combine readignorefile and _ignorefile _ignorefile did nothing except open the file. Let's combine it with readignorefile for simplicity. This will make it easier to rename and move to match.py in upcoming patches.
Sat, 16 May 2015 15:37:59 -0700 ignore: move bad file handling out of readignorefile
Durham Goode <durham@fb.com> [Sat, 16 May 2015 15:37:59 -0700] rev 25164
ignore: move bad file handling out of readignorefile In preparation for moving readignorefile to match.py to make it more generally usable, let's move the bad ignore file handling up to the ignore specific logic.
Sat, 16 May 2015 15:24:43 -0700 ignore: remove .hgignore from ignore list if nonexistent
Durham Goode <durham@fb.com> [Sat, 16 May 2015 15:24:43 -0700] rev 25163
ignore: remove .hgignore from ignore list if nonexistent Previously we would always pass the root .hgignore path to the ignore parser. The parser then had to be aware that the first path was special, and not warn if it didn't exist. In preparation for making the ignore file parser more generically usable, let's make the parse logic not aware of this special case, and instead just not pass the root .hgignore in if it doesn't exist.
Sun, 17 May 2015 21:47:18 -0400 run-tests: replace open-coded .decode()s on paths with a helper (issue4667)
Augie Fackler <augie@google.com> [Sun, 17 May 2015 21:47:18 -0400] rev 25162
run-tests: replace open-coded .decode()s on paths with a helper (issue4667) This also cleans up the mkdtemp code mentioned in the previous patch. At this point, the remaining callsites of .{en,de)code() are in the following categories: Handling escaped lines in .t files ----------------------------------- It seems eminently reasonable to me for us to declare that .t files are valid utf-8, and that any escape sequences we see in .t files should be valid unicode_escape sequences. Making error text safe for cdata blocks for xml error reports ------------------------------------------------------------- This is a point where we're already basically screwed, and we're simply trying to do something "good enough" that the xml output will be vaguely useful to the user. Punting here seems fine, and we should probably stick to the same encoding here that we used in the previous section.
Sun, 17 May 2015 21:40:12 -0400 run-tests: move unicode-to-bytes operations on paths to a helper (issue4667)
Augie Fackler <augie@google.com> [Sun, 17 May 2015 21:40:12 -0400] rev 25161
run-tests: move unicode-to-bytes operations on paths to a helper (issue4667) This doesn't fix the probably-wrong utf-8 encoding choice, it just starts the process of encapsulating all the path handling in run-tests in a single place. One known-path use of .encode() remains: it's related to use of mkdtemp, and it will be fixed in a followup patch once we have a companion _strpath() helper function to go from bytes to a str, as we need to file a bug about mkdtemp upstream.
Sun, 17 May 2015 21:26:04 -0400 run-tests: insist that if people use Python 3, they use 3.5.x
Augie Fackler <augie@google.com> [Sun, 17 May 2015 21:26:04 -0400] rev 25160
run-tests: insist that if people use Python 3, they use 3.5.x We depend on both stdlib functionality (difflib.diff_bytes) and language behavior (bytes formatting) introduced in 3.5, so let's try and prevent some useless bug reports before they happen.
Sun, 17 May 2015 21:18:56 -0400 run-tests: move all open-coded sys.version_info checks to PYTHON3 (issue4668)
Augie Fackler <augie@google.com> [Sun, 17 May 2015 21:18:56 -0400] rev 25159
run-tests: move all open-coded sys.version_info checks to PYTHON3 (issue4668) This consolidates all version checking in a single place and helps the code read more obviously.
Sun, 17 May 2015 21:17:13 -0400 run-tests: prefer PYTHON3 constant to many version_info checks (issue4668)
Augie Fackler <augie@google.com> [Sun, 17 May 2015 21:17:13 -0400] rev 25158
run-tests: prefer PYTHON3 constant to many version_info checks (issue4668) We only support Python 2.6, 2.7, and 3.5 here, so we can simplify the code and improve the warning.
Sun, 17 May 2015 21:12:33 -0400 run-tests: introduce PYTHON3 boolean constant (issue4668)
Augie Fackler <augie@google.com> [Sun, 17 May 2015 21:12:33 -0400] rev 25157
run-tests: introduce PYTHON3 boolean constant (issue4668) This will avoid open-coding lots of version_info checks later in the file.
Sun, 17 May 2015 21:15:45 -0400 run-tests: drop subprocess _cleanup monkeypatch
Augie Fackler <augie@google.com> [Sun, 17 May 2015 21:15:45 -0400] rev 25156
run-tests: drop subprocess _cleanup monkeypatch This was working around a defect in subprocess in Python 2.5, which we no longer need to worry about.
Sun, 17 May 2015 21:15:04 -0400 run-tests: drop wifexited polyfill
Augie Fackler <augie@google.com> [Sun, 17 May 2015 21:15:04 -0400] rev 25155
run-tests: drop wifexited polyfill os.WIFEXITED exists as of python 2.6 for me, so we no longer need this polyfill.
Mon, 18 May 2015 11:43:10 -0400 test-import: update for no-execbit platforms with 1ef96a3b8b89
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 May 2015 11:43:10 -0400] rev 25154
test-import: update for no-execbit platforms with 1ef96a3b8b89
Mon, 18 May 2015 11:37:29 -0400 test-treemanifest: add globs for Windows
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 May 2015 11:37:29 -0400] rev 25153
test-treemanifest: add globs for Windows
Sat, 16 May 2015 14:37:24 -0400 util: drop any() and all() polyfills
Augie Fackler <augie@google.com> [Sat, 16 May 2015 14:37:24 -0400] rev 25152
util: drop any() and all() polyfills
Sat, 16 May 2015 14:34:19 -0400 cleanup: use __builtins__.all instead of util.all
Augie Fackler <augie@google.com> [Sat, 16 May 2015 14:34:19 -0400] rev 25151
cleanup: use __builtins__.all instead of util.all
Sat, 16 May 2015 14:34:04 -0400 check-code: un-ban __builtins__.all now that we're on 2.6
Augie Fackler <augie@google.com> [Sat, 16 May 2015 14:34:04 -0400] rev 25150
check-code: un-ban __builtins__.all now that we're on 2.6
Sat, 16 May 2015 14:30:07 -0400 cleanup: use __builtins__.any instead of util.any
Augie Fackler <augie@google.com> [Sat, 16 May 2015 14:30:07 -0400] rev 25149
cleanup: use __builtins__.any instead of util.any any() is available in all Python versions we support now.
Sat, 16 May 2015 14:31:03 -0400 check-code: un-ban any() now that we're on 2.6
Augie Fackler <augie@google.com> [Sat, 16 May 2015 14:31:03 -0400] rev 25148
check-code: un-ban any() now that we're on 2.6
Sun, 17 May 2015 18:11:02 -0700 walkchangerevs: replace try/except with 'next'
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 May 2015 18:11:02 -0700] rev 25147
walkchangerevs: replace try/except with 'next' Again, this make the code clearer.
Sun, 17 May 2015 18:06:09 -0700 generatorset: use 'next()' to simplify the code
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 May 2015 18:06:09 -0700] rev 25146
generatorset: use 'next()' to simplify the code The 'next()' built-in accept a default value. This remove the needs to check if self non-empty before returning a value.
Sun, 17 May 2015 18:00:38 -0700 revset: use 'next()' to detect end of iteration in 'last'
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 May 2015 18:00:38 -0700] rev 25145
revset: use 'next()' to detect end of iteration in 'last' The 'next()' built-in can return a default value, allow to get rid of the confusing try/except code flow.
Sun, 17 May 2015 17:58:39 -0700 revset: use 'next()' to detect end of iteration in 'limit'
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 May 2015 17:58:39 -0700] rev 25144
revset: use 'next()' to detect end of iteration in 'limit' The 'next()' built-in can return a default value, allow to get rid of the confusing try/except code flow.
Sun, 17 May 2015 17:54:58 -0700 _revancestors: use 'next' to remove the verbose try except clauses
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 May 2015 17:54:58 -0700] rev 25143
_revancestors: use 'next' to remove the verbose try except clauses The 'next()' built-in can return a default value, making the final iteration case simpler and clearer.
Sun, 17 May 2015 17:47:42 -0700 check-code: lift the ban on 'next()'
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 May 2015 17:47:42 -0700] rev 25142
check-code: lift the ban on 'next()' 'next' is supported by Python2.6 the new lowest version supported by Mercurial.
Sun, 17 May 2015 17:45:47 -0700 check-code: drop the 'isdisjoint' ban
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 May 2015 17:45:47 -0700] rev 25141
check-code: drop the 'isdisjoint' ban 'isdisjoint' is available in Python 2.6. The new lowest supported version.
Sun, 17 May 2015 17:40:26 -0700 check-code: fix the error message about 'class foo():'
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 May 2015 17:40:26 -0700] rev 25140
check-code: fix the error message about 'class foo():' Using 'classs foo():' result in old style object instead of new style object. We do not want old style object so this check is unrelated to 2.4.
Sun, 17 May 2015 17:36:26 -0700 check-code: remove the check for os.path.relpath
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 May 2015 17:36:26 -0700] rev 25139
check-code: remove the check for os.path.relpath This is available in Python2.6 the new default supported release.
Sun, 17 May 2015 17:27:10 -0700 patch: remove duplicated import of cStringIO
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 May 2015 17:27:10 -0700] rev 25138
patch: remove duplicated import of cStringIO It is already imported a couple of line above.
Mon, 18 May 2015 11:36:33 -0400 check-commit: print limit when user has a too-long summary
Augie Fackler <augie@google.com> [Mon, 18 May 2015 11:36:33 -0400] rev 25137
check-commit: print limit when user has a too-long summary
Fri, 15 May 2015 20:04:24 +0800 paper: show branch/tags/bookmarks when blaming (issue3559)
Anton Shestakov <engored@ya.ru> [Fri, 15 May 2015 20:04:24 +0800] rev 25136
paper: show branch/tags/bookmarks when blaming (issue3559)
Fri, 15 May 2015 20:03:42 +0800 paper: show branch/tags/bookmarks when comparing (issue3559)
Anton Shestakov <engored@ya.ru> [Fri, 15 May 2015 20:03:42 +0800] rev 25135
paper: show branch/tags/bookmarks when comparing (issue3559)
Fri, 15 May 2015 20:02:41 +0800 paper: show branch/tags/bookmarks when diffing (issue3559)
Anton Shestakov <engored@ya.ru> [Fri, 15 May 2015 20:02:41 +0800] rev 25134
paper: show branch/tags/bookmarks when diffing (issue3559)
Fri, 15 May 2015 20:00:47 +0800 paper: show branch/tags/bookmarks when viewing (issue3559)
Anton Shestakov <engored@ya.ru> [Fri, 15 May 2015 20:00:47 +0800] rev 25133
paper: show branch/tags/bookmarks when viewing (issue3559)
Fri, 15 May 2015 18:17:36 +0800 paper: show branch/tags/bookmarks when browsing (issue3559)
Anton Shestakov <engored@ya.ru> [Fri, 15 May 2015 18:17:36 +0800] rev 25132
paper: show branch/tags/bookmarks when browsing (issue3559) Browse (or manifest) action allows browsing the directory structure at some specified revision. In gitweb and monoblue styles, the revision header already has branch/tag/bookmark information for the revision, but in paper style this header was only showing tags. This patch adds branches and bookmarks. Branch name needs to be obtained in this special way to be consistent with regular changeset page, where in paper style default branch is never shown.
Sat, 16 May 2015 21:42:09 +0900 revset: extract addset._iterordered to free function
Yuya Nishihara <yuya@tcha.org> [Sat, 16 May 2015 21:42:09 +0900] rev 25131
revset: extract addset._iterordered to free function It never uses self, so let's make it less dependent on variables.
Sat, 16 May 2015 14:05:02 +0900 revset: use fastasc/fastdesc switch consistently in addset.__iter__
Yuya Nishihara <yuya@tcha.org> [Sat, 16 May 2015 14:05:02 +0900] rev 25130
revset: use fastasc/fastdesc switch consistently in addset.__iter__
Mon, 30 Mar 2015 20:56:37 +0900 revset: drop redundant filteredset from right-hand side set of "or" operation
Yuya Nishihara <yuya@tcha.org> [Mon, 30 Mar 2015 20:56:37 +0900] rev 25129
revset: drop redundant filteredset from right-hand side set of "or" operation Since 5548f558db3d, it should no longer be necessary because the addset can remove duplicates correctly.
Sun, 10 May 2015 05:11:13 -0700 getbundle: sort bundlecaps before exchanging then over the wire
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 10 May 2015 05:11:13 -0700] rev 25128
getbundle: sort bundlecaps before exchanging then over the wire The 'bundlecaps' argument is built as a set, we need to stabilise the order before exchanging them. Otherwise, in the test, http logs are unstable when the 'bundlecaps' contains something (eg: using bundle2).
Sun, 10 May 2015 04:39:11 -0700 hg-ssh: reject push earlier (on pretxnopen)
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 10 May 2015 04:39:11 -0700] rev 25127
hg-ssh: reject push earlier (on pretxnopen) We now have a lock triggered for any transaction. We use it to ensure no-read are made in read-only mode. We need more that just "no changegroup is added", since bundle2 allows for more than just changegroup to be exchanged. We still protect pushkey as it may write data without opening a transaction.
Sun, 10 May 2015 03:06:00 -0700 test: test both bundle1 and bundle2 paths in 'test-push-hook-lock.t'
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 10 May 2015 03:06:00 -0700] rev 25126
test: test both bundle1 and bundle2 paths in 'test-push-hook-lock.t' The locking scheme is a bit different in each cases. So we explicitly test each case.
Sat, 09 May 2015 23:40:40 -0700 progress: get the extremely verbose output out of default debug
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 09 May 2015 23:40:40 -0700] rev 25125
progress: get the extremely verbose output out of default debug When the progress extension is not enabled, each call to 'ui.progress' used to issue a debug message. This results is a very verbose output and often redundant in tests. Dropping it makes tests less volatile to factor they do not meant to test. We had to alter the sed trick in 'test-rename-merge2.t'. Sed is used to drop all output from a certain point and hidding the progress output remove its anchor. So we anchor on something else.
Fri, 15 May 2015 11:52:39 +0800 hgweb: show changeset branches/tags/bookmarks in file log (style=monoblue)
Anton Shestakov <engored@ya.ru> [Fri, 15 May 2015 11:52:39 +0800] rev 25124
hgweb: show changeset branches/tags/bookmarks in file log (style=monoblue) As for the gitweb style, this line for filelogentry template is copied from shortlogentry. No change to python code is needed. Tests are unaffected.
Fri, 15 May 2015 11:42:09 +0800 hgweb: show changeset branches/tags/bookmarks in file log (style=gitweb)
Anton Shestakov <engored@ya.ru> [Fri, 15 May 2015 11:42:09 +0800] rev 25123
hgweb: show changeset branches/tags/bookmarks in file log (style=gitweb) This line for filelogentry template is copied from shortlogentry. The information is already displayed in paper style, so no change to python code is needed. Tests are unaffected.
Sat, 16 May 2015 00:36:35 -0400 match: resolve filesets in subrepos for commands given the '-S' argument
Matt Harbison <matt_harbison@yahoo.com> [Sat, 16 May 2015 00:36:35 -0400] rev 25122
match: resolve filesets in subrepos for commands given the '-S' argument This will work for any command that creates its matcher via scmutil.match(), but only the files command is tested here (both workingctx and basectx based tests). The previous behavior was to completely ignore the files in the subrepo, even though -S was given. My first attempt was to teach context.walk() to optionally recurse, but once that was in place and the complete file list was built up, the predicate test would fail with 'path in nested repo' when a file in a subrepo was accessed through the parent context. There are two slightly surprising behaviors with this functionality. First, any path provided inside the fileset isn't narrowed when it is passed to the subrepo. I dont see any clean way to do that in the matcher. Fortunately, the 'subrepo()' fileset is the only one to take a path. The second surprise is that status predicates are resolved against the subrepo, not the parent like 'hg status -S' is. I don't see any way to fix that either, given the path auditor error mentioned above.
Fri, 15 May 2015 23:13:05 -0400 subrepo: introduce getfileset()
Matt Harbison <matt_harbison@yahoo.com> [Fri, 15 May 2015 23:13:05 -0400] rev 25121
subrepo: introduce getfileset() This will be used in the next patch to help matchers resolve filesets in subrepos. The default implementation returns an empty set (for git and svn).
Fri, 15 May 2015 09:46:21 +0200 phase: default to current revision if no rev is provided (issue4666)
Gilles Moris <gilles.moris@free.fr> [Fri, 15 May 2015 09:46:21 +0200] rev 25120
phase: default to current revision if no rev is provided (issue4666)
Sun, 12 Apr 2015 23:51:06 -0700 treemanifest: add --dir option to debug{revlog,data,index}
Martin von Zweigbergk <martinvonz@google.com> [Sun, 12 Apr 2015 23:51:06 -0700] rev 25119
treemanifest: add --dir option to debug{revlog,data,index} It should be possible to debug the submanifest revlogs without having to know where they are stored (in .hg/store/meta/), so let's add a --dir option for this purpose.
Sun, 10 May 2015 06:48:08 -0700 obsolete: sort obsmarkers during exchange
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 10 May 2015 06:48:08 -0700] rev 25118
obsolete: sort obsmarkers during exchange Because bundle2 allows a more precise exchange of obsmarkers during pull, it sends them in a different order (previously unstable because of sets.) As a result, they are added to the repository in a different order. To stabilize the order and ensure tests are unchanged when moving from bundle1 to bundle2 we sort markers when exchanging them. In the long run, the obsstore will probably not use a linear storage.
Tue, 21 Apr 2015 12:01:34 +0200 test-discovery-legacy: disable bundle2 for legacy test
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 21 Apr 2015 12:01:34 +0200] rev 25117
test-discovery-legacy: disable bundle2 for legacy test We need to disable the "bundle2" capability to ensure we stay on legacy capability.
Tue, 21 Apr 2015 11:18:47 +0200 test-discovery: disable bundle2 for legacy test (issue4610)
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 21 Apr 2015 11:18:47 +0200] rev 25116
test-discovery: disable bundle2 for legacy test (issue4610) We need to disable the "bundle2" capability to ensure we stay on legacy capability.
Fri, 15 May 2015 00:25:43 -0700 revset: fix iteration over ordered addset composed of non-ordered operands
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 May 2015 00:25:43 -0700] rev 25115
revset: fix iteration over ordered addset composed of non-ordered operands Before this change, doing ordered iteration over an 'addset' object composed of operands without fastasc or fastdesc method could result in duplicated entries. This was the result of applying '_iterordered' on an unordered set. We fix it by ensuring we iterate over the set in a sorted order. Using the fast iterator when it exists on any operand. We kill the '_iterator' method in the process because it did not make a lot of sense independently. Thanks goes to Yuya Nishihara for reporting the issue and analysing the cause.
Fri, 15 May 2015 15:43:26 -0700 match: add match.ispartial()
Drew Gottlieb <drgott@google.com> [Fri, 15 May 2015 15:43:26 -0700] rev 25114
match: add match.ispartial() match.ispartial() will return the opposite of match.always() in core, but this function will be extensible by extensions to produce another result even if match.always() will be untouched. This will be useful for narrowhg, where ispartial() will return False even if the match won't always match. This would happen in the case where the only time the match function is False is when the path is outside of the narrow spec.
Sat, 16 May 2015 11:28:04 -0700 util: drop alias for collections.deque
Martin von Zweigbergk <martinvonz@google.com> [Sat, 16 May 2015 11:28:04 -0700] rev 25113
util: drop alias for collections.deque Now that util.deque is just an alias for collections.deque, let's just remove it.
Sat, 16 May 2015 09:03:21 +0200 util: kill Python 2.4 deque.remove hack
Adrian Buehlmann <adrian@cadifra.com> [Sat, 16 May 2015 09:03:21 +0200] rev 25112
util: kill Python 2.4 deque.remove hack
Thu, 14 May 2015 17:38:38 +0200 summary: add a phase line (draft, secret) to the output
Gilles Moris <gilles.moris@free.fr> [Thu, 14 May 2015 17:38:38 +0200] rev 25111
summary: add a phase line (draft, secret) to the output The number of draft and secret changesets are currently not summarized. This is an important information because the number of drafts give some rough idea of the number of outgoing changesets in typical workflows, without needing to probe a remote repository. And a non-zero number of secrets means that those changeset will not be pushed. If the repository is "dirty" - some draft or secret changesets exists - then summary will display a line like: phases: X draft, Y secret (public) The phase in parenthesis corresponds to the highest phase of the parents of the working directory, i.e. the current phase. By default, the line is not printed if the repository is "clean" - all changesets are public - but if verbose is activated, it will display: phases: (public) On the other hand, nothing will be printed if quiet is in action. A few tests have been added in test-phases.t to cover the -v and -q cases.
Fri, 15 May 2015 12:19:51 +0800 hgweb: also display changeset bookmarks in file log (style=paper)
Anton Shestakov <engored@ya.ru> [Fri, 15 May 2015 12:19:51 +0800] rev 25110
hgweb: also display changeset bookmarks in file log (style=paper) There already are branches and tags in file log, now let's add what's been missing: bookmarks. Also, since coal borrows this template from paper, this change is effective for coal as well.
Fri, 15 May 2015 13:30:34 +0800 tests: test branch/tag/bookmark display in test-hgweb-filelog.t
Anton Shestakov <engored@ya.ru> [Fri, 15 May 2015 13:30:34 +0800] rev 25109
tests: test branch/tag/bookmark display in test-hgweb-filelog.t Displaying branches, tags and bookmarks is an obviously important feature of hgweb and should be tested a bit more than not at all, so let's add a branch, a tag and a bookmark to the test. With this change it's evident that the default style (paper) doesn't show bookmarks in filelog. Future patch will fix this.
Fri, 15 May 2015 02:07:43 +0800 hgweb: split some long lines in paper, gitweb and monoblue styles
Anton Shestakov <engored@ya.ru> [Fri, 15 May 2015 02:07:43 +0800] rev 25108
hgweb: split some long lines in paper, gitweb and monoblue styles This will ease future patches for the templates. As a result of this patch, paper style has one visual change in log/shortlog/file log view: the spacing between commit message and the first tag (or branch name, or bookmark) is now roughly who spaces wide instead of one space wide. This spacing is consistent with the one between branch names/tags/bookmarks themselves, so it looks better. In gitweb style, the change from non-breakable space to regular space is consistent with other elements. In monoblue the change is not noticeable.
Wed, 13 May 2015 11:22:06 -0700 run-tests: add a --profile-runner option
Augie Fackler <augie@google.com> [Wed, 13 May 2015 11:22:06 -0700] rev 25107
run-tests: add a --profile-runner option While in the throes of a recent run-tests adventure, I found it useful to have profiler output for the testrunner itself. Adding it was simple enough and seems worth keeping around.
Fri, 15 May 2015 10:24:59 +0200 test-http: drop compatibility check on Python >= 2.4.3
Gilles Moris <gilles.moris@free.fr> [Fri, 15 May 2015 10:24:59 +0200] rev 25106
test-http: drop compatibility check on Python >= 2.4.3 This is obsolete now that Python < 2.6 is no more supported. This is thus a backout of c499fff76440.
Fri, 15 May 2015 22:38:24 +0900 revset: remove unused 'only' from methods table
Yuya Nishihara <yuya@tcha.org> [Fri, 15 May 2015 22:38:24 +0900] rev 25105
revset: remove unused 'only' from methods table The infix 'only' operator is mapped to 'only()' function by optimize(), so it won't be looked up as a method. The test shows it.
Tue, 14 Apr 2015 16:23:54 -0400 shelve: allow --patch and --stat without --list for a single shelf
Tony Tung <tonytung@fb.com> [Tue, 14 Apr 2015 16:23:54 -0400] rev 25104
shelve: allow --patch and --stat without --list for a single shelf It's annoying having to specify --list and --patch/--stat when all you really want to do is to dump a patch. This creates an explicit --patch/--stat command that is executed if --list is not specified. It ensures that 1) there is only one shelf name specified and 2) that the shelf exists. Then it redirects to the original listcmd code.
Tue, 14 Apr 2015 16:23:07 -0400 shelve: refactor allowables to specify sets of valid operations
Tony Tung <tonytung@fb.com> [Tue, 14 Apr 2015 16:23:07 -0400] rev 25103
shelve: refactor allowables to specify sets of valid operations This will allow us to have --patch and --stat as standalone operations that don't require --list, as well as pairing them with --list.
Fri, 15 May 2015 11:52:09 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 11:52:09 -0500] rev 25102
merge with stable
Thu, 14 May 2015 21:35:06 -0700 rebase: check that the bookmark is still valid when restoring (issue4669) stable
Tony Tung <tonytung@fb.com> [Thu, 14 May 2015 21:35:06 -0700] rev 25101
rebase: check that the bookmark is still valid when restoring (issue4669) After a rebase --abort, we attempt to restore the previously active bookmark. We need to ensure that the bookmark still exists.
Tue, 14 Apr 2015 12:53:48 -0700 bookmarks: rename current to active in variables and comments
Ryan McElroy <rmcelroy@fb.com> [Tue, 14 Apr 2015 12:53:48 -0700] rev 25100
bookmarks: rename current to active in variables and comments Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
Thu, 14 May 2015 21:34:46 -0700 rebase: remove extraneous blank at the end of file
Tony Tung <tonytung@fb.com> [Thu, 14 May 2015 21:34:46 -0700] rev 25099
rebase: remove extraneous blank at the end of file
Thu, 07 May 2015 23:40:29 -0700 run-tests: include 'start' and 'end' in --time output
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 May 2015 23:40:29 -0700] rev 25098
run-tests: include 'start' and 'end' in --time output This is useful information to understand what is taking time in tests. Both are included because I can see myself sorting this output using shell script. Having both data makes it much easier than extracting 'start'+'real'.
Thu, 07 May 2015 23:34:58 -0700 run-tests: track start and end time of tests
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 May 2015 23:34:58 -0700] rev 25097
run-tests: track start and end time of tests We currently have information about how long each test took, but we have no data about their actual scheduling. So we now track when a test started and stopped (in the referential of the whole tests run) to expose this information. The data is currently in the json only because the json output is meant to be extensible. Later changeset will includes this data in the text output and we will be happy to bikeshed its formating there. Yes, "end" is actually just "start" + "time", but computing it an including it in the output is simple, cheap and convenient.
Fri, 15 May 2015 09:07:27 -0400 templater: look for mapfiles in template paths
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 15 May 2015 09:07:27 -0400] rev 25096
templater: look for mapfiles in template paths This will allow %include statements to search the default template paths in addition to the directory where the %including file is.
Fri, 15 May 2015 09:04:32 -0400 config: give it an includepaths option for looking for config files
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 15 May 2015 09:04:32 -0400] rev 25095
config: give it an includepaths option for looking for config files It is desirable to "derive" templates from the provided templates. A simple way to do this is e.g. %include map-cmdline.default in your own mapfile. Then you only have to redefine a few templates instead of copying over the whole thing. This %include mechanism already works for the built-in templates because by default it *only* looks for files that are in the same directory as the including mapfile. With this changeset, config grows an option to add more include paths for config files.
Fri, 15 May 2015 22:32:31 +0900 revset: map postfix '%' to only() to optimize operand recursively (issue4670) stable
Yuya Nishihara <yuya@tcha.org> [Fri, 15 May 2015 22:32:31 +0900] rev 25094
revset: map postfix '%' to only() to optimize operand recursively (issue4670) Instead of keeping 'onlypost' as a method, this patch rewrites it to 'only' function. This way, 'x%' always has the same weight as 'only(x)'.
Fri, 08 May 2015 14:13:12 -0700 dirs.c: pass C string, not Python string, to _finddir()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 May 2015 14:13:12 -0700] rev 25093
dirs.c: pass C string, not Python string, to _finddir() The callers already have the C string, and although the PyString_AS_STRING() macro is probably free, this simplifies the code.
Fri, 08 May 2015 14:11:00 -0700 dirs.c: extract 'cpath' variable in _delpath() to match _addpath()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 May 2015 14:11:00 -0700] rev 25092
dirs.c: extract 'cpath' variable in _delpath() to match _addpath() The PyString_AS_STRING() macro is probably free, but this makes _delpath() more similar to _addpath() and simplifies the next patch.
Mon, 13 Apr 2015 23:21:02 -0700 treemanifest: store submanifest revlog per directory
Martin von Zweigbergk <martinvonz@google.com> [Mon, 13 Apr 2015 23:21:02 -0700] rev 25091
treemanifest: store submanifest revlog per directory With this change, when tree manifests are enabled (in .hg/requires), commits will be written with one manifest revlog per directory. The manifest revlogs are stored in .hg/store/meta/$dir/00manifest.[id]. Flat manifests can still be read and interacted with as usual (they are also read into treemanifest instances). The functionality for writing treemanifest as a flat manifest to disk is still left in the code; tests still pass with '_treeinmem=True' hardcoded. Exchange is not yet implemented.
Fri, 15 May 2015 10:29:39 -0500 hghave: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 10:29:39 -0500] rev 25090
hghave: use try/except/finally
Fri, 15 May 2015 10:00:46 -0500 setup: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 10:00:46 -0500] rev 25089
setup: use try/except/finally This will raise a syntax error for people who attempt to use Py2.4, but that's already going to fail and we have no way to keep other 2.6isms from creeping in since we've removed the check-code rules and the buildbot.
Fri, 15 May 2015 09:58:21 -0500 util: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:58:21 -0500] rev 25088
util: use try/except/finally
Fri, 15 May 2015 09:58:02 -0500 tags: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:58:02 -0500] rev 25087
tags: use try/except/finally
Fri, 15 May 2015 09:57:44 -0500 repoview: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:57:44 -0500] rev 25086
repoview: use try/except/finally
Fri, 15 May 2015 09:57:02 -0500 httppeer: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:57:02 -0500] rev 25085
httppeer: use try/except/finally
Fri, 15 May 2015 09:56:43 -0500 hooks: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:56:43 -0500] rev 25084
hooks: use try/except/finally
Fri, 15 May 2015 09:56:27 -0500 hgweb: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:56:27 -0500] rev 25083
hgweb: use try/except/finally
Fri, 15 May 2015 09:56:05 -0500 commands: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:56:05 -0500] rev 25082
commands: use try/except/finally
Fri, 15 May 2015 09:55:47 -0500 bookmarks: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:55:47 -0500] rev 25081
bookmarks: use try/except/finally
Fri, 15 May 2015 09:55:31 -0500 shelve: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:55:31 -0500] rev 25080
shelve: use try/except/finally
Fri, 15 May 2015 09:55:15 -0500 largefiles: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:55:15 -0500] rev 25079
largefiles: use try/except/finally
Fri, 15 May 2015 09:54:56 -0500 factotum: use try/except/finally
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:54:56 -0500] rev 25078
factotum: use try/except/finally
Fri, 15 May 2015 09:54:35 -0500 check-code: drop try/except/finally check
Matt Mackall <mpm@selenic.com> [Fri, 15 May 2015 09:54:35 -0500] rev 25077
check-code: drop try/except/finally check
Thu, 14 May 2015 09:04:48 +0200 util.h: kill no longer needed definitions for Python < 2.6
Adrian Buehlmann <adrian@cadifra.com> [Thu, 14 May 2015 09:04:48 +0200] rev 25076
util.h: kill no longer needed definitions for Python < 2.6 see e1fb276d4619
Thu, 14 May 2015 16:28:28 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 14 May 2015 16:28:28 -0500] rev 25075
merge with stable
Thu, 14 May 2015 11:04:36 +0200 setup: integrate osutil C extension into extmodules initialization
Adrian Buehlmann <adrian@cadifra.com> [Thu, 14 May 2015 11:04:36 +0200] rev 25074
setup: integrate osutil C extension into extmodules initialization
Thu, 14 May 2015 11:04:35 +0200 setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com> [Thu, 14 May 2015 11:04:35 +0200] rev 25073
setup: move osutil_ldflags logic to before extmodules definition
Thu, 14 May 2015 11:04:31 +0200 setup: kill pure hack for osutil on Windows for Python 2.4
Adrian Buehlmann <adrian@cadifra.com> [Thu, 14 May 2015 11:04:31 +0200] rev 25072
setup: kill pure hack for osutil on Windows for Python 2.4 see e1fb276d4619
Thu, 14 May 2015 11:37:36 +0200 windows: add comment in normcase()
Adrian Buehlmann <adrian@cadifra.com> [Thu, 14 May 2015 11:37:36 +0200] rev 25071
windows: add comment in normcase() see also 3c5e818ac679
Sun, 10 May 2015 10:57:24 -0400 rebase: clear merge when aborting before any rebasing (issue4661) stable
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sun, 10 May 2015 10:57:24 -0400] rev 25070
rebase: clear merge when aborting before any rebasing (issue4661) The check of the inrebase function was not correct, and it failed to consider the situation in which nothing has been rebased yet, *and* the working dir had been updated away from the initial revision. But this is easy to fix. Given the rebase state, we know exactly where we should be standing: on the first unrebased commit. We check that instead. I also took the liberty to rename the function, as "inrebase" doesn't really describe the situation: we could still be in a rebase state yet the user somehow forcibly updated to a different revision. We also check that we're in a merge state, since an interrupted merge is the only "safe" way to interrupt a rebase. If the rebase got interrupted by power loss or whatever (so there's no merge state), it's still safer to not blow away the working directory.
Sun, 10 May 2015 10:02:15 -0400 test-rebase-abort: add test from issue4009 stable
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sun, 10 May 2015 10:02:15 -0400] rev 25069
test-rebase-abort: add test from issue4009 The fix for issue4009, namely fe78eb7bcca0, introduced issue4661. Let's make sure that the fix for issue4661 will not reintroduce issue4009.
Fri, 08 May 2015 15:00:07 -0700 run-test.py: greatly increase the priority of 'check-code' tests
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 08 May 2015 15:00:07 -0700] rev 25068
run-test.py: greatly increase the priority of 'check-code' tests As check-code is actually quite long to run for its file size, this prevent them to be scheduled too late during the test run. This reduces my typical test run from 107 seconds to 90 seconds
Fri, 08 May 2015 00:04:07 -0700 run-tests: allow different extra weight for slow tests
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 08 May 2015 00:04:07 -0700] rev 25067
run-tests: allow different extra weight for slow tests The 'test-check-code-hg.t' file is not big enough to be prioritized properly. As a result my tests run often spend about 15 seconds running only it at the end of its tests run. We make the "slow" mechanism a bit smarter to adjust the extra weight of each category independently in a future patch.
Thu, 07 May 2015 21:00:46 -0700 ignore: refactor syntax concatenation
Durham Goode <durham@fb.com> [Thu, 07 May 2015 21:00:46 -0700] rev 25066
ignore: refactor syntax concatenation This refactors the syntax+rule concatenation logic to be more separated. It determines the syntax and the rule separately and then puts them back together. This will help in a later patch when we want to process just the rule before it gets concatenated.
Thu, 07 May 2015 20:57:37 -0700 ignore: refactor file read into a function
Durham Goode <durham@fb.com> [Thu, 07 May 2015 20:57:37 -0700] rev 25065
ignore: refactor file read into a function This refactors the ignore file reading code into a function so that in a future patch we can make it recursive.
Thu, 14 May 2015 01:49:10 +0900 import-checker: loop to get list of locally defined modules at first
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 14 May 2015 01:49:10 +0900] rev 25064
import-checker: loop to get list of locally defined modules at first This is a preparation for subsequent patches, which expect that all locally defined (= mercurial specific) modules are already known before examinations. Looping twice for specified modules is a little redundant, but reasonable cost for improvement in subsequent patches.
Thu, 14 May 2015 01:49:10 +0900 import-checker: add xargs like mode
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 14 May 2015 01:49:10 +0900] rev 25063
import-checker: add xargs like mode Before this patch, "import-check.py" is invoked via "xargs" in "test-module-imports.t", but it doesn't ensure that "import-checker.py" is certainly invoked with all mercurial specific files at once. "xargs" may invoke specified command multiple times with part of arguments given from stdin: according to "xargs(1)" man page, this dividing arguments is system-dependent. This patch adds "xargs" like mode to "import-checker.py". This can ensure that "import-checker.py" is certainly invoked with all mercurial specific files at once in "test-module-imports.t". This is assumed by subsequent patches.
Wed, 13 May 2015 20:36:56 +0200 store: add comment in _hashencode with reason for skipping the first 5 chars
Adrian Buehlmann <adrian@cadifra.com> [Wed, 13 May 2015 20:36:56 +0200] rev 25062
store: add comment in _hashencode with reason for skipping the first 5 chars
Tue, 14 Apr 2015 10:57:15 -0400 test-run-tests: fix for Python 3.5
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 10:57:15 -0400] rev 25061
test-run-tests: fix for Python 3.5 This test now passes in both 3.5 and 2.6.
Tue, 14 Apr 2015 16:09:39 -0400 run-tests: make sure all script lines are bytes
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 16:09:39 -0400] rev 25060
run-tests: make sure all script lines are bytes
Tue, 14 Apr 2015 10:56:58 -0400 run-tests: fix checking a line to see if it needs globbing
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 10:56:58 -0400] rev 25059
run-tests: fix checking a line to see if it needs globbing
Tue, 14 Apr 2015 10:14:49 -0400 run-tests: unblock running python tests in python 3
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 10:14:49 -0400] rev 25058
run-tests: unblock running python tests in python 3 This makes it clear we need to ban os.popen, but we'll do that in a later cleanup.
Mon, 13 Apr 2015 18:07:40 -0400 run-tests: os.popen returns a string, make it bytes again
Augie Fackler <augie@google.com> [Mon, 13 Apr 2015 18:07:40 -0400] rev 25057
run-tests: os.popen returns a string, make it bytes again
Mon, 13 Apr 2015 17:24:10 -0400 run-tests: be more paranoid about os.system using bytes
Augie Fackler <augie@google.com> [Mon, 13 Apr 2015 17:24:10 -0400] rev 25056
run-tests: be more paranoid about os.system using bytes
Mon, 13 Apr 2015 17:17:17 -0400 run-tests: blacklist entries are bytes, use bname to check blacklisting
Augie Fackler <augie@google.com> [Mon, 13 Apr 2015 17:17:17 -0400] rev 25055
run-tests: blacklist entries are bytes, use bname to check blacklisting
Mon, 13 Apr 2015 16:37:53 -0400 test-run-tests.t: work around file.write() returning an int
Augie Fackler <augie@google.com> [Mon, 13 Apr 2015 16:37:53 -0400] rev 25054
test-run-tests.t: work around file.write() returning an int In Python 3.5, file.write() returns the number of bytes it wrote instead of None.
Tue, 14 Apr 2015 16:24:32 -0400 run-tests: write bytes to the binary buffer on sys.{stdout,stderr}
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 16:24:32 -0400] rev 25053
run-tests: write bytes to the binary buffer on sys.{stdout,stderr}
Tue, 14 Apr 2015 16:21:10 -0400 run-tests: record faildata using bytes instead of str
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 16:21:10 -0400] rev 25052
run-tests: record faildata using bytes instead of str lines is already bytes, so this is just fixing a bug on python 3.
Tue, 14 Apr 2015 16:18:11 -0400 run-tests: do cdata escaping using bytes instead of str
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 16:18:11 -0400] rev 25051
run-tests: do cdata escaping using bytes instead of str
Mon, 13 Apr 2015 16:33:12 -0400 run-tests: make sure keyword(s) are in bytes and not str
Augie Fackler <augie@google.com> [Mon, 13 Apr 2015 16:33:12 -0400] rev 25050
run-tests: make sure keyword(s) are in bytes and not str
Mon, 13 Apr 2015 16:31:19 -0400 run-tests: use items instead of iteritems on dicts
Augie Fackler <augie@google.com> [Mon, 13 Apr 2015 16:31:19 -0400] rev 25049
run-tests: use items instead of iteritems on dicts This works the same-enough on 2.6 and 3.5 to be fine.
Mon, 13 Apr 2015 16:30:40 -0400 run-tests: refer to test.bname when sniffing for keywords
Augie Fackler <augie@google.com> [Mon, 13 Apr 2015 16:30:40 -0400] rev 25048
run-tests: refer to test.bname when sniffing for keywords
Mon, 13 Apr 2015 15:57:10 -0400 run-tests: string-escape no longer exists in python 3, use unicode_escape
Augie Fackler <augie@google.com> [Mon, 13 Apr 2015 15:57:10 -0400] rev 25047
run-tests: string-escape no longer exists in python 3, use unicode_escape
Mon, 13 Apr 2015 15:55:48 -0400 run-tests: switch all uses of iolock.acquire() to a context manager
Augie Fackler <augie@google.com> [Mon, 13 Apr 2015 15:55:48 -0400] rev 25046
run-tests: switch all uses of iolock.acquire() to a context manager
Tue, 21 Apr 2015 12:24:34 -0400 run-tests: use difflib.diff_bytes on Python 3
Augie Fackler <augie@google.com> [Tue, 21 Apr 2015 12:24:34 -0400] rev 25045
run-tests: use difflib.diff_bytes on Python 3 This method was introduced in Python 3.5 to satisfy our diffing-strings-of-bytes needs.
Sun, 12 Apr 2015 16:14:07 -0400 run-tests: fix installation of hg by bytesifying more constants
Augie Fackler <augie@google.com> [Sun, 12 Apr 2015 16:14:07 -0400] rev 25044
run-tests: fix installation of hg by bytesifying more constants
Sun, 12 Apr 2015 16:13:38 -0400 setup: decode xcode version number on python3
Augie Fackler <augie@google.com> [Sun, 12 Apr 2015 16:13:38 -0400] rev 25043
setup: decode xcode version number on python3
Sun, 12 Apr 2015 15:35:57 -0400 run-tests: work around with_hg being bytes or string depending on provenance
Augie Fackler <augie@google.com> [Sun, 12 Apr 2015 15:35:57 -0400] rev 25042
run-tests: work around with_hg being bytes or string depending on provenance
Tue, 14 Apr 2015 16:03:04 -0400 run-tests: even more bytestring annotations for Python 3
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 16:03:04 -0400] rev 25041
run-tests: even more bytestring annotations for Python 3
Tue, 14 Apr 2015 16:02:49 -0400 run-tests: write bytes to sys.stdout.buffer in python 3
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 16:02:49 -0400] rev 25040
run-tests: write bytes to sys.stdout.buffer in python 3
Tue, 14 Apr 2015 15:59:59 -0400 run-tests: be more judicious about bytes vs string on test attrs
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 15:59:59 -0400] rev 25039
run-tests: be more judicious about bytes vs string on test attrs This introduces a bname attribute for when we need to use the test name in a path, and retains name for when we need it as a string. Sadly, we seem to need both of these.
Tue, 14 Apr 2015 15:56:44 -0400 run-tests: fix _findprogram to reliably return bytes
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 15:56:44 -0400] rev 25038
run-tests: fix _findprogram to reliably return bytes
Tue, 14 Apr 2015 15:54:13 -0400 run-tests: introduce a name for os.environb
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 15:54:13 -0400] rev 25037
run-tests: introduce a name for os.environb On python 2 this is just os.environ, but on python 3 we need to get to os.environb in several places.
Tue, 14 Apr 2015 15:52:45 -0400 run-tests: work around chr() producing unicode in Python 3
Augie Fackler <augie@google.com> [Tue, 14 Apr 2015 15:52:45 -0400] rev 25036
run-tests: work around chr() producing unicode in Python 3
Sat, 11 Apr 2015 18:28:32 -0400 run-tests: use bytes when constructing shell script
Augie Fackler <augie@google.com> [Sat, 11 Apr 2015 18:28:32 -0400] rev 25035
run-tests: use bytes when constructing shell script
Sat, 11 Apr 2015 18:26:58 -0400 run-tests: use bytes explicitly for tmpdir and hgrc construction
Augie Fackler <augie@google.com> [Sat, 11 Apr 2015 18:26:58 -0400] rev 25034
run-tests: use bytes explicitly for tmpdir and hgrc construction We now get slightly further on Python 3. Python 2.6 still works.
Sat, 11 Apr 2015 18:22:25 -0400 run-tests: work around the rename of xrange to range
Augie Fackler <augie@google.com> [Sat, 11 Apr 2015 18:22:25 -0400] rev 25033
run-tests: work around the rename of xrange to range
Sun, 12 Apr 2015 15:34:17 -0400 heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com> [Sun, 12 Apr 2015 15:34:17 -0400] rev 25032
heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Sat, 11 Apr 2015 18:20:44 -0400 python3: update killdaemons and run-tests print and exception syntax
Augie Fackler <augie@google.com> [Sat, 11 Apr 2015 18:20:44 -0400] rev 25031
python3: update killdaemons and run-tests print and exception syntax test-run-tests.t still passes fine on Python 2.6. run-tests.py --local no longer fails with syntax errors, and now fails looking for xrange. Most changes done with 2to3 -w -f numliterals -f except -f print tests/run-tests.py tests/killdaemons.py after which one import was fixed in run-tests and a __future__ import was added.
Wed, 13 May 2015 11:49:38 -0700 check-code: allow with statements
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 13 May 2015 11:49:38 -0700] rev 25030
check-code: allow with statements We dropped python 2.4 compatibility.
Wed, 13 May 2015 11:41:17 -0700 check-code: allow 'Except EClass as variable:'
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 13 May 2015 11:41:17 -0700] rev 25029
check-code: allow 'Except EClass as variable:' Python 2.4 compatibility has been dropped.
Wed, 13 May 2015 11:39:48 -0700 check-code: allow print and exec as a function
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 13 May 2015 11:39:48 -0700] rev 25028
check-code: allow print and exec as a function This is required to move forward on python3 compatibility.
Wed, 06 May 2015 15:58:14 -0700 pathencode: for long paths, strip first 5 chars, not first dir
Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 May 2015 15:58:14 -0700] rev 25027
pathencode: for long paths, strip first 5 chars, not first dir When encoding long paths, the pure Python code strips the first directory from the path, while the native code currently strips the first 5 characters. This discrepancy has not been a problem so far, since we have not stored anything in directories other than data/. However, we will soon be storing submanifest revlogs in metadata/, so the discrepancy will have to go [1]. Since file collisions are avoided by the hashing alone (which is done on the full unencoded path), it doesn't really matter whether we drop the first dir, the first 5 characters, or special-case non-data/. To avoid touching the C code, let's always strip the first 5 characters. [1] Or maybe elsewhere, but the discrepancy is ugly either way.
Wed, 13 May 2015 18:57:38 +0200 util.h: kill no longer needed definitions for Python < 2.5
Adrian Buehlmann <adrian@cadifra.com> [Wed, 13 May 2015 18:57:38 +0200] rev 25026
util.h: kill no longer needed definitions for Python < 2.5 see e1fb276d4619
Tue, 12 May 2015 15:04:19 -0700 rebase: add short -k option for --keep
Nat Mote <nmote@fb.com> [Tue, 12 May 2015 15:04:19 -0700] rev 25025
rebase: add short -k option for --keep histedit and strip already have a short option for keep, so this makes the interface more consistent
Mon, 30 Mar 2015 19:51:40 +0900 revset: test current behavior of addset class
Yuya Nishihara <yuya@tcha.org> [Mon, 30 Mar 2015 19:51:40 +0900] rev 25024
revset: test current behavior of addset class The addset class isn't simple and it has a hidden bug that will be fixed by future patches. So let's test the current behavior.
Mon, 27 Apr 2015 23:03:20 +0900 revset: remove duplicated definition of choice() from addset._iterordered()
Yuya Nishihara <yuya@tcha.org> [Mon, 27 Apr 2015 23:03:20 +0900] rev 25023
revset: remove duplicated definition of choice() from addset._iterordered() choice() is already defined before val1 = None. Perhaps there was merge or rebase error.
Tue, 12 May 2015 19:40:45 -0500 canonpath: fix infinite recursion
Matt Mackall <mpm@selenic.com> [Tue, 12 May 2015 19:40:45 -0500] rev 25022
canonpath: fix infinite recursion
Tue, 12 May 2015 11:44:14 -0700 commit: no longer allow empty commit with the 'force' argument (API)
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 12 May 2015 11:44:14 -0700] rev 25021
commit: no longer allow empty commit with the 'force' argument (API) The new way to allow empty commit is to temporarily set the 'ui.allowemptycommit' config option. allowemptyback = repo.ui.backupconfig('ui', 'allowemptycommit') try: repo.ui.setconfig('ui', 'allowemptycommit', True) repo.commit(...) finally: repo.ui.restoreconfig(allowemptyback) All known uses of force for allowing empty commits have been removed, so let's remove it from the allowemptycommits condition.
Mon, 11 May 2015 20:15:41 -0700 import: use ui.allowemptycommit to allow empty commits
Durham Goode <durham@fb.com> [Mon, 11 May 2015 20:15:41 -0700] rev 25020
import: use ui.allowemptycommit to allow empty commits Previously import used force=partial to allow empty commits to be made. Let's switch it to using the new ui.allowemptycommit option. Tests says we can drop the 'force' argument in the processs.
Mon, 11 May 2015 17:51:22 -0700 mq: use ui.allowemptycommit to allow empty commits
Durham Goode <durham@fb.com> [Mon, 11 May 2015 17:51:22 -0700] rev 25019
mq: use ui.allowemptycommit to allow empty commits Previously, mq used the force flag to allow empty commits. Now that we have ui.allowemptycommit let's switch to that instead. We can't completely remove the force flag since it is used for a bunch of other behavior in localrepo.commit.
Mon, 11 May 2015 16:18:28 -0700 commit: add ui.allowemptycommit config option
Durham Goode <durham@fb.com> [Mon, 11 May 2015 16:18:28 -0700] rev 25018
commit: add ui.allowemptycommit config option This adds a config flag that enables a user to make empty commits. This is useful in a number of cases. For instance, automation that creates release branches via bookmarks may want to make empty commits to that release bookmark so that it can't be fast-forwarded and so it can record information about the release bookmark's creation. This is already possible with named branches, so making it possible for bookmarks makes sense. Another case we've wanted it is for mirroring repositories into Mercurial. We have automation that syncs commits into hg by running things from the command line. The ability to produce empty commits is useful for syncing unusual commits from other VCS's. In general, allowing the user to create the DAG as they see fit seems useful, and when I mentioned this in IRC more than one person piped up and said they were already hacking around this limitation by using mq, import, and commit-dummy-change-then-amend-the-content-away style solutions.
Mon, 11 May 2015 16:16:22 -0700 commit: move empty commit condition to a new line
Durham Goode <durham@fb.com> [Mon, 11 May 2015 16:16:22 -0700] rev 25017
commit: move empty commit condition to a new line The empty commit condition was a messy if condition. Let's move it to a new line and change it to 'or' statements so it's cleaner and more readable. A future commit will add additional logic to this line.
Fri, 08 May 2015 15:04:14 -0700 dirs: speed up by storing number of direct children per dir
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 May 2015 15:04:14 -0700] rev 25016
dirs: speed up by storing number of direct children per dir The Python version of the dirs type stores only the number of direct children associated with each directory. That means that while adding a directory, it only has to walk backwards until it runs into a directory that is already in its map. The C version walks all the way to the top-most directory. By copying the Python version's clever trick to the C code, we can speed it up quite a bit. On the Firefox repo, perfdirs now runs in 0.031390, from 0.056518 before the undoing Sid's optimization in the previous change, and 0.061835 before previous his optimization. More practically, it speeds up 'hg status nonexistent' on the Firefox repo from 0.176s to 0.155s. It's unclear why the C version did not have the same cleverness implemented from the start, especially given that they were both written by the same person (Bryan O'Sullivan) very close in time: 856960173630 (scmutil: add a dirs class, 2013-04-10) 02ee846b246a (scmutil: rewrite dirs in C, use if available, 2013-04-10)
Fri, 08 May 2015 15:09:28 -0700 dirs: back out forward-searching in finddirs()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 08 May 2015 15:09:28 -0700] rev 25015
dirs: back out forward-searching in finddirs() This backs out the changes below. The next patch will implement a faster algorithm based on backward-walking in finddirs(). 67241ee427cf (dirs._addpath: reinstate use of Py_CLEAR, 2015-04-07) 6f0e6fa9fdd7 (dirs._addpath: don't mutate Python strings after exposing them (issue4589), 2015-04-06) 1a9efc312700 (dirs.addpath: rework algorithm to search forward, 2015-03-27)
Wed, 15 Apr 2015 08:19:36 -0700 templatekw: replace currentbookmark with activebookmark keyword
Ryan McElroy <rmcelroy@fb.com> [Wed, 15 Apr 2015 08:19:36 -0700] rev 25014
templatekw: replace currentbookmark with activebookmark keyword Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
Wed, 15 Apr 2015 08:12:04 -0700 templatekw: introduce activebookmark keyword
Ryan McElroy <rmcelroy@fb.com> [Wed, 15 Apr 2015 08:12:04 -0700] rev 25013
templatekw: introduce activebookmark keyword Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
Wed, 15 Apr 2015 08:26:01 -0700 templatekw: rename variable current to active
Ryan McElroy <rmcelroy@fb.com> [Wed, 15 Apr 2015 08:26:01 -0700] rev 25012
templatekw: rename variable current to active Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
Mon, 11 May 2015 21:26:13 -0400 pathutil: hint if a path is root relative instead of cwd relative (issue4663)
Matt Harbison <matt_harbison@yahoo.com> [Mon, 11 May 2015 21:26:13 -0400] rev 25011
pathutil: hint if a path is root relative instead of cwd relative (issue4663) Given that this path is going to abort, it seems OK to spend the time to do an alternate lookup to better inform the user. The path returned by util.pathto() ends with '/' at least in some cases, so os.path.relpath() is used instead, which requires python 2.6.
(0) -10000 -3000 -1000 -192 +192 +1000 +3000 +10000 tip