Fri, 24 Jun 2016 15:21:10 +0100 chg: send SIGPIPE to server immediately when pager exits (issue5278)
Jun Wu <quark@fb.com> [Fri, 24 Jun 2016 15:21:10 +0100] rev 29429
chg: send SIGPIPE to server immediately when pager exits (issue5278) If the user press 'q' to leave the 'less' pager, it is expected to end the hg process immediately. We currently rely on SIGPIPE for this behavior. But SIGPIPE won't arrive if we don't write anything (like doing heavy computation, reading from network etc). If that happens, the user will feel that the hg process just hangs. The patch address the issue by adding a SIGCHLD signal handler and sends SIGPIPE to the server as soon as the pager exits. This is also an issue with hg's pager implementation.
Fri, 24 Jun 2016 17:06:41 +0100 chgserver: do not ignore SIGPIPE if pager is used
Jun Wu <quark@fb.com> [Fri, 24 Jun 2016 17:06:41 +0100] rev 29428
chgserver: do not ignore SIGPIPE if pager is used We rely on SIGPIPE to exit when the pager exits. And Python ignores SIGPIPE by default. Explicitly set SIGPIPE handler to SIG_DFL (terminate) just like pager.py.
Fri, 24 Jun 2016 11:12:41 -0700 debug: make debug{revlog,index,data} --dir not just a flag
Martin von Zweigbergk <martinvonz@google.com> [Fri, 24 Jun 2016 11:12:41 -0700] rev 29427
debug: make debug{revlog,index,data} --dir not just a flag The directory argument (for tree manifests) should belong to to the --dir argument. I had mistakenly made --dir a flag. One effect of this was that I had meant for "-m" to be optional, but instead it changed the behavior of --dir, so with "hg debugdata -m --dir dir1 0", the -m took over and the "dir1" got treated as a revision in the root manifest log.
Fri, 24 Jun 2016 11:25:55 -0700 debugdata: disallow trailing option with -c/-m
Martin von Zweigbergk <martinvonz@google.com> [Fri, 24 Jun 2016 11:25:55 -0700] rev 29426
debugdata: disallow trailing option with -c/-m Before this change, "hg debugdata -c 0 foo" was allowed.
Sun, 26 Jun 2016 17:16:57 +0900 revset: get rid of redundant error checking from match()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Jun 2016 17:16:57 +0900] rev 29425
revset: get rid of redundant error checking from match() Actually there was no additional error checking. It should be caught by "not all(specs)".
Fri, 24 Jun 2016 10:32:38 +0100 share: move magic string to a constant
Martijn Pieters <mjpieters@fb.com> [Fri, 24 Jun 2016 10:32:38 +0100] rev 29424
share: move magic string to a constant
Sat, 12 Mar 2016 16:08:19 -0800 branchmap: remove unused exception variable
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 12 Mar 2016 16:08:19 -0800] rev 29423
branchmap: remove unused exception variable
Mon, 27 Jun 2016 12:11:18 +0200 patch: allow copy information to be passed in
Henrik Stuart <henriks@unity3d.com> [Mon, 27 Jun 2016 12:11:18 +0200] rev 29422
patch: allow copy information to be passed in When displaying patches from graphical tools where you can browse through individual files, with diff being called separately on each, recomputing the limits of file copy history can become rather expensive on large repositories. Instead, we can compute it once and pass it in for subsequent calls.
Thu, 23 Jun 2016 22:37:17 +0200 largefiles: check file in the repo store before checking remotely (issue5257)
liscju <piotr.listkiewicz@gmail.com> [Thu, 23 Jun 2016 22:37:17 +0200] rev 29421
largefiles: check file in the repo store before checking remotely (issue5257) Problem was files to check were gathered in the repository where the verify was launched but verification was done on the remote store. It was observed when user committed in cloned repository and ran verify before pushing - committed files were marked as non existing. This commit fixes this by checking in the remote store only files that are not existing in the repository store where verify was launched. Solution is similiar to fd288d118074
Mon, 27 Jun 2016 10:33:33 +0200 largefiles: remove additional blank lines
liscju <piotr.listkiewicz@gmail.com> [Mon, 27 Jun 2016 10:33:33 +0200] rev 29420
largefiles: remove additional blank lines It does not conform to the coding style.
Fri, 24 Jun 2016 09:08:16 +0200 largefiles: fix misleading comments in lfutil instore and storepath
liscju <piotr.listkiewicz@gmail.com> [Fri, 24 Jun 2016 09:08:16 +0200] rev 29419
largefiles: fix misleading comments in lfutil instore and storepath Problem in both cases is cache in largefiles has assigned meaning - user cache which is additional place to get/put files. Those two function works on store - the main place to store largefiles in the repository - .hg/largefiles and using "cache" to describe it is misleading.
Sat, 25 Jun 2016 19:10:46 -0700 revset: implement match() in terms of matchany()
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 19:10:46 -0700] rev 29418
revset: implement match() in terms of matchany() match() is the special case of a single element list being passed to matchany() with the additional error checking that the revset spec is defined. Change the implementation to remove the redundant code and have match() call matchany().
Sat, 25 Jun 2016 19:12:20 -0700 scmutil: improve documentation of revset APIs
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 19:12:20 -0700] rev 29417
scmutil: improve documentation of revset APIs I can never remember the differences between the various revset APIs. I can never remember that scmutil.revrange() is the one I want to use from user-facing commands. Add some documentation to clarify this. While we're here, the argument name for revrange() is changed to "specs" because that's what it actually is.
Sat, 25 Jun 2016 13:52:46 -0700 mdiff: remove use of __slots__
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 13:52:46 -0700] rev 29416
mdiff: remove use of __slots__ The use of __slots__ was added way back in 2006 in 4ec58b157265. __slots__ isn't necessary for this class.
Sat, 25 Jun 2016 17:40:53 -0700 i18n: use unicode literal
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 17:40:53 -0700] rev 29415
i18n: use unicode literal Other parts of this expression are already using unicode literals. We need this to make Python 3 happy and to avoid an implicit conversion in Python 2.
Sat, 25 Jun 2016 17:22:06 -0700 pycompat: add HTTPPasswordMgrWithDefaultRealm to Python 3 block
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 17:22:06 -0700] rev 29414
pycompat: add HTTPPasswordMgrWithDefaultRealm to Python 3 block Looks like we missed this in 800ec7c048b0.
Sun, 26 Jun 2016 07:59:02 -0700 ui: path option to declare which revisions to push by default
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 26 Jun 2016 07:59:02 -0700] rev 29413
ui: path option to declare which revisions to push by default Now that we have a mechanism for declaring path sub-options, we can start to pile on features! Many power users have expressed frustration that bare `hg push` attempts to push all local revisions to the remote. This patch introduces the "pushrev" path sub-option to control which revisions are pushed when no "-r" argument is specified. The value of this sub-option is a revset, naturally. A future feature addition could potentially introduce a "pushnames" sub-options that declares the list of names (branches, bookmarks, topics, etc) to push by default. The entire "what to push by default" feature should probably be considered before this patch lands.
Sat, 25 Jun 2016 18:35:14 -0700 ui: don't fixup [paths] sub-options
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 18:35:14 -0700] rev 29412
ui: don't fixup [paths] sub-options As part of developing a subsequent patch I discovered that sub-option values like "." were getting converted to paths. This is because the [paths] section is treated specially during config loading. This patch prevents post-processing sub-options from the [paths] section.
Sat, 25 Jun 2016 07:26:43 -0700 sslutil: abort when unable to verify peer connection (BC)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 07:26:43 -0700] rev 29411
sslutil: abort when unable to verify peer connection (BC) Previously, when we connected to a server and were unable to verify its certificate against a trusted certificate authority we would issue a warning and continue to connect. This is obviously not great behavior because the x509 certificate model is based upon trust of specific CAs. Failure to enforce that trust erodes security. This behavior was defined several years ago when Python did not support loading the system trusted CA store (Python 2.7.9's backports of Python 3's improvements to the "ssl" module enabled this). This commit changes behavior when connecting to abort if the peer certificate can't be validated. With an empty/default Mercurial configuration, the peer certificate can be validated if Python is able to load the system trusted CA store. Environments able to load the system trusted CA store include: * Python 2.7.9+ on most platforms and installations * Python 2.7 distributions with a modern ssl module (e.g. RHEL7's patched 2.7.5 package) * Python shipped on OS X Environments unable to load the system trusted CA store include: * Python 2.6 * Python 2.7 on many existing Linux installs (because they don't ship 2.7.9+ or haven't backported modern ssl module) * Python 2.7.9+ on some installs where Python is unable to locate the system CA store (this is hopefully rare) Users of these Pythongs will need to configure Mercurial to load the system CA store using web.cacerts. This should ideally be performed by packagers (by setting web.cacerts in the global/system hgrc file). Where Mercurial packagers aren't setting this, the linked URL in the new abort message can contain instructions for users. In the future, we may want to add more code for finding the system CA store. For example, many Linux distributions have the CA store at well-known locations (such as /etc/ssl/certs/ca-certificates.crt in the case of Ubuntu). This will enable CA loading to "just work" on more Python configurations and will be best for our users since they won't have to change anything after upgrading to a Mercurial with this patch. We may also want to consider distributing a trusted CA store with Mercurial. Although we should think long and hard about that because most systems have a global CA store and Mercurial should almost certainly use the same store used by everything else on the system.
Sat, 25 Jun 2016 07:32:02 -0700 sslutil: remove out of place comment
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 25 Jun 2016 07:32:02 -0700] rev 29410
sslutil: remove out of place comment This comment likely got orphaned as a result of refactoring in this file. It isn't providing any useful value. So delete it.
Fri, 24 Jun 2016 11:51:00 +0200 largefiles: remove additional blank line between methods in localstore
liscju <piotr.listkiewicz@gmail.com> [Fri, 24 Jun 2016 11:51:00 +0200] rev 29409
largefiles: remove additional blank line between methods in localstore According to the coding style it should be a single blank line between functions.
Thu, 23 Jun 2016 12:37:09 -0700 revset: make head() honor order of subset
Martin von Zweigbergk <martinvonz@google.com> [Thu, 23 Jun 2016 12:37:09 -0700] rev 29408
revset: make head() honor order of subset The ordering of 'x & head()' was broken in 6a1a4c212d50 (revset: improve head revset performance, 2014-03-13). Presumably due to other optimizations since then, undoing that change to fix the order does not slow down the simple case of "hg log -r 'head()'" mentioned in that commit. I see a small slowdown from ~0.16s to about ~0.19s with 'not 0 & head()', but I'd say it's worth it for the correct output.
Thu, 23 Jun 2016 13:08:10 -0700 revsets: use itervalues() where only values are needed
Martin von Zweigbergk <martinvonz@google.com> [Thu, 23 Jun 2016 13:08:10 -0700] rev 29407
revsets: use itervalues() where only values are needed I don't think there will be a noticeable speedup, but it removes an unused variable.
Thu, 23 Jun 2016 12:39:05 -0700 revsets: passing a set to baseset() is not wrong
Martin von Zweigbergk <martinvonz@google.com> [Thu, 23 Jun 2016 12:39:05 -0700] rev 29406
revsets: passing a set to baseset() is not wrong Since 69c6e9623bdc (revset: force ascending order for baseset initialized from a set, 2016-04-04), it is safe to pass a revset to a baseset.
Fri, 24 Jun 2016 02:04:43 +0200 pyflakes: use pycompat.pickles to prevent error
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 24 Jun 2016 02:04:43 +0200] rev 29405
pyflakes: use pycompat.pickles to prevent error The pyflakes in my test box complain about pickle in pycompat. mercurial/pycompat.py:17: 'pickle' imported but unused
Tue, 21 Jun 2016 06:29:23 -0700 rebase: move local variable 'obsoletenotrebased' to the RR class
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 06:29:23 -0700] rev 29404
rebase: move local variable 'obsoletenotrebased' to the RR class
Tue, 21 Jun 2016 06:29:23 -0700 rebase: move restorestestatus function to be a method of the RR class
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 06:29:23 -0700] rev 29403
rebase: move restorestestatus function to be a method of the RR class
Tue, 21 Jun 2016 06:29:23 -0700 rebase: move local variables related to keeping things unchanged to the RR
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 06:29:23 -0700] rev 29402
rebase: move local variables related to keeping things unchanged to the RR This commit moves the following variables, local to the rebase function to be fields of the rebaseruntime: -keepf -keepbranchesf -keepopen
Tue, 21 Jun 2016 06:29:23 -0700 rebase: move local variables 'date' and 'extrafns' to the RR class
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 06:29:23 -0700] rev 29401
rebase: move local variables 'date' and 'extrafns' to the RR class This commit moves the following variables, local to the rebase function to be fields of the rebaseruntime: -date -extrafns
Tue, 21 Jun 2016 06:29:23 -0700 rebase: move collapse-related local variables to the RR class
Kostia Balytskyi <ikostia@fb.com> [Tue, 21 Jun 2016 06:29:23 -0700] rev 29400
rebase: move collapse-related local variables to the RR class This commit moves the following variables local to the 'rebase' function to be fields of the rebaseruntime class: -collapsef -collapsemsg
(0) -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip