Tue, 01 Aug 2017 18:52:52 +0900 ui: enable pager always for explicit --pager=on (issue5580) stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Aug 2017 18:52:52 +0900] rev 33620
ui: enable pager always for explicit --pager=on (issue5580) Before this patch, explicit --pager=on is unintentionally ignored by any disabling factor, even if priority of it is less than --pager=on (e.g. "[ui] paginate = off").
Thu, 20 Jul 2017 01:30:41 -0700 rebase: use one dirstateguard for when using rebase.singletransaction
Durham Goode <durham@fb.com> [Thu, 20 Jul 2017 01:30:41 -0700] rev 33619
rebase: use one dirstateguard for when using rebase.singletransaction This was previously landed as 2519994d25ca but backed out in b63351f6a2 because it broke hooks mid-rebase and caused conflict resolution data loss in the event of unexpected exceptions. This new version adds the behavior back but behind a config flag, since the performance improvement is notable in large repositories. The old commit message was: Recently we switched rebases to run the entire rebase inside a single transaction, which dramatically improved the speed of rebases in repos with large working copies. Let's also move the dirstate into a single dirstateguard to get the same benefits. This let's us avoid serializing the dirstate after each commit. In a large repo, rebasing 27 commits is sped up by about 20%. I believe the test changes are because us touching the dirstate gave the transaction something to actually rollback. (grafted from 9e3dc3a1638b9754b58a0cb26aaa75d868058109) (grafted from 7d38b41d2266d9a02a15c64229fae0da5738dcec) Differential Revision: https://phab.mercurial-scm.org/D135
Mon, 31 Jul 2017 21:47:53 +0900 README: make paragraphs before example code end with "::" for reST syntax stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 31 Jul 2017 21:47:53 +0900] rev 33618
README: make paragraphs before example code end with "::" for reST syntax After this patch, README as reST text can be rendered into HTML more appropriately. This is useful for hosting servers, which render README file as a part of index HTML of its directory (for example, Bitbucket).
Mon, 31 Jul 2017 14:54:57 -0700 commit: don't let failed commit with --addremove update dirstate (issue5645) stable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 31 Jul 2017 14:54:57 -0700] rev 33617
commit: don't let failed commit with --addremove update dirstate (issue5645) Differential Revision: https://phab.mercurial-scm.org/D204
Mon, 31 Jul 2017 14:54:08 -0700 tests: demonstrate that failed "hg ci -A" updates dirstate (issue5645) stable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 31 Jul 2017 14:54:08 -0700] rev 33616
tests: demonstrate that failed "hg ci -A" updates dirstate (issue5645) Differential Revision: https://phab.mercurial-scm.org/D203
Mon, 31 Jul 2017 16:32:01 -0700 tests: fix test-flagprocessor.t flakiness stable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 31 Jul 2017 16:32:01 -0700] rev 33615
tests: fix test-flagprocessor.t flakiness The test for duplicate flag processors depended on the timestamps being set in the dirstate to work. If the time between the the previous failed commit (which would set the timestamp, due to bug 5645) and the attempted commit with the duplicate flag processors was small enough, it would fail. The failure was caused by a call to commands.status() early in the commit process. If the dirstate did not have the timestamp set, it would need to fetch the file content to compare with. Since two flag processors had been registered, it would attempted to base64 decode the contents twice, which would of course fail. This patch adds a "hg debugrebuilddirstate" to make it deterministic and also replaces the test case's "hg commit" by simply "hg status", since that will trigger reading of the contents and thereby use of the flag processors as noted above. Differential Revision: https://phab.mercurial-scm.org/D202
Mon, 31 Jul 2017 16:40:31 -0700 tests: clarify that duplicate flag processors is not an error stable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 31 Jul 2017 16:40:31 -0700] rev 33614
tests: clarify that duplicate flag processors is not an error The flag processors test for duplicate processors for a single flag was misleading because the file from the previous test case caused it to fail (making the "echo 'this should fail' > file" part irrelevant). Let's remove the leftover from the previous test case to make it clear that duplicate flag processors results only in a warning. Note that duplicate flag processors would have resulted in a failure (not just a warning) until ea1c2eb7abd3 (extensions: catch uisetup and extsetup failures and don't let them break hg, 2017-06-06). I remember expressing my concern about ending up with half-loaded extensions. It would be pretty unfortunate to have double-encoded revlog content enter a repo, so maybe we should reconsider? Differential Revision: https://phab.mercurial-scm.org/D201
Tue, 01 Aug 2017 01:27:32 +0900 tests: avoid unexpected result at invocation of *.py file on Windows stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Aug 2017 01:27:32 +0900] rev 33613
tests: avoid unexpected result at invocation of *.py file on Windows Invocation of "diff tool.py" in test-extdiff.t tests whether shellquote() is applied on specified command as expected. But direct invocation of "*.py" file might cause unexpected result on Windows according to suffix binding. For example, starting IDE, showing dialog to choose program to be used, and so on. In such case, running test-extdiff.t is easily timed out. This patch uses intermediate *.bat file on Windows, to avoid such unexpected result. Naming that intermediate file as "diff tool.bat" is enough to test applying shellquote().
Mon, 31 Jul 2017 13:16:34 +0900 tests: use pdiff instead of diff for portability stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 31 Jul 2017 13:16:34 +0900] rev 33612
tests: use pdiff instead of diff for portability "diff" command might cause redundant message, "No differences encountered" on Solaris for example. But suppressing option like "-q" isn't portable, because POSIX specification doesn't define it. pdiff script was introduced by b59ef0c21405 to stabilize output of standard diff command on each platforms.
Mon, 31 Jul 2017 13:10:19 +0900 tests: make pdiff return appropriate exit code at comparison of files stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 31 Jul 2017 13:10:19 +0900] rev 33611
tests: make pdiff return appropriate exit code at comparison of files Before this patch, pdiff script returns 0, even if diff is detected. This issue doesn't cause failure of tests using it, if it is invoked via extdiff extension, because extdiff itself examines changes between specified revisions and decides exit code. BTW, this patch ignores recursive comparison case, because: - there is no portable way for current while-read based implementation to return 1 at detecting changes - it isn't yet needed to replace direct "diff -r" invocation by pdiff for portability
Tue, 01 Aug 2017 10:14:25 -0400 merge with stable
Augie Fackler <augie@google.com> [Tue, 01 Aug 2017 10:14:25 -0400] rev 33610
merge with stable
Mon, 31 Jul 2017 12:43:26 -0700 tests: make test-profile.t pass if statprof didn't collect samples stable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 31 Jul 2017 12:43:26 -0700] rev 33609
tests: make test-profile.t pass if statprof didn't collect samples We had the first 3 tests in test-profile.t fail because the output didn't match. I have not yet confirmed that this was because no samples were collected, but we shouldn't require samples to be collected for the test to pass either way. Differential Revision: https://phab.mercurial-scm.org/D199
Thu, 27 Jul 2017 10:52:56 +0200 pypy: fix failing test-devel-warnings.t with Pypy5.6.0 stable
Boris Feld <boris.feld@octobus.net> [Thu, 27 Jul 2017 10:52:56 +0200] rev 33608
pypy: fix failing test-devel-warnings.t with Pypy5.6.0 In Pypy 5.6.0, traceback exception classes are not displayed with their full qualified name. Instead of displaying mercurial.error.ProgrammingError, Pypy displays ProgrammingError. Update the test to support both version.
Mon, 31 Jul 2017 17:43:45 +0200 pypy: fix failing test files with Pypy5.6.0 stable
Boris Feld <boris.feld@octobus.net> [Mon, 31 Jul 2017 17:43:45 +0200] rev 33607
pypy: fix failing test files with Pypy5.6.0 Pypy 5.6.0 saves cached bytecode files in __pycache__ directory, clean them in tests to fix loading old test extensions code. Doing so should also helps for Python3.x migration.
Sun, 30 Jul 2017 12:19:46 +0530 commitextras: make sure keys are not empty stable
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 30 Jul 2017 12:19:46 +0530] rev 33606
commitextras: make sure keys are not empty Thanks to Yuya for catching this.
Sat, 29 Jul 2017 19:12:48 -0700 make: add new directory 'hgdemandimport' to cleanbutpackages rule stable
Sean Farley <sean@farley.io> [Sat, 29 Jul 2017 19:12:48 -0700] rev 33605
make: add new directory 'hgdemandimport' to cleanbutpackages rule This fixes the build process for ppa (at least in my simple check). Perhaps we should loop through all directory that aren't 'packages'?
Sat, 29 Jul 2017 12:50:56 -0700 statichttprepo: implement wlock() (issue5613) stable
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 29 Jul 2017 12:50:56 -0700] rev 33604
statichttprepo: implement wlock() (issue5613) statichttprepo inherits from localrepository. In doing so, it obtains default implementations of various methods, like wlock(). Before this change, tags cache writing would call repo.wlock(). This failed on statichttprepo due to localrepository's wlock() looking for an instance attribute that doesn't exist on statichttprepo (statichttprepo doesn't call localrepository.__init__). We /could/ define missing attributes until the base wlock() works. However, a statichttprepo is remote and read-only and can't be locked. The class already has a lock() that short circuits. So it makes sense to implement a short-circuited wlock() as well. That is what this patch does. LockError is expected to be raised when locking fails. The constructor takes a number of arguments that are local repository centric. Rather than rework LockError to not require them (which would not be appropriate for stable), this commit populates dummy values. I don't believe they'll ever be seen by the user, as lock failures on static http repos should be limited to well-defined (and tested) scenarios. We can and should revisit the LockError type to improve this.
Sat, 29 Jul 2017 12:40:05 -0700 test: add tests for branches and tags with static http repo (issue5613) stable
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 29 Jul 2017 12:40:05 -0700] rev 33603
test: add tests for branches and tags with static http repo (issue5613) Mercurial currently fails to clone by revision on static http repos with tags. The added tests demonstrate this.
Fri, 28 Jul 2017 07:42:55 +0530 commitextras: make sure keys contains ascii letters, numbers, '_' and '-' only stable
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 28 Jul 2017 07:42:55 +0530] rev 33602
commitextras: make sure keys contains ascii letters, numbers, '_' and '-' only
Thu, 27 Jul 2017 12:03:01 -0700 phabricator: convert unicode to binary when writing patches stable
Jun Wu <quark@fb.com> [Thu, 27 Jul 2017 12:03:01 -0700] rev 33601
phabricator: convert unicode to binary when writing patches This is a quick fix to make `hg phabread D189` work. It seems we might want to replace all `r''` to `u''`, and add more `encoding.*to*` to be more explicit when interacting with `json` module. Differential Revision: https://phab.mercurial-scm.org/D192
Thu, 27 Jul 2017 23:15:14 +0900 setup: silence warning of unknown option python_requires on distutils stable
Yuya Nishihara <yuya@tcha.org> [Thu, 27 Jul 2017 23:15:14 +0900] rev 33600
setup: silence warning of unknown option python_requires on distutils /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'python_requires'
Thu, 20 Jul 2017 22:47:40 +0900 setup: forcibly include cext/pure packages in py2exe (issue5625) stable
Yuya Nishihara <yuya@tcha.org> [Thu, 20 Jul 2017 22:47:40 +0900] rev 33599
setup: forcibly include cext/pure packages in py2exe (issue5625) Since these modules are implicitly imported by policy.importmod(), py2exe can't track them statically. cffi modules are excluded for now because they wouldn't be useful in frozen (i.e. CPython) environment.
Thu, 20 Jul 2017 22:32:37 +0900 setup: do not select hg executable that prints unexpected warnings stable
Yuya Nishihara <yuya@tcha.org> [Thu, 20 Jul 2017 22:32:37 +0900] rev 33598
setup: do not select hg executable that prints unexpected warnings Otherwise the subsequent hg.run() would fail. This factors out the filtering function so the same rule should apply.
Thu, 27 Jul 2017 13:44:15 +0200 docker: pass proxy arguments to docker process stable
Mathias De Maré <mathias.de_mare@nokia.com> [Thu, 27 Jul 2017 13:44:15 +0200] rev 33597
docker: pass proxy arguments to docker process Building in Docker when behind a proxy requires passing the proxy variables. Differential Revision: https://phab.mercurial-scm.org/D190
Thu, 27 Jul 2017 14:15:26 +0200 makefile: build on CentOS 6 with a Python 2.7 stable
Mathias De Maré <mathias.de_mare@nokia.com> [Thu, 27 Jul 2017 14:15:26 +0200] rev 33596
makefile: build on CentOS 6 with a Python 2.7 Differential Revision: https://phab.mercurial-scm.org/D189
Mon, 24 Jul 2017 20:39:26 -0400 osx: wire up genosxversion script stable
Augie Fackler <augie@google.com> [Mon, 24 Jul 2017 20:39:26 -0400] rev 33595
osx: wire up genosxversion script The only version strings that are changed are the ones baked into the .pkg - hg's self-reported version string doesn't change, so users will still see our mostly-pip-compatible version strings. For reference, the part of our versioning setup that's not PEP440 compatible is the RC releases - those should be .rc0 insted of -rc. It's too late to change that for the 4.3 cycle, so I'll worry about fixing that during the 4.4 cycle.
Mon, 24 Jul 2017 20:38:09 -0400 osx: new script for generating OS X package versions stable
Augie Fackler <augie@google.com> [Mon, 24 Jul 2017 20:38:09 -0400] rev 33594
osx: new script for generating OS X package versions If you're shipping prerelease or rc packages using Munki, you'll eventually discover that Munki's version comparison logic is not as good as pip's. In theory we should be able to fix Munki, but it seems entirely reasonable to produce version strings that sort reasonably under these conditions. Since the requried logic not brief, add a new script and some tests of that logic. A followup change will wire this into the Makefile.
Mon, 24 Jul 2017 20:34:08 -0400 tests: update mac packaging test expectations stable
Augie Fackler <augie@google.com> [Mon, 24 Jul 2017 20:34:08 -0400] rev 33593
tests: update mac packaging test expectations Some more files are included these days.
Wed, 26 Jul 2017 17:56:44 -0400 tests: add support in run-tests.py for an environment variable to stop color stable
Augie Fackler <augie@google.com> [Wed, 26 Jul 2017 17:56:44 -0400] rev 33592
tests: add support in run-tests.py for an environment variable to stop color I don't like the color output, so this gives me a way to easily never see it while still having pygments on my machine.
Wed, 26 Jul 2017 13:21:34 -0400 setup: fix mistake that prevented Python 3 from being excluded stable
Augie Fackler <augie@google.com> [Wed, 26 Jul 2017 13:21:34 -0400] rev 33591
setup: fix mistake that prevented Python 3 from being excluded My intent was to only allow Python 3 if the right environment variable is set (for when people want to use `pip install .` on hg locally). This fixes the bug in my previous change. I verified that `python3.6 run-tests.py` still passes the tests that passed before, and that all tests pass on 2.7 (including our virtualenv-using installation test). Differential Revision: https://phab.mercurial-scm.org/D185
Mon, 24 Jul 2017 23:52:56 -0700 rebase: move bookmark to destination for commits becoming empty (issue5627) stable
Jun Wu <quark@fb.com> [Mon, 24 Jul 2017 23:52:56 -0700] rev 33590
rebase: move bookmark to destination for commits becoming empty (issue5627) When rebasing a changeset X and that changeset becomes empty, we should move the bookmark on X to rebase destination. This is a regression caused by the scmutil.cleanupnodes refactoring for rebase. The `adjustdest` function calculates the destination of bookmark movement. It was back-ported from https://phab.mercurial-scm.org/D21. It might be slightly more powerful than the minimal requirement to solve this issue. For example, it's impossible for a merge changeset to become empty while any of its ancestors does not become empty, but the code could handle that case. Since the code is reasonably short and clean, and helps the upcoming D21 series, I'd like to check-in `adjustdest` now. Thanks Martin von Zweigbergk for spotting corner cases (-k and descendant with bookmarks) in this area!
Wed, 26 Jul 2017 23:39:42 +0900 setup: drop use of set literal so parsable on Python 2.6 stable
Yuya Nishihara <yuya@tcha.org> [Wed, 26 Jul 2017 23:39:42 +0900] rev 33589
setup: drop use of set literal so parsable on Python 2.6 Otherwise friendly error wouldn't be displayed.
Fri, 21 Jul 2017 10:46:31 -0400 setup: add extra logic to try and recommend a new pip on bad Python stable
Augie Fackler <augie@google.com> [Fri, 21 Jul 2017 10:46:31 -0400] rev 33588
setup: add extra logic to try and recommend a new pip on bad Python Modern pip can detect supported Python versions (which we now declare), and pull down a reasonable release. This trick was suggested in http://bit.ly/pycon2017-build-bridges, and seems like a good defensive maneuver so that when we want to move to Python 3 it's less risky for existing users. This moves the version-check logic after defining our printf function so we can print more informative messages.
Fri, 21 Jul 2017 10:39:52 -0400 setup: explicitly declare supported Python versions stable
Augie Fackler <augie@google.com> [Fri, 21 Jul 2017 10:39:52 -0400] rev 33587
setup: explicitly declare supported Python versions I think we should probably backport this to 4.2 as well, and do one more release there that explicitly declares 2.6 support. That way anyone stuck on Python 2.6 will end up getting the right hg if they use a modern pip to install. Users can still use `python setup.py` incantations to attempt installing Mercurial on unsupported Pythons, including 3.5 and 3.6. A followup change will switch to only doing our own Python-version-check logic if we're not being installed by a reasonable pip.
Mon, 24 Jul 2017 15:37:57 -0400 contrib: remove one test from the python 3 whitelist stable
Augie Fackler <augie@google.com> [Mon, 24 Jul 2017 15:37:57 -0400] rev 33586
contrib: remove one test from the python 3 whitelist 439b4d005b4a introduced a use of 'hg revert --no-backup' which is currently broken. Rather than try and do a fix on the (complicated) revert code during the freeze, let's just give up on this test under Python 3 until later. Once we do fix things, the test ratchet script will re-enable it.
Mon, 24 Jul 2017 13:50:25 -0400 ui: fix configbytes isinstance check to look for bytes and not str stable
Augie Fackler <augie@google.com> [Mon, 24 Jul 2017 13:50:25 -0400] rev 33585
ui: fix configbytes isinstance check to look for bytes and not str Fixes configbytes on Python 3.
Mon, 24 Jul 2017 14:42:55 -0400 patch: update copying of dict keys and values to work on Python 3 stable
Augie Fackler <augie@google.com> [Mon, 24 Jul 2017 14:42:55 -0400] rev 33584
patch: update copying of dict keys and values to work on Python 3
Fri, 21 Jul 2017 14:22:08 +0000 phabricator: include the suggested arc config in the repo stable
Alex Gaynor <agaynor@mozilla.com> [Fri, 21 Jul 2017 14:22:08 +0000] rev 33583
phabricator: include the suggested arc config in the repo Test Plan: I uploaded this revision with `arc diff` Differential Revision: https://phab.mercurial-scm.org/D171
Wed, 19 Jul 2017 14:50:50 -0700 match: override visitdir() in nevermatcher to return False stable
Martin von Zweigbergk <martinvonz@google.com> [Wed, 19 Jul 2017 14:50:50 -0700] rev 33582
match: override visitdir() in nevermatcher to return False When we changed basematcher.visitdir() in cf15c3cc304c (match: make base matcher return True for visitdir, 2017-07-14), we forgot to add an override in nevermatcher. This led to tests failing in narrowhg. As Durham pointed out, it's high time to add unit tests for the matcher, so this patch also adds a first unit test. Differential Revision: https://phab.mercurial-scm.org/D151
Fri, 21 Jul 2017 11:26:51 -0500 wix: update list of necessary pyd files stable
Steve Borho <steve@borho.org> [Fri, 21 Jul 2017 11:26:51 -0500] rev 33581
wix: update list of necessary pyd files
Fri, 21 Jul 2017 08:43:39 -0700 run-tests: pre instantiate pygments objects stable
Jun Wu <quark@fb.com> [Fri, 21 Jul 2017 08:43:39 -0700] rev 33580
run-tests: pre instantiate pygments objects This speeds up run-tests.py diff output by 10x, which affects developer experience significantly. As demonstrated by the following test: ``` #require pygments $ for i in `seq 1 200`; do > echo ' $ echo '$i >> test-a.t > echo ' wrong' >> test-a.t > done $ cat > walltime.py <<EOF > from __future__ import absolute_import, print_function > import os, sys, time > t1 = time.time() > os.system(' '.join(sys.argv[1:]) + ' >/dev/null 2>/dev/null') > t2 = time.time() > print('%0.2f' % (t2 - t1)) > EOF $ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=never $TESTTMP/test-a.t 0.24 Before this patch: $ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=always $TESTTMP/test-a.t 2.46 After this patch: $ $PYTHON walltime.py $TESTDIR/run-tests.py -l --color=always $TESTTMP/test-a.t 0.25 ```
Wed, 19 Jul 2017 13:44:22 -0400 contrib: drop Python 2.6 from manylinux1 wheel script stable
Augie Fackler <augie@google.com> [Wed, 19 Jul 2017 13:44:22 -0400] rev 33579
contrib: drop Python 2.6 from manylinux1 wheel script
Wed, 19 Jul 2017 13:45:06 -0400 contrib: make build-linux-wheels.sh executable stable
Augie Fackler <augie@google.com> [Wed, 19 Jul 2017 13:45:06 -0400] rev 33578
contrib: make build-linux-wheels.sh executable
Thu, 20 Jul 2017 18:04:21 -0700 test-dirstate-race: hide irrelevant hg status output stable
Siddharth Agarwal <sid0@fb.com> [Thu, 20 Jul 2017 18:04:21 -0700] rev 33577
test-dirstate-race: hide irrelevant hg status output See the explanation for more. Differential Revision: https://phab.mercurial-scm.org/D153
Tue, 18 Jul 2017 20:34:22 -0400 test-commit: stabilize for filesystems without symlink support stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Jul 2017 20:34:22 -0400] rev 33576
test-commit: stabilize for filesystems without symlink support
Tue, 18 Jul 2017 19:49:51 -0400 test-https: properly conditionalize Windows vs non-Windows output stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Jul 2017 19:49:51 -0400] rev 33575
test-https: properly conditionalize Windows vs non-Windows output There's a bug in the (feature !) annotation, and this needs to be resolved before fixing it. Once fixed, the glob '*/missing' will match the output '/missing' on non-Windows platforms, consuming the output line and leaving nothing for the no-windows required line. I probably should have made (foo !) match only the 'foo' feature, and be ignored otherwise instead of optional. (re) didn't work here, because the parenthesis need to be escaped too.
Wed, 19 Jul 2017 07:58:03 -0500 Added signature for changeset 857876ebaed4 stable
Kevin Bullock <kbullock@ringworld.org> [Wed, 19 Jul 2017 07:58:03 -0500] rev 33574
Added signature for changeset 857876ebaed4
Wed, 19 Jul 2017 07:57:53 -0500 Added tag 4.3-rc for changeset 857876ebaed4 stable
Kevin Bullock <kbullock@ringworld.org> [Wed, 19 Jul 2017 07:57:53 -0500] rev 33573
Added tag 4.3-rc for changeset 857876ebaed4
Wed, 19 Jul 2017 07:51:41 -0500 merge default into stable for code freeze stable 4.3-rc
Kevin Bullock <kbullock+mercurial@ringworld.org> [Wed, 19 Jul 2017 07:51:41 -0500] rev 33572
merge default into stable for code freeze
Tue, 18 Jul 2017 23:04:08 +0530 releasenotes: add custom admonitions support for release notes
Rishabh Madan <rishabhmadan96@gmail.com> [Tue, 18 Jul 2017 23:04:08 +0530] rev 33571
releasenotes: add custom admonitions support for release notes By default, the extension has default sections like fix, feature, perf etc.. This patch allow user to add support for custom admonition. In order to add a custom admonition, one needs to have a .hgreleasenotes file inside the repository. All the custom directive with name specified under the tag [sections] will be usable by the extension. One important thing to keep in mind is if there exists any custom admonitions with same key as default then they will override the default ones.
Tue, 18 Jul 2017 06:27:36 -0700 check-config: mention the file and line of the error
Ryan McElroy <rmcelroy@fb.com> [Tue, 18 Jul 2017 06:27:36 -0700] rev 33570
check-config: mention the file and line of the error I used this to more quickly track down a failing test-check-config.t issue in another repo. I thought it might be useful more generally, so I'm sending it out in case others think it's a worthwhile change.
Tue, 18 Jul 2017 07:47:28 -0700 rebase: add config to move rebase into a single transaction
Durham Goode <durham@fb.com> [Tue, 18 Jul 2017 07:47:28 -0700] rev 33569
rebase: add config to move rebase into a single transaction This was previously landed as cf8ad0e6c0e4 but backed out in a5abaa81fa because it broke hook mid rebase and caused conflict resolution data loss in the event of unexpected exceptions. This new version adds the behavior back but behind a config flag, since the performance improvement is notable in large repositories. The next patch adds a test covering this config. The old commit message was: Previously, rebasing would open several transaction over the course of rebasing several commits. Opening a transaction can have notable overhead (like copying the dirstate) which can add up when rebasing many commits. This patch adds a single large transaction around the actual commit rebase operation, with a catch for intervention which serializes the current state if we need to drop back to the terminal for user intervention. Amazingly, almost all the tests seem to pass. On large repos with large working copies, this can speed up rebasing 7 commits by 25%. I'd expect the percentage to be a bit larger for rebasing even more commits. There are minor test changes because we're rolling back the entire transaction during unexpected exceptions instead of just stopping mid-rebase, so there's no more backup bundle. It also leave an unknown file in the working copy, since our clean up 'hg update' doesn't delete unknown files. (grafted from cca36c7f35261b0e31beb226bf361067ef0e06ab) (grafted from dc497d8705b71503e32e07bd33925c1e42cf9c9a) Differential Revision: https://phab.mercurial-scm.org/D134
Mon, 17 Jul 2017 16:32:10 -0700 run-tests: remove unnecessary 'with_color' variable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 17 Jul 2017 16:32:10 -0700] rev 33568
run-tests: remove unnecessary 'with_color' variable Its value is always the same as that of 'pygmentspresent'. Differential Revision: https://phab.mercurial-scm.org/D118
Mon, 17 Jul 2017 16:27:13 -0700 run-tests: warn if --color=always and no pygments installed
Martin von Zweigbergk <martinvonz@google.com> [Mon, 17 Jul 2017 16:27:13 -0700] rev 33567
run-tests: warn if --color=always and no pygments installed Differential Revision: https://phab.mercurial-scm.org/D117
Mon, 17 Jul 2017 16:28:42 -0700 run-tests: drop unnecessary check for pygmentspresent
Martin von Zweigbergk <martinvonz@google.com> [Mon, 17 Jul 2017 16:28:42 -0700] rev 33566
run-tests: drop unnecessary check for pygmentspresent 2893face0af5 (run-tests: check if stream is a tty before using color, 2017-07-18) made the check redundant but forgot to remove it. Differential Revision: https://phab.mercurial-scm.org/D116
Mon, 17 Jul 2017 16:15:15 -0700 run-tests: pass color option via test case object , not global var
Martin von Zweigbergk <martinvonz@google.com> [Mon, 17 Jul 2017 16:15:15 -0700] rev 33565
run-tests: pass color option via test case object , not global var At first I updated the color field of the 'options' object (from the CLI parser), but then I decided to put it directly on the test case object itself to avoid mutating the shared object (even though all tests would have the same value). Differential Revision: https://phab.mercurial-scm.org/D114
Mon, 10 Jul 2017 18:02:03 -0700 phabricator: sanity check Differential Revision from commit message
Jun Wu <quark@fb.com> [Mon, 10 Jul 2017 18:02:03 -0700] rev 33564
phabricator: sanity check Differential Revision from commit message Previously, we trust Differential Revision in commit message blindly. This patch adds sanity check so a host name change will be detected and the commit message will be ignored. Differential Revision: https://phab.mercurial-scm.org/D35
Tue, 18 Jul 2017 08:14:10 -0400 test-phases-exchange: properly conditionalize output
Matt Harbison <matt_harbison@yahoo.com> [Tue, 18 Jul 2017 08:14:10 -0400] rev 33563
test-phases-exchange: properly conditionalize output I forgot to invert the conditions, and the test runner didn't catch it[1]. But since only '&&' is supported in the per-line feature tests, this won't work anyway. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-July/101941.html
Tue, 18 Jul 2017 00:10:44 +0530 commitextras: mark the extension as ADVANCED
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 18 Jul 2017 00:10:44 +0530] rev 33562
commitextras: mark the extension as ADVANCED
Tue, 18 Jul 2017 07:19:26 +0900 run-tests: check if stream is a tty before using color
Matthieu Laneuville <matthieu.laneuville@octobus.net> [Tue, 18 Jul 2017 07:19:26 +0900] rev 33561
run-tests: check if stream is a tty before using color Previous implementation (e80041832eec) checked only if sys.stderr was a tty which was less general. Also makes sure that colors is never used if pygments is not available, irrespective of --color flag value.
Fri, 14 Jul 2017 21:44:29 -0700 tests: rewrite test-rebase-detach.t using drawdag
Martin von Zweigbergk <martinvonz@google.com> [Fri, 14 Jul 2017 21:44:29 -0700] rev 33560
tests: rewrite test-rebase-detach.t using drawdag This makes it much clearer because each test case can have exactly the graph it wants (no extra cruft just because other tests want it). Differential Revision: https://phab.mercurial-scm.org/D94
Fri, 14 Jul 2017 23:09:17 -0700 tests: simplify config in test-rebase-detach.t
Martin von Zweigbergk <martinvonz@google.com> [Fri, 14 Jul 2017 23:09:17 -0700] rev 33559
tests: simplify config in test-rebase-detach.t Differential Revision: https://phab.mercurial-scm.org/D93
Fri, 14 Jul 2017 22:32:58 -0700 drawdag: include files from both parents in merge commits
Martin von Zweigbergk <martinvonz@google.com> [Fri, 14 Jul 2017 22:32:58 -0700] rev 33558
drawdag: include files from both parents in merge commits Consider a graph like this: D |\ B C |/ A drawdag will add a file called A in commit A, file B in B, file C in C. That's fine and expected. In merge commits like D, I would expect the files and their contents to be taken from the parent commits, so commit D in this example would have files A, B, and C. However, drawdag will instead add the file D compared to the first parent. Depending on whether B or C got a smaller nodeid, the contents of D would be {A, B, D} or {A, C, D}. This patch changes it to to be {A, B, C}. Differential Revision: https://phab.mercurial-scm.org/D92
Mon, 17 Jul 2017 15:54:15 -0700 gitweb: preserve whitespace in description
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 17 Jul 2017 15:54:15 -0700] rev 33557
gitweb: preserve whitespace in description Without this, multiple spaces or tabs in the commit message aren't preserved and things like tables don't align properly. As part of adding the CSS rule, we had to cuddle the content with the <div> to not introduce leading and trailing whitespace. The "addbreaks" filter was also removed because it would insert an additional newline, effectively double spacing content. Differential Revision: https://phab.mercurial-scm.org/D113
Mon, 17 Jul 2017 11:45:38 -0700 sparse: add a requirement when a repository uses sparse (BC)
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 17 Jul 2017 11:45:38 -0700] rev 33556
sparse: add a requirement when a repository uses sparse (BC) The presence of a sparse checkout can confuse legacy clients or clients without sparse enabled for reasons that should be obvious. This commit introduces a new repository requirement that tracks whether sparse is enabled. The requirement is added when a sparse config is activated and removed when the sparse config is reset. The localrepository constructor has been taught to not open repos with this requirement unless the sparse feature is enabled. It yields a more actionable error message than what you would get if the lockout were handled strictly at the requirements verification phase. Old clients that aren't sparse aware will see the generic "repository requires features unknown to this Mercurial" error, however. The new requirement has "exp" in its name to reflect the experimental nature of sparse. There's a chance that the eventual non-experimental feature won't change significantly and we could have squatted on the "sparse" requirement without ill effect. If that happens, we can teach new clients to still recognize the old name. But I suspect we'll sneak in some BC and we'll want a new requirement to convey new meaning. Differential Revision: https://phab.mercurial-scm.org/D110
Mon, 17 Jul 2017 11:21:23 -0700 sparse: consolidate common code for writing sparse config
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 17 Jul 2017 11:21:23 -0700] rev 33555
sparse: consolidate common code for writing sparse config In 3 functions we were writing the sparse config and updating the working directory. In two of them we had a transaction-like process for restoring the sparse config in case of wdir update fail. Because the pattern is common, we've already made mistakes, and the complexity will increase in the near future, let's consolidate the code into a reusable function. As part of this refactor, we end up reading the "sparse" file twice when updating it. This is a bit sub-optimal. But I don't think it is worth the code complexity to pass around the variables to avoid the redundancy. Differential Revision: https://phab.mercurial-scm.org/D109
Sat, 15 Jul 2017 15:51:57 -0700 revset: pass repo when passing ui
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 15 Jul 2017 15:51:57 -0700] rev 33554
revset: pass repo when passing ui The repo instance is currently only used to provide a changeset lookup function as part of parsing revsets. I /think/ this allows node fragments to resolve. I'm not sure why we wouldn't want this to always "just work" if parsing a revset string. Plus, an upcoming commit will introduce a new consumer that needs a handle on the repo. So passing it more often will make that code work more. Passing a repo instance in all callers of revset.match* results in a bunch of test changes. Notably, branch and tags caches get populated as part of evaluating revsets. I'm not sure if this is desirable. So this patch takes the conservative approach and only passes the repo if we're passing a ui instance. Differential Revision: https://phab.mercurial-scm.org/D97
Mon, 17 Jul 2017 13:22:59 -0500 win32: copy-edit debugssl messages to match prevailing style
Kevin Bullock <kbullock+mercurial@ringworld.org> [Mon, 17 Jul 2017 13:22:59 -0500] rev 33553
win32: copy-edit debugssl messages to match prevailing style
Sat, 15 Jul 2017 02:17:05 +0530 run-tests: make sure to check if pygments is installed before using it
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 15 Jul 2017 02:17:05 +0530] rev 33552
run-tests: make sure to check if pygments is installed before using it e80041832e introduced support to color the output of tests but used pygments without checking whether it's installed or not. That breaks test-run-tests.t for machines which don't have pygments installed. This patch conditionalize the color test in test-run-tests.t and also add a check to make sure pygments is installed before using that.
Sat, 15 Jul 2017 13:21:23 -0700 sparse: require [section] in sparse config files (BC)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 15 Jul 2017 13:21:23 -0700] rev 33551
sparse: require [section] in sparse config files (BC) Previously, [include] was implicit and pattern lines before a [section] were added to includes. Because the format may change in the future and explicit behavior, well, more explicit, this commit changes the config parser to reject pattern lines that don't occur in a [section]. Differential Revision: https://phab.mercurial-scm.org/D96
Sat, 15 Jul 2017 13:07:57 -0700 sparse: use set for capturing profiles
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 15 Jul 2017 13:07:57 -0700] rev 33550
sparse: use set for capturing profiles Order doesn't need to be preserved. A set is acceptable. Differential Revision: https://phab.mercurial-scm.org/D95
Mon, 17 Jul 2017 12:38:07 -0400 util: remove dead code which used to be for old python2 versions
Alex Gaynor <agaynor@mozilla.com> [Mon, 17 Jul 2017 12:38:07 -0400] rev 33549
util: remove dead code which used to be for old python2 versions Differential Revision: https://phab.mercurial-scm.org/D107
Sat, 17 Jun 2017 20:10:22 +0530 status: add a flag to terse the output (issue4119)
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 20:10:22 +0530] rev 33548
status: add a flag to terse the output (issue4119) This adds an experimental flag -t/--terse which will terse the output. The terse flag will respect other flags which filters the output. The flag takes a string whose value can be a subsequence of "marduic" (the order does not matter here.) Ignored files are not considered while tersing unless -i flag is passed or 'i' is there is the terse flag value. The flag is experimental for testing as there may be cases which will produce strange results with the flag. We can set the terse on by default by simply passing 'u' to the cmdutil.tersestatus(). This patch also adds a test file with tests covering the new feature.
Wed, 12 Jul 2017 16:10:10 +0530 commitextras: check the format of the arguments and no internal key is used
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 12 Jul 2017 16:10:10 +0530] rev 33547
commitextras: check the format of the arguments and no internal key is used This patch adds check to make the arguments are passed as KEY=VALUE and no key which is used internally is passed. This patch also adds test for the extension.
Wed, 12 Jul 2017 00:23:45 +0530 commitextras: move fb extension to core which add extras to a commit
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 12 Jul 2017 00:23:45 +0530] rev 33546
commitextras: move fb extension to core which add extras to a commit This patch moves the Facebook extension to add extra fields to a commit to a in-core extension.
Mon, 17 Jul 2017 00:49:29 -0400 archive: add an experimental config to control the metadata file template
Matt Harbison <matt_harbison@yahoo.com> [Mon, 17 Jul 2017 00:49:29 -0400] rev 33545
archive: add an experimental config to control the metadata file template Experimental because given the possible complexity, it may be worth figuring out how to load this from a file, similar to the style files for the log command, instead of trying to stuff it on the command line.
Sun, 16 Jul 2017 17:40:36 -0400 archive: use a templater to build the metadata file
Matt Harbison <matt_harbison@yahoo.com> [Sun, 16 Jul 2017 17:40:36 -0400] rev 33544
archive: use a templater to build the metadata file There are no visible changes here. I'm starting to wonder if adding the '+' to the 'node' line instead of a separate key line in 3047167733dc was the right thing to do. The '{node}' keyword never includes '+' elsewhere, and the way setup.py works, it would truncate it anyway. Additionally, the file is missing '{p2node}' when 'wdir()' merges are archived. I thought about adding an 'identify' line that would correspond to `hg id -n`. But the other nodes are the full 40 characters, and the output most useful for versioning is the short form. All of this cries out for customization via templating. (Although maybe having the short identify line by default is still a good idea.)
Sun, 16 Jul 2017 11:17:00 -0700 commandserver: do not handle EINTR for selector.select
Jun Wu <quark@fb.com> [Sun, 16 Jul 2017 11:17:00 -0700] rev 33543
commandserver: do not handle EINTR for selector.select selectors2 library handles EINTR transparently so we don't need to handle select.error ourselves.
Sun, 16 Jul 2017 02:33:14 +0200 debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net> [Sun, 16 Jul 2017 02:33:14 +0200] rev 33542
debugobsolete: also report the number of obsoleted changesets This seems useful to have the number of obsoleted changesets when calling debugobsolete.
Sun, 16 Jul 2017 02:20:06 +0200 transaction-summary: display the summary for all transactions
Boris Feld <boris.feld@octobus.net> [Sun, 16 Jul 2017 02:20:06 +0200] rev 33541
transaction-summary: display the summary for all transactions Now that we records "all" changes happening in a transaction (in tr.changes) we will be able to provide better report on various changes (phases turned public, changeset obsoleted, branch merged or created, etc..) This is far too late in the cycle to play with this, but having this existing method called more widely will help extensions to play around with various options during the 4.4 cycle. Instead of calling registersummarycallback only for transactions we want, we always call it and use the transaction name to decide when to report (eg: we do not want `hg amend` to report new obsoleted changesets). Filtering on transaction name does not seems great, but seems good enough for the moment. We can change the API during the next cycle. The previous manual call during unbundling of the bundle2 "obsmarkers" part is no longer necessary and has been dropped.
Sun, 16 Jul 2017 02:38:14 +0200 test-strip: fix call to super class in crashstriprepo
Boris Feld <boris.feld@octobus.net> [Sun, 16 Jul 2017 02:38:14 +0200] rev 33540
test-strip: fix call to super class in crashstriprepo The 'self' argument is already taken care of by the 'super(...)' call. Instead we were passing the repository instance as the 'desc' value. This got discovered by breaking the next changeset.
Sat, 15 Jul 2017 23:49:22 +0200 share: share 'cachevfs' with the source clone (issue5108)
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 23:49:22 +0200] rev 33539
share: share 'cachevfs' with the source clone (issue5108) Share extension now also share caches reads and writes. Not sharing caches results in costly caches recomputations which can takes up to minutes when using shares on large repositories. There are a couple of file in the '.hg/cache/' that depends of the current visibility. Visibility can be affected by the working copy location, something which is specific to each share. We ignores them for this series because they: * are the minority, * already have a good fallback to other precomputed caches, * are only affected when people use the experimental evolution feature.
Sat, 15 Jul 2017 23:05:15 +0200 cachevfs: add a devel warning for cache access though 'vfs'
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 23:05:15 +0200] rev 33538
cachevfs: add a devel warning for cache access though 'vfs' This will help third party extensions to migrate to the new 'cachevfs'.
Sat, 15 Jul 2017 23:30:25 +0200 cachevfs: migration the tags fnode cache to 'cachevfs'
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 23:30:25 +0200] rev 33537
cachevfs: migration the tags fnode cache to 'cachevfs' This will help sharing the cache between shares.
Sat, 15 Jul 2017 23:30:16 +0200 cachevfs: migrate tagscache to 'cachevfs'
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 23:30:16 +0200] rev 33536
cachevfs: migrate tagscache to 'cachevfs' This will help sharing the cache between shares.
Sat, 15 Jul 2017 22:42:50 +0200 cachevfs: migration the revbranchcache to 'cachevfs'
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 22:42:50 +0200] rev 33535
cachevfs: migration the revbranchcache to 'cachevfs' This will help sharing the cache between shares.
Sat, 15 Jul 2017 22:42:31 +0200 cachevfs: use the new vfs in when computing branchmap cache
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 22:42:31 +0200] rev 33534
cachevfs: use the new vfs in when computing branchmap cache This will help sharing the cache between shares.
Sat, 15 Jul 2017 23:05:04 +0200 cachevfs: add a vfs dedicated to cache
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 23:05:04 +0200] rev 33533
cachevfs: add a vfs dedicated to cache Most of the cache content lives in '.hg/cache/'. Moreover they are computed exclusively from data in the '.hg/store' directory. This creates issues with the share extension as the '.hg/store' directory is shared but the '.hg/cache' is not. On large repositories, this makes this prevent some usage of the share extension inefficient as some caches can take minutes to be recomputed. To improve the situation, we introduce a new 'cachevfs' that will be dedicated to cache reading and writing. In the next patches of this series, we'll migrate the 4 existing caches to it and update the share extension.
Sat, 15 Jul 2017 22:40:51 +0200 vfsward: register 'write with no lock' warnings as 'check-locks' config
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 22:40:51 +0200] rev 33532
vfsward: register 'write with no lock' warnings as 'check-locks' config Update 'write with no lock' warnings in order to be better controlled by the config. We reuse the option used for lock order for these other lock related message. The message can now be disabled using 'devel.check-locks = no' (in addition to the usual 'devel.all-warnings = no').
Sun, 16 Jul 2017 17:38:39 +0900 demandimport: prefer loaded module over package attribute (issue5617)
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Jul 2017 17:38:39 +0900] rev 33531
demandimport: prefer loaded module over package attribute (issue5617) In general, the attribute of the same name is overwritten by executing an import statement. import a.b print(a.b.c) # 'c' of a/b/__init__.py from a.b.c import d print(a.b.c) # a/b/c.py However, this appears not true for the scenario described in the test case, and surprisingly, "from a.b.c import d" works even if "a.b.c" is not a module. This patch works around the problem by taking the right module from sys.modules if available.
Sun, 16 Jul 2017 17:19:22 +0900 demandimport: drop Py3 workarounds from Py2 implementation
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Jul 2017 17:19:22 +0900] rev 33530
demandimport: drop Py3 workarounds from Py2 implementation
Sun, 16 Jul 2017 17:16:32 +0900 demandimport: drop hack for old Pythons which had no level argument
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Jul 2017 17:16:32 +0900] rev 33529
demandimport: drop hack for old Pythons which had no level argument _import() was added by 868282fa29d8, but it is identical to _origimport() now.
Sun, 16 Jul 2017 17:47:10 +0900 tests: drop "absimport" conditionals which should be always true
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Jul 2017 17:47:10 +0900] rev 33528
tests: drop "absimport" conditionals which should be always true
Sat, 15 Jul 2017 14:17:35 +0200 color: drop the now useless color extension
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 14:17:35 +0200] rev 33527
color: drop the now useless color extension all the extension features are provided by core since 4.2.
Sat, 15 Jul 2017 14:16:54 +0200 extensions: expand the builtins extensions declaration
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 14:16:54 +0200] rev 33526
extensions: expand the builtins extensions declaration This will future updates of the set cleaner and more readable.
Sat, 15 Jul 2017 20:31:52 +0200 debugextensions: drop the color from the test
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 20:31:52 +0200] rev 33525
debugextensions: drop the color from the test We are about to remove the extension so we remove trace of it in this specific test to prevent it to be confused.
Fri, 30 Jun 2017 03:30:13 +0200 configitems: register the 'bugzilla.notify' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:30:13 +0200] rev 33524
configitems: register the 'bugzilla.notify' config
Fri, 30 Jun 2017 03:44:56 +0200 configitems: register the 'ui.mergemarkertemplate' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:44:56 +0200] rev 33523
configitems: register the 'ui.mergemarkertemplate' config
Sat, 15 Jul 2017 14:14:53 +0200 configitems: register the 'ui.color' config
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 14:14:53 +0200] rev 33522
configitems: register the 'ui.color' config
Sat, 15 Jul 2017 14:14:46 +0200 color: drop the _enabledbydefault module variable
Boris Feld <boris.feld@octobus.net> [Sat, 15 Jul 2017 14:14:46 +0200] rev 33521
color: drop the _enabledbydefault module variable Since color is on by default, cleanup the now useless variable in both core and color extension.
Fri, 30 Jun 2017 03:44:45 +0200 configitems: register the 'ui.forcecwd' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:44:45 +0200] rev 33520
configitems: register the 'ui.forcecwd' config
Fri, 30 Jun 2017 03:44:43 +0200 configitems: register the 'ui.fallbackencoding' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:44:43 +0200] rev 33519
configitems: register the 'ui.fallbackencoding' config
Mon, 10 Jul 2017 21:49:37 +0200 bookmark: deprecate direct del of a bookmark value
Boris Feld <boris.feld@octobus.net> [Mon, 10 Jul 2017 21:49:37 +0200] rev 33518
bookmark: deprecate direct del of a bookmark value We want all bookmark deletion to go through 'applychanges', so lets deprecate legacy ways of doing bookmark deletion.
Mon, 10 Jul 2017 21:47:34 +0200 bookmark: deprecate direct set of a bookmark value
Boris Feld <boris.feld@octobus.net> [Mon, 10 Jul 2017 21:47:34 +0200] rev 33517
bookmark: deprecate direct set of a bookmark value We want all bookmark update to go through 'applychanges', so lets deprecate legacy ways of doing bookmark update.
Mon, 10 Jul 2017 20:26:53 +0200 bookmark: track bookmark changes at the transaction level
Boris Feld <boris.feld@octobus.net> [Mon, 10 Jul 2017 20:26:53 +0200] rev 33516
bookmark: track bookmark changes at the transaction level The transaction has now a 'bookmarks' dictionary in tr.changes. The structure of the dictionary is {BOOKMARK_NAME: (OLD_NODE, NEW_NODE)}. If a bookmark is deleted NEW_NODE will be None. If a bookmark is created OLD_NODE will be None. If the bookmark is updated multiple time, the initial value is preserved.
Mon, 10 Jul 2017 20:10:03 +0200 bookmark: deprecate 'recordchange' in favor of 'applychanges'
Boris Feld <boris.feld@octobus.net> [Mon, 10 Jul 2017 20:10:03 +0200] rev 33515
bookmark: deprecate 'recordchange' in favor of 'applychanges' Now that we have migrated all in-core caller of 'recordchange' to 'applychanges', deprecate 'recordchange' so external callers will move to the new unified method.
Mon, 10 Jul 2017 20:06:15 +0200 bookmark: drop deletedivergent
Boris Feld <boris.feld@octobus.net> [Mon, 10 Jul 2017 20:06:15 +0200] rev 33514
bookmark: drop deletedivergent It has no caller anymore.
Mon, 10 Jul 2017 20:02:32 +0200 bookmark: use 'divergent2delete' in checkconflict
Boris Feld <boris.feld@octobus.net> [Mon, 10 Jul 2017 20:02:32 +0200] rev 33513
bookmark: use 'divergent2delete' in checkconflict checkconflict used to also do some bookmark deletion in case of divergence. It is a bit suspicious given the function name, but it's not the goal of this series. In order to unify bookmarks changing, checkconflict now return the list of divergent bookmarks to clean up and the callers must clean them by calling applyphases.
Mon, 10 Jul 2017 19:12:25 +0200 bookmark: use 'divergent2delete' when updating a bookmark
Boris Feld <boris.feld@octobus.net> [Mon, 10 Jul 2017 19:12:25 +0200] rev 33512
bookmark: use 'divergent2delete' when updating a bookmark
Mon, 10 Jul 2017 19:10:13 +0200 bookmark: use 'divergent2delete' in 'scmutil.cleanupnode'
Boris Feld <boris.feld@octobus.net> [Mon, 10 Jul 2017 19:10:13 +0200] rev 33511
bookmark: use 'divergent2delete' in 'scmutil.cleanupnode'
Mon, 10 Jul 2017 19:08:17 +0200 bookmark: split out target computation from 'deletedivergent'
Boris Feld <boris.feld@octobus.net> [Mon, 10 Jul 2017 19:08:17 +0200] rev 33510
bookmark: split out target computation from 'deletedivergent' We want to use applychanges in order to unify bookmark movement. We need a way to compute divergence deletion without actually removing them. We split the function in two in this patch while we migrate the existing users of this code on next patches.
Mon, 10 Jul 2017 17:48:33 +0200 bookmark: remove a useless 'recordchange' in the amend code
Boris Feld <boris.feld@octobus.net> [Mon, 10 Jul 2017 17:48:33 +0200] rev 33509
bookmark: remove a useless 'recordchange' in the amend code We do not touch the bookmarks store in this code, just the active bookmark, not covered by the transaction. So it seems we can safely drop this call and the tests agree with us.
Sat, 15 Jul 2017 23:46:33 -0400 test-phase-exchange: stabilize for Windows
Matt Harbison <matt_harbison@yahoo.com> [Sat, 15 Jul 2017 23:46:33 -0400] rev 33508
test-phase-exchange: stabilize for Windows
Sat, 15 Jul 2017 15:23:29 -0400 debugignore: eliminate inconsistencies with `hg status` (issue5222)
Matt Harbison <matt_harbison@yahoo.com> [Sat, 15 Jul 2017 15:23:29 -0400] rev 33507
debugignore: eliminate inconsistencies with `hg status` (issue5222) Using a matcher for this command allows processing the named file(s) as relative to cwd. It also leverages the icasefs normalization logic the same way the status command does. (However, a false indicator is given for a nonexistent file in some cases, e.g. passing 'foo.REJ' when that file doesn't exist, and the rule is '*.rej'. Maybe the regex itself needs to be case insensitive on these platforms, at least for the debug command.) Finally, the file printed is relative to cwd and uses platform specific slashes, so a few (glob)s were needed in seemingly unrelated tests.
Sun, 16 Jul 2017 04:39:32 -0700 commandserver: close selector explicitly
Jun Wu <quark@fb.com> [Sun, 16 Jul 2017 04:39:32 -0700] rev 33506
commandserver: close selector explicitly The selector does not have a __del__ method and needs a manual close. We can also use "with selector" but that makes the code too indented. Therefore append a "selector.close()" after the end of the main loop for now.
Sat, 15 Jul 2017 15:01:29 +0900 scmutil: remove duplicated import of i18n._()
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Jul 2017 15:01:29 +0900] rev 33505
scmutil: remove duplicated import of i18n._()
Sun, 04 Jun 2017 10:02:09 -0700 obsstore: let read marker API take a range of offsets
Jun Wu <quark@fb.com> [Sun, 04 Jun 2017 10:02:09 -0700] rev 33504
obsstore: let read marker API take a range of offsets This allows us to read a customized range of markers, instead of loading all of them. The condition of stop is made consistent across C and Python implementation so we will still read marker when offset=a, stop=a+1.
Fri, 14 Jul 2017 20:26:21 -0700 commandserver: use selectors2
Jun Wu <quark@fb.com> [Fri, 14 Jul 2017 20:26:21 -0700] rev 33503
commandserver: use selectors2 Previously, commandserver was using select.select. That could have issue if _sock.fileno() >= FD_SETSIZE (usually 1024), which raises: ValueError: filedescriptor out of range in select() We got that in production today, although it's the code opening that many files to blame, it seems better for commandserver to work in this case. There are multiple way to "solve" it, like preserving a fd with a small number and swap it with sock using dup2(). But upgrading to a modern selector supported by the system seems to be the most correct way.
Fri, 14 Jul 2017 20:19:46 -0700 selector2: vendor selector2 library
Jun Wu <quark@fb.com> [Fri, 14 Jul 2017 20:19:46 -0700] rev 33502
selector2: vendor selector2 library This library was a backport of the Python 3 "selectors" library. It is useful to provide a better selector interface for Python2, to address some issues of the plain old select.select, mentioned in the next patch. The code [1] was ported using the MIT license, with some minor modifications to make our test happy: 1. "# no-check-code" was added since it's foreign code. 2. "from __future__ import absolute_import" was added. 3. "from collections import namedtuple, Mapping" changed to avoid direct symbol import. [1]: https://github.com/SethMichaelLarson/selectors2/blob/d27dbd2fdc48331fb76ed431f44b6e6956de7f82/selectors2.py # no-check-commit
Tue, 11 Jul 2017 00:40:29 -0400 context: name files relative to cwd in warning messages
Matt Harbison <matt_harbison@yahoo.com> [Tue, 11 Jul 2017 00:40:29 -0400] rev 33501
context: name files relative to cwd in warning messages I was several directories deep in the kernel tree, ran `hg add`, and got the warning about the size of one of the files. I noticed that it suggested undoing the add with a specific revert command. The problem is, it would have failed since the path printed was relative to the repo root instead of cwd. While here, I just fixed the other messages too. As an added benefit, these messages now look the same as the verbose/inexact messages for the corresponding command. I don't think most of these messages are reachable (typically the corresponding cmdutil function does the check). I wasn't able to figure out why the keyword tests were failing when using pathto()- I couldn't cause an absolute path to be used by manipulating the --cwd flag on a regular add. (I did notice that keyword is adding the file without holding wlock.)
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip