Fri, 30 Jun 2017 03:43:37 +0200 configitems: register the 'patchbomb.bundletype' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:43:37 +0200] rev 34126
configitems: register the 'patchbomb.bundletype' config
Wed, 06 Sep 2017 21:12:27 -0700 blackbox: remove _bbvfs state
Jun Wu <quark@fb.com> [Wed, 06 Sep 2017 21:12:27 -0700] rev 34125
blackbox: remove _bbvfs state `_bbvfs` is redundant because it could be calcualted from `_bbrepo`. Differential Revision: https://phab.mercurial-scm.org/D651
Wed, 06 Sep 2017 21:08:59 -0700 blackbox: do not cache file objects
Jun Wu <quark@fb.com> [Wed, 06 Sep 2017 21:08:59 -0700] rev 34124
blackbox: do not cache file objects Having the blackbox file objects cached in `ui._bbfp` could in theory be troublesome if multiple processes (ex. chg servers) have file objects referring to a same file. (Although I spent some time and failed to build a convincing test case) This patch makes blackbox re-open the file every time to make the situation better. Ideally we also need proper locking. The caching logic traces back to the commit introducing blackbox (18242716a). That commit does not have details about why caching is necessary. Consider the fact that blackbox logs are not many, it seems fine to remove the fp cache to be more confident. Differential Revision: https://phab.mercurial-scm.org/D650
Wed, 06 Sep 2017 20:54:53 -0700 blackbox: inline _bbwrite
Jun Wu <quark@fb.com> [Wed, 06 Sep 2017 20:54:53 -0700] rev 34123
blackbox: inline _bbwrite There is no need to make it a separate method. This makes the next change easier to read. Differential Revision: https://phab.mercurial-scm.org/D649
Wed, 06 Sep 2017 19:27:30 -0700 blackbox: fix rotation with chg
Jun Wu <quark@fb.com> [Wed, 06 Sep 2017 19:27:30 -0700] rev 34122
blackbox: fix rotation with chg The added test will show: $ $PYTHON showsize.py .hg/blackbox* .hg/blackbox.log: < 500 .hg/blackbox.log.1: < 500 .hg/blackbox.log.2: < 500 .hg/blackbox.log.3: < 500 .hg/blackbox.log.4: < 500 .hg/blackbox.log.5: >= 500 with previous code. The issue is caused by blackbox caching file objects *by path*, and the rotation size check could run on a wrong file object (i.e. it should check "blackbox.log", but `filehandles["blackbox.log"]` contains a file object that has been renamed to "blackbox.log.5"). This patch removes the "filehandlers" global cache added by 45313f5a3a8c to solve the issue. I think the original patch was trying to make different ui objects use a same file object if their blackbox.log path is the same. In theory it could also be problematic in the rotation case. Anyway, that should become unnecessary after D650. Differential Revision: https://phab.mercurial-scm.org/D648
Wed, 06 Sep 2017 18:31:25 -0700 test-blackbox: make it compatible with chg
Jun Wu <quark@fb.com> [Wed, 06 Sep 2017 18:31:25 -0700] rev 34121
test-blackbox: make it compatible with chg Differential Revision: https://phab.mercurial-scm.org/D647
Mon, 11 Sep 2017 15:59:18 -0700 ssh: fix flakey ssh errors on BSD systems
Durham Goode <durham@fb.com> [Mon, 11 Sep 2017 15:59:18 -0700] rev 34120
ssh: fix flakey ssh errors on BSD systems There's been a persistent issue with flakiness on BSD systems (like OSX) where the 'no suitable response from remote hg' message would sometimes not appear. This was caused by one of the earlier calls failing with a "IOError: Broken pipe". Catching those errors and printing the same message removes the flakiness. Differential Revision: https://phab.mercurial-scm.org/D687
Mon, 11 Sep 2017 13:03:27 -0700 context: add overlayworkingcontext and overlayworkingfilectx
Phil Cohen <phillco@fb.com> [Mon, 11 Sep 2017 13:03:27 -0700] rev 34119
context: add overlayworkingcontext and overlayworkingfilectx These two classes will be used extensively in the first in-memory merge milestone. Differential Revision: https://phab.mercurial-scm.org/D616
Sun, 10 Sep 2017 18:52:40 -0700 changegroup: rename getsubsetraw to makestream
Durham Goode <durham@fb.com> [Sun, 10 Sep 2017 18:52:40 -0700] rev 34118
changegroup: rename getsubsetraw to makestream Now that nothing uses getsubsetraw except makestream, let's move the functionality into the makestream. This removes the last remaining excess changegroup creation function, getsubsetraw. Differential Revision: https://phab.mercurial-scm.org/D671
Sun, 10 Sep 2017 18:51:31 -0700 changegroup: remove external uses of getbundler
Durham Goode <durham@fb.com> [Sun, 10 Sep 2017 18:51:31 -0700] rev 34117
changegroup: remove external uses of getbundler Now that makestream and makechangegroup are the primary creation methods for changegroups, let's get rid of this rogue use of getbundler and getsubsetraw. Differential Revision: https://phab.mercurial-scm.org/D670
Sun, 10 Sep 2017 18:50:12 -0700 changegroup: replace getchangegroup with makechangegroup
Durham Goode <durham@fb.com> [Sun, 10 Sep 2017 18:50:12 -0700] rev 34116
changegroup: replace getchangegroup with makechangegroup As part of reducing the number of changegroup creation APIs, let's replace getchangegroup with calls to makechangegroup. This is mostly a drop in replacement, but it does change the version specifier to be required, so it's more obvious which callers are creating old version 1 changegroups still. Differential Revision: https://phab.mercurial-scm.org/D669
Sun, 10 Sep 2017 18:48:42 -0700 changegroup: replace changegroup with makechangegroup
Durham Goode <durham@fb.com> [Sun, 10 Sep 2017 18:48:42 -0700] rev 34115
changegroup: replace changegroup with makechangegroup As part of reducing the number of changegroup creation APIs, let's replace the changegroup function with makechangegroup. This pushes the responsibility of creating the outgoing set to the caller, but that seems like a simple and reasonable concept for the caller to be aware of. Differential Revision: https://phab.mercurial-scm.org/D668
Sun, 10 Sep 2017 18:47:39 -0700 changegroup: delete getlocalchangegroup
Durham Goode <durham@fb.com> [Sun, 10 Sep 2017 18:47:39 -0700] rev 34114
changegroup: delete getlocalchangegroup As part of reducing the number of changegroup creation APIs, let's go ahead and delete this unused function. It appears to have been deprecated in the last release anyway. Differential Revision: https://phab.mercurial-scm.org/D667
Sun, 10 Sep 2017 19:01:56 -0700 changegroup: replace getlocalchangegroupraw with makestream
Durham Goode <durham@fb.com> [Sun, 10 Sep 2017 19:01:56 -0700] rev 34113
changegroup: replace getlocalchangegroupraw with makestream As part of reducing the number of changegroup creation apis, let's replace calls to getlocalchangegroupraw with calls to makestream. Aside from one case of checking if there are no outgoing commits and returning None, this is pretty much a drop in replacement. Differential Revision: https://phab.mercurial-scm.org/D666
Sun, 10 Sep 2017 18:43:59 -0700 changegroup: replace changegroupsubset with makechangegroup
Durham Goode <durham@fb.com> [Sun, 10 Sep 2017 18:43:59 -0700] rev 34112
changegroup: replace changegroupsubset with makechangegroup As part of getting rid of all the permutations of changegroup creation, let's remove changegroupsubset and call makechangegroup instead. This moves the responsibility of creating the outgoing set to the caller, but that seems like a relatively reasonable unit of functionality for the caller to have to care about (i.e. what commits should be bundled). Differential Revision: https://phab.mercurial-scm.org/D665
Sun, 10 Sep 2017 18:39:02 -0700 changegroup: replace getsubset with makechangegroup
Durham Goode <durham@fb.com> [Sun, 10 Sep 2017 18:39:02 -0700] rev 34111
changegroup: replace getsubset with makechangegroup The current changegroup APIs are a bit of a mess. Currently you can use getsubsetraw, getsubset, changegroupsubset, getlocalchangegroupraw, getchangegroup, and getlocalchangroup to produce changegroups. This patch is the beginning of a refactor to boil all of that away to just makechangegroup and makestream. The first step adds the new functions and replaces getsubset function with them. Differential Revision: https://phab.mercurial-scm.org/D664
Wed, 06 Sep 2017 16:17:04 -0700 rebase: remove unnecessary '.unfiltered()' calls
Jun Wu <quark@fb.com> [Wed, 06 Sep 2017 16:17:04 -0700] rev 34110
rebase: remove unnecessary '.unfiltered()' calls Now we have a clear centric place to control whether `rbsrt.repo` is unfiltered or not, we can drop `unfiltered()` in other places. Differential Revision: https://phab.mercurial-scm.org/D645
Wed, 06 Sep 2017 16:13:04 -0700 rebase: remove complex unhiding code
Jun Wu <quark@fb.com> [Wed, 06 Sep 2017 16:13:04 -0700] rev 34109
rebase: remove complex unhiding code This is similar to Martin von Zweigbergk's previous patch [1]. Previous patches are adding more `.unfiltered()` to the rebase code. So I wonder: are we playing whack-a-mole regarding on `unfiltered()` in rebase? Thinking about it, I believe most of the rebase code *should* just use an unfiltered repo. The only exception is before we figuring out a `rebasestate`. This patch makes it so. See added comment in code for why that's more reasonable. This would make the code base cleaner (not mangling the `repo` object), faster (no need to invalidate caches), simpler (less LOC), less error-prone (no need to think about what to unhide, ex. should we unhide wdir p2? how about destinations?), and future proof (other code may change visibility in an unexpected way, ex. directaccess may make the destination only visible when it's in "--dest" revset tree). [1]: https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-March/094277.html Differential Revision: https://phab.mercurial-scm.org/D644
Wed, 06 Sep 2017 15:23:19 -0700 rebase: use unfiltered repo when loading state
Jun Wu <quark@fb.com> [Wed, 06 Sep 2017 15:23:19 -0700] rev 34108
rebase: use unfiltered repo when loading state Before this patch, `rebase --abort` may fail to do the cleanup: $ hg rebase --abort rebase aborted (no revision is removed, only broken state is cleared) The added test case makes sure `--abort` works in this case. Differential Revision: https://phab.mercurial-scm.org/D643
Wed, 06 Sep 2017 12:40:00 -0700 rebase: do not crash rebasing merge with a parent having hidden successor
Jun Wu <quark@fb.com> [Wed, 06 Sep 2017 12:40:00 -0700] rev 34107
rebase: do not crash rebasing merge with a parent having hidden successor The added test will crash with previous code. Differential Revision: https://phab.mercurial-scm.org/D640
Wed, 06 Sep 2017 18:33:55 -0700 changegroup: fix to allow empty manifest parts
Durham Goode <durham@fb.com> [Wed, 06 Sep 2017 18:33:55 -0700] rev 34106
changegroup: fix to allow empty manifest parts The current chunk reading algorithm relied on counting the number of empty chunks and comparing it to the number of chunk lists it expected (1 list of files for cg1 and cg2, and 1 list of files + 1 list of trees for cg3). This implicitly assumed that both the changelog part and the manifestlog part were never empty (since them being empty would cause it to count it as one list being done, and screw up the count). In our treemanifest code, the manifest section could be empty, so we need to handle that case. This patches refactors that code to be more explicit about how it counts the expected parts. Differential Revision: https://phab.mercurial-scm.org/D646
Tue, 05 Sep 2017 15:18:45 -0700 wrapcommand: use functools.partial
Jun Wu <quark@fb.com> [Tue, 05 Sep 2017 15:18:45 -0700] rev 34105
wrapcommand: use functools.partial Like the previous patch, this helps remove noises in traceback. Practically, this removes another 6 lines in `rebase -s . -d .` traceback in my setup: .... File "hg/mercurial/util.py", line 1118, in check return func(*args, **kwargs) -File "hg/mercurial/extensions.py", line 331, in closure - return func(*(args + a), **kw) File "hg/mercurial/util.py", line 1118, in check return func(*args, **kwargs) File "fb-hgext/hgext3rd/fbhistedit.py", line 283, in _rebase return orig(ui, repo, **opts) File "hg/mercurial/util.py", line 1118, in check return func(*args, **kwargs) -File "hg/mercurial/extensions.py", line 331, in closure - return func(*(args + a), **kw) File "hg/mercurial/util.py", line 1118, in check return func(*args, **kwargs) File "remotenames.py", line 633, in exrebasecmd ret = orig(ui, repo, **opts) File "hg/mercurial/util.py", line 1118, in check return func(*args, **kwargs) -File "hg/mercurial/extensions.py", line 331, in closure - return func(*(args + a), **kw) File "hg/mercurial/util.py", line 1118, in check return func(*args, **kwargs) File "fb-hgext/hgext3rd/fbamend/__init__.py", line 453, in wraprebase return orig(ui, repo, **opts) File "hg/mercurial/util.py", line 1118, in check return func(*args, **kwargs) .... Differential Revision: https://phab.mercurial-scm.org/D633
Tue, 05 Sep 2017 13:37:36 -0700 wrapfunction: use functools.partial if possible
Jun Wu <quark@fb.com> [Tue, 05 Sep 2017 13:37:36 -0700] rev 34104
wrapfunction: use functools.partial if possible Every `extensions.bind` call inserts a frame in traceback: ... in closure return func(*(args + a), **kw) which makes traceback noisy. The Python stdlib has a `functools.partial` which is backed by C code and does not pollute traceback. However it does not support instancemethod and sets `args` attribute which could be problematic for alias handling. This patch makes `wrapfunction` use `functools.partial` if we are wrapping a function directly exported by a module (so it's impossible to be a class or instance method), and special handles `wrapfunction` results so alias handling code could handle `args` just fine. As an example, `hg rebase -s . -d . --traceback` got 6 lines removed in my setup: File "hg/mercurial/dispatch.py", line 898, in _dispatch cmdpats, cmdoptions) -File "hg/mercurial/extensions.py", line 333, in closure - return func(*(args + a), **kw) File "hg/hgext/journal.py", line 84, in runcommand return orig(lui, repo, cmd, fullargs, *args) -File "hg/mercurial/extensions.py", line 333, in closure - return func(*(args + a), **kw) File "fb-hgext/hgext3rd/fbamend/hiddenoverride.py", line 119, in runcommand result = orig(lui, repo, cmd, fullargs, *args) File "hg/mercurial/dispatch.py", line 660, in runcommand ret = _runcommand(ui, options, cmd, d) -File "hg/mercurial/extensions.py", line 333, in closure - return func(*(args + a), **kw) File "hg/hgext/pager.py", line 69, in pagecmd return orig(ui, options, cmd, cmdfunc) .... Differential Revision: https://phab.mercurial-scm.org/D632
Fri, 01 Sep 2017 12:34:36 -0700 cmdutil: remove redundant commitfunc parameter in amend (API)
Saurabh Singh <singhsrb@fb.com> [Fri, 01 Sep 2017 12:34:36 -0700] rev 34103
cmdutil: remove redundant commitfunc parameter in amend (API) Since the redundant commit during the amend has been been removed, there is no need for commit callback function in amend now. Therefore, this commit removes the unused parameter "commmitfunc" which was being used for this purpose. Test Plan: Ensured that all the tests pass Differential Revision: https://phab.mercurial-scm.org/D635
Fri, 01 Sep 2017 12:34:36 -0700 cmdutil: remove the redundant commit during amend
Saurabh Singh <singhsrb@fb.com> [Fri, 01 Sep 2017 12:34:36 -0700] rev 34102
cmdutil: remove the redundant commit during amend There was an extra commit made during the amend operation to track the changes to the working copy. However, this logic was written a long time back and newer API's make this extra commit redundant. Therefore, I am removing the extra commit. After this change, I noticed that - Execution time of the cmdutil.amend improved by over 40%. - Execution time of "hg commit --amend" improved by over 20%. Test Plan: I ensured that the all the hg tests passed after the change. I had to fix a few tests which were aware of the extra commit made during the amend. Differential Revision: https://phab.mercurial-scm.org/D636
Wed, 06 Sep 2017 12:56:19 -0700 checknlink: rename file object from 'fd' to 'fp'
Jun Wu <quark@fb.com> [Wed, 06 Sep 2017 12:56:19 -0700] rev 34101
checknlink: rename file object from 'fd' to 'fp' Make it clear that `fp` (`file` object) is different from `fd` (low-level file descriptor number). Differential Revision: https://phab.mercurial-scm.org/D642
Tue, 05 Sep 2017 15:06:45 -0700 cleanup: rename "matchfn" to "match" where obviously a matcher
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Sep 2017 15:06:45 -0700] rev 34100
cleanup: rename "matchfn" to "match" where obviously a matcher We usually call matchers either "match" or "m" and reserve "matchfn" for functions. Differential Revision: https://phab.mercurial-scm.org/D641
Wed, 06 Sep 2017 08:22:54 -0700 check-code: fix incorrect capitalization in camelcase regex
Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 Sep 2017 08:22:54 -0700] rev 34099
check-code: fix incorrect capitalization in camelcase regex This was found internally at Google as part of a monorepo-wide cleanup. Differential Revision: https://phab.mercurial-scm.org/D637
Wed, 06 Sep 2017 10:41:13 -0700 amend: use context manager for config override
Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 Sep 2017 10:41:13 -0700] rev 34098
amend: use context manager for config override Differential Revision: https://phab.mercurial-scm.org/D639
Wed, 06 Sep 2017 10:42:02 -0700 amend: delete dead assignment to "newid"
Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 Sep 2017 10:42:02 -0700] rev 34097
amend: delete dead assignment to "newid" Differential Revision: https://phab.mercurial-scm.org/D638
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip