Sat, 31 Mar 2018 10:28:18 +0900 py3: fix fix doctests to be bytes-safe
Yuya Nishihara <yuya@tcha.org> [Sat, 31 Mar 2018 10:28:18 +0900] rev 37215
py3: fix fix doctests to be bytes-safe
Wed, 28 Mar 2018 00:11:09 -0400 server: add an error feedback mechanism for when the daemon fails to launch
Matt Harbison <matt_harbison@yahoo.com> [Wed, 28 Mar 2018 00:11:09 -0400] rev 37214
server: add an error feedback mechanism for when the daemon fails to launch There's a recurring problem on Windows where `hg serve -d` will randomly fail to spawn a detached process. The reason for the failure is completely hidden, and it takes hours to get a single failure on my laptop. All this does is redirect stdout/stderr of the child to a file until the lock file is freed, and then the parent dumps it out if it fails to spawn. I chose to put the output into the lock file because that is always cleaned up. There's no way to report errors after that anyway. On Windows, killdaemons.py is roughly `kill -9`, so this ensures that junk won't pile up. This may end up being a case of EADDRINUSE. At least that's what I saw spit out a few times (among other odd errors and missing output on Windows). But I also managed to get the same thing on Fedora 26 by running test-hgwebdir.t with --loop -j10 for several hours. Running `netstat` immediately after killing that run printed a wall of sockets in the TIME_WAIT state, which were gone a couple seconds later. I couldn't match up ports that failed, because --loop doesn't print out the message about the port that was used. So maybe the fix is to rotate the use of HGPORT[12] in the tests. But, let's collect some more data first.
Fri, 30 Mar 2018 20:53:36 -0400 tests: conditionalize test-stream-bundle-v2 for Windows
Matt Harbison <matt_harbison@yahoo.com> [Fri, 30 Mar 2018 20:53:36 -0400] rev 37213
tests: conditionalize test-stream-bundle-v2 for Windows
Mon, 19 Mar 2018 11:16:21 -0400 templatefuncs: add mailmap template function
Connor Sheehan <sheehan@mozilla.com> [Mon, 19 Mar 2018 11:16:21 -0400] rev 37212
templatefuncs: add mailmap template function This commit adds a template function to support the .mailmap file in Mercurial repositories. The .mailmap file comes from git, and can be used to map new emails and names for old commits. The general use case is that someone may change their name or author commits under different emails and aliases, which would make these commits appear as though they came from different persons. The file allows you to specify the correct name that should be used in place of the author field specified in the commit. The mailmap file has 4 possible formats used to map old "commit" names to new "proper" names: 1. <proper@email.com> <commit@email.com> 2. Proper Name <commit@email.com> 3. Proper Name <proper@email.com> <commit@email.com> 4. Proper Name <proper@email.com> Commit Name <commit@email.com> Essentially there is a commit email present in each mailmap entry, that maps to either an updated name, email, or both. The final possible format allows commits authored by a person who used both an old name and an old email to map to a new name and email. To parse the file, we split by spaces and build a name out of every element that does not start with "<". Once we find an element that does start with "<" we concatenate all the name elements that preceded and add that as a parsed name. We then add the email as the first parsed email. We repeat the process until the end of the line, or a comment is found. We will be left with all parsed names in a list, and all parsed emails in a list, with the 0 index being the proper values and the 1 index being the commit values (if they were specified in the entry). The commit values are added as the keys to a dict, and with the proper fields as the values. The mapname function takes the mapping object and the commit author field and attempts to look for a corresponding entry. To do so we try (commit name, commit email) first, and if no results are returned then (None, commit email) is also looked up. This is due to format 4 from above, where someone may have a mailmap entry with both name and email, and if they don't it is possible they have an entry that uses only the commit email. Differential Revision: https://phab.mercurial-scm.org/D2904
Fri, 30 Mar 2018 12:16:46 -0700 extdiff: document that it copies modified files back to working directory
Kyle Lippincott <spectral@google.com> [Fri, 30 Mar 2018 12:16:46 -0700] rev 37211
extdiff: document that it copies modified files back to working directory Differential Revision: https://phab.mercurial-scm.org/D2976
Fri, 30 Mar 2018 13:39:06 -0700 zope: force module import by importing symbols
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 30 Mar 2018 13:39:06 -0700] rev 37210
zope: force module import by importing symbols Previously, we tried to import a module and handle the ImportError. Our lazy module importer doesn't verify the module exists and returns a dummy object representing the module. Only once we attempt to load a symbol in the module does the ImportError get raises. This means that simple imports inside `try..except ImportError` don't detect missing modules. This commit changes imports in zope.interface to access symbols, thus forcing module load and triggering ImportError. This fixes zope.interface for pure builds. Differential Revision: https://phab.mercurial-scm.org/D2980
Fri, 30 Mar 2018 13:17:20 -0700 fix: remove unused imports
Danny Hooper <hooper@google.com> [Fri, 30 Mar 2018 13:17:20 -0700] rev 37209
fix: remove unused imports Differential Revision: https://phab.mercurial-scm.org/D2977
Tue, 27 Mar 2018 17:26:43 +0530 infinitepush: introduce server option to route every push to bundlestore
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Mar 2018 17:26:43 +0530] rev 37208
infinitepush: introduce server option to route every push to bundlestore This patch introduces a new config option for server `infinitepush.pushtobundlestore` which if sets to True, the server will route each incoming push to the bundlestore and store all the parts i.e. changegroups, phases, obsmarkers in the bundlestore and won't be applied to the revlog. This config option does not need any client side wrapping and does not need any custom bundle2 part or stream level parameter to decide where the push should go. This is very useful for Mozilla CI use case where they have a central server that recieves pushes to trigger code-reviews, trigger a test run of CI, run static analysis etc. The server using the new config option can stash standalone bundles to the bundlestore and server can get access to individual revisions on demand. A new test file which has related tests are added for the config option. Differential Revision: https://phab.mercurial-scm.org/D2958
Tue, 27 Mar 2018 17:19:02 +0530 infinitepush: don't wrap bundle2.processparts while calling `hg unbundle`
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Mar 2018 17:19:02 +0530] rev 37207
infinitepush: don't wrap bundle2.processparts while calling `hg unbundle` This patch adds dirty logic to check whether we are processing `hg unbundle` instead of an `hg incoming` to prevent the wrapping of bundle2.processparts function. Differential Revision: https://phab.mercurial-scm.org/D2957
Tue, 27 Mar 2018 14:15:42 +0530 inifnitepush: use utils.{stringutil|procutil}.* instead of util.*
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Mar 2018 14:15:42 +0530] rev 37206
inifnitepush: use utils.{stringutil|procutil}.* instead of util.* Recently in core, util.py is splitted into various modules in mercurial/utils/. Differential Revision: https://phab.mercurial-scm.org/D2956
Fri, 30 Mar 2018 12:50:06 -0700 infinitepush: delete the non-forward-move flag for hg push
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 30 Mar 2018 12:50:06 -0700] rev 37205
infinitepush: delete the non-forward-move flag for hg push Differential Revision: https://phab.mercurial-scm.org/D2955
Wed, 21 Mar 2018 19:23:10 +0530 infinitepush: drop the wrapping of update command on client side
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 21 Mar 2018 19:23:10 +0530] rev 37204
infinitepush: drop the wrapping of update command on client side The extension wraps update command to client side to add functionality to pull and checkout to a revision if it does not present locally. There is a twist to that, only changesets which can resolve to remotenames can be pulled using this. Differential Revision: https://phab.mercurial-scm.org/D2954
Fri, 30 Mar 2018 12:49:50 -0700 infinitepush: delete infinitepushcommands.py and related tests
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 30 Mar 2018 12:49:50 -0700] rev 37203
infinitepush: delete infinitepushcommands.py and related tests This patch drops infinitepushcommands.py and the tests which were related to the command `debugfillinfinitepushmetadata` introduced in the commit. The patch also drops a config option which was related to debuginfinitepushmetadata command. Differential Revision: https://phab.mercurial-scm.org/D2953
Tue, 27 Mar 2018 18:04:05 +0530 infinitepush: delete infinitepush.fillmetadatabranchpattern config option
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 27 Mar 2018 18:04:05 +0530] rev 37202
infinitepush: delete infinitepush.fillmetadatabranchpattern config option This patch deletes the config option infinitepush.fillmetadatabranchpattern which if set to true sets a background process which will save metadata in infinitepush index. This series is meant to have a state where we can use it for CI purposes. Differential Revision: https://phab.mercurial-scm.org/D2952
Fri, 09 Feb 2018 15:49:46 +0530 infinitepush: drop the `--to` flag to push and use `-B` instead
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 09 Feb 2018 15:49:46 +0530] rev 37201
infinitepush: drop the `--to` flag to push and use `-B` instead The extension added a `--to` flag to specify the bookmark to which revs should be pushed. This patch deletes that flag and instead uses the `-B` flag. After this patch, bookmark passed as `-B` is parsed and if it matches the infinitepush bookmark pattern, we consider that push as infinitepush. This is still not the best of what we can do. Later patches in the series will drop the use of `-B` flag and will instead handle things at bookmark bundle2 part. Plugging these logic to bookmark bundle2 part will also get rid of the scratchbranchparttype bundle2 part. Differential Revision: https://phab.mercurial-scm.org/D2108
Fri, 09 Feb 2018 14:16:03 +0530 infinitepush: drop the `--create` flag to push command
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 09 Feb 2018 14:16:03 +0530] rev 37200
infinitepush: drop the `--create` flag to push command The extension added a `--create` flag for creating a new bookmark on the bundlestore. This patch changes the bahviour to create a bookmark if it does not exists and removes the requirement of the `--create` and then drop the logic around the `--create` flag. Tests are changed to drop the usage of `--create` flag. Differential Revision: https://phab.mercurial-scm.org/D2107
Fri, 09 Feb 2018 14:02:03 +0530 infinitepush: drop logic related to treemanifest extension
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 09 Feb 2018 14:02:03 +0530] rev 37199
infinitepush: drop logic related to treemanifest extension treemanifest is another facebook's extension which is not in core. Let's drop the logic related to infinitepush extension which is now ported to core. Differential Revision: https://phab.mercurial-scm.org/D2106
Fri, 09 Feb 2018 13:56:09 +0530 infinitepush: drop hack related to --to, --create flags of remotenames-ext
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 09 Feb 2018 13:56:09 +0530] rev 37198
infinitepush: drop hack related to --to, --create flags of remotenames-ext The remotenames extension has --to, --create. --allow-anon flags which won't be ported to core. This patch drops the hack which fixes the interaction with remotenames-ext during push. In upcoming patches, --to and --create extensions will be removed from infinitepush also. Differential Revision: https://phab.mercurial-scm.org/D2105
Fri, 09 Feb 2018 13:50:16 +0530 infinitepush: drop error handling while pushing to svn server
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 09 Feb 2018 13:50:16 +0530] rev 37197
infinitepush: drop error handling while pushing to svn server This is something which is internal to Facebook and we don't want in core. Differential Revision: https://phab.mercurial-scm.org/D2104
Fri, 09 Feb 2018 13:36:50 +0530 infinitepush: drop `--list-remote`, `--remote-path` flags to bookmark cmd
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 09 Feb 2018 13:36:50 +0530] rev 37196
infinitepush: drop `--list-remote`, `--remote-path` flags to bookmark cmd The extension adds these two flags to list remote bookmarks using the `hg bookmark` command. These are not required in core currently and needs some discussion before getting them in, so let's drop them for now. This makes us deleting the wrapping of `hg bookmark` command on client side. The end goal here is to have minimal or no wrapping at client side. Differential Revision: https://phab.mercurial-scm.org/D2103
Thu, 08 Feb 2018 17:27:47 +0530 infinitepush: drop the scratchbookmarksparttype bundle2 part
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 08 Feb 2018 17:27:47 +0530] rev 37195
infinitepush: drop the scratchbookmarksparttype bundle2 part The scratchbookmarksparttype bundle2 part was used in backupcommands.py which we deleted in an earlier changeset. We don't need this part anymore. Moreover we now have bookmarks bundle2 part in core which we can use. This patch also drops the related encoding and decoding functions. Differential Revision: https://phab.mercurial-scm.org/D2102
Thu, 08 Feb 2018 17:18:28 +0530 infinitepush: remove wrapping around bundle2._addpartsfromopts()
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 08 Feb 2018 17:18:28 +0530] rev 37194
infinitepush: remove wrapping around bundle2._addpartsfromopts() This wrapping around bundle2._addpartsfromopts() was added by me while hacking on an alternate way to mark a push as infinitepush or not. However the wrapping is wrong as the push command does not go through the code path which was wrapped on the client side. Differential Revision: https://phab.mercurial-scm.org/D2101
Thu, 08 Feb 2018 17:12:53 +0530 infinitepush: delete the bundle2 part ordering related to pushrebase
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 08 Feb 2018 17:12:53 +0530] rev 37193
infinitepush: delete the bundle2 part ordering related to pushrebase pushrebase is another Facebook extension which does not live in core yet. So let's remove the logic which make sures infinitepush part is moved before the pushrebase one. Differential Revision: https://phab.mercurial-scm.org/D2100
Thu, 08 Feb 2018 17:09:24 +0530 infinitepush: delete the hack to load the extension after remotenames
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 08 Feb 2018 17:09:24 +0530] rev 37192
infinitepush: delete the hack to load the extension after remotenames The remotenames extension which circumvents the default push implementation lives outside the core, so let's delete logic related to loading of extension on the basis of remotenames ext. Differential Revision: https://phab.mercurial-scm.org/D2099
Sat, 03 Feb 2018 17:59:49 +0530 infinitepush: drop the logic related to inhibit extension
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 03 Feb 2018 17:59:49 +0530] rev 37191
infinitepush: drop the logic related to inhibit extension The inhibit extension lives in hg-experimental and is not a core extension. Differential Revision: https://phab.mercurial-scm.org/D2098
Sat, 03 Feb 2018 17:54:55 +0530 infinitepush: remove backupcommands.py
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 03 Feb 2018 17:54:55 +0530] rev 37190
infinitepush: remove backupcommands.py This file contains command pushbackup and pullbackup which are used to store things to infinitepush. This is an advanced functionality which we don't require as of now. Also this uses shareutil.py from fb-hgext/ which is not there in core. Therefore this patch deletes the file and the config option which belongs to the backup thing. If we need this functionality in future, we can always move this file back. Differential Revision: https://phab.mercurial-scm.org/D2097
Fri, 09 Feb 2018 13:39:15 +0530 infinitepush: move the extension to core from fb-hgext
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 09 Feb 2018 13:39:15 +0530] rev 37189
infinitepush: move the extension to core from fb-hgext This patch moves the infinitepush extension from fb-hgext to core. The extension is used to store incoming bundles during a push in bundlestore rather than applying them to the revlog. The extension was copied from the repository revision at f27f094e91553d3cae5167c0b1c42ae940f888d5 and following changes were made: * added `from __future__ import absolute_import` where missing * fixed module imports to follow the core style * minor fixes for test-check-code.t * registered the configs * adding the testedwith value to match core's convention * removed double newlines to make test-check-commit.t happy * added one line doc about extension and marked it as experimental Only one test file test-infinitepush-bundlestore.t is moved to core and following changes are made to file: * remove dependency of library.sh * split the tests into two tests i.e. test-infinitepush.t and test-infinitepush-bundlestore.t * removed testing related to other facebook's extensions pushrebase, inhibit, fbamend library-infinitepush.sh is also copied from fb-hgext from the same revision and following changes are made: * change the path to infinitepush extension as it's in core with this patch * removed sql handling from the file as we are not testing that initially Currently at this revision, test-check-module-imports.t does not pass as there is import of a module from fb/hgext in one the of the file which will be removed in the next patch. This extension right now has a lot of things which we don't require in core like `--to`, `--create` flags to `hg bookmark`, logic related to remotenames extension and another facebook's extensions, custom bundle2parts which can be prevented by using bookmarks bundle part and also logic related to sql store which is probably we don't want initially. The next patches in this series will remove all the unwanted and unrequired things from the extension and will make this a nice one. The end goal is to have a very lighweight extension with no or very less wrapping on the client side. Differential Revision: https://phab.mercurial-scm.org/D2096
Fri, 30 Mar 2018 11:15:58 -0700 narrow: use repo.local() instead of isinstance()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 30 Mar 2018 11:15:58 -0700] rev 37188
narrow: use repo.local() instead of isinstance() Differential Revision: https://phab.mercurial-scm.org/D2973
Fri, 30 Mar 2018 11:33:21 -0700 tests: add zope.interface to clang-format ignore list
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 30 Mar 2018 11:33:21 -0700] rev 37187
tests: add zope.interface to clang-format ignore list Differential Revision: https://phab.mercurial-scm.org/D2975
Fri, 30 Mar 2018 11:35:17 -0700 contrib: rename clang-format-blacklist to clang-format-ignorelist
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 30 Mar 2018 11:35:17 -0700] rev 37186
contrib: rename clang-format-blacklist to clang-format-ignorelist "blacklist" is racially charged. Let's rename it to something that isn't. Differential Revision: https://phab.mercurial-scm.org/D2974
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip