Tue, 21 Feb 2017 01:21:00 +0900 localrepo: check HG_PENDING strictly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 21 Feb 2017 01:21:00 +0900] rev 31054
localrepo: check HG_PENDING strictly Before this patch, checking HG_PENDING for changelog in localrepo.py might cause unintentional reading unrelated '00changelog.i.a' in, because HG_PENDING is checked by str.startswith(). An external hook spawned by inner repository in nested ones satisfies this condition. This patch uses txnutil.mayhavepending() to check HG_PENDING strictly. BTW, this patch may cause failure of bisect in the repository of Mercurial itself, if examination at bisecting assumes that an external hook can see all pending changes while nested transactions across repositories. This invisibility issue will be fixed by subsequent patch, which allows HG_PENDING to refer multiple repositories.
Tue, 21 Feb 2017 01:21:00 +0900 phases: check HG_PENDING strictly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 21 Feb 2017 01:21:00 +0900] rev 31053
phases: check HG_PENDING strictly Before this patch, checking HG_PENDING in phases.py might cause unintentional reading unrelated 'phaseroots.pending' in, because it just examines existence of HG_PENDING environment variable. This patch uses txnutil.trypending() to check HG_PENDING strictly. BTW, this patch may cause failure of bisect in the repository of Mercurial itself, if examination at bisecting assumes that an external hook can see all pending changes while nested transactions across repositories. This invisibility issue will be fixed by subsequent patch, which allows HG_PENDING to refer multiple repositories.
Tue, 21 Feb 2017 01:21:00 +0900 bookmarks: check HG_PENDING strictly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 21 Feb 2017 01:21:00 +0900] rev 31052
bookmarks: check HG_PENDING strictly Before this patch, checking HG_PENDING in bookmarks.py might cause unintentional reading unrelated '.hg/bookmarks.pending' in, because it just examines existence of HG_PENDING environment variable. This patch uses txnutil.trypending() to check HG_PENDING strictly. This patch also changes share extension. Enabling share extension (+ bookmark sharing) makes bookmarks._getbkfile() receive repo to be shared (= "srcrepo"). On the other hand, HG_PENDING always refers current working repo (= "currepo"), and bookmarks.pending is written only into currepo. Therefore, we should try to read .hg/bookmarks.pending of currepo in at first. If it doesn't exist, we try to read .hg/bookmarks of srcrepo in. Even after this patch, an external hook spawned in currepo can't see pending changes in currepo via srcrepo, even though such changes become visible after closing transaction, because there is no easy and cheap way to know existence of pending changes in currepo via srcrepo. Please see https://www.mercurial-scm.org/wiki/SharedRepository, too. BTW, this patch may cause failure of bisect in the repository of Mercurial itself, if examination at bisecting assumes that an external hook can see all pending changes while nested transactions across repositories. This invisibility issue will be fixed by subsequent patch, which allows HG_PENDING to refer multiple repositories.
Tue, 21 Feb 2017 01:20:59 +0900 tests: make directory to prevent test process from going out of $TESTTMP
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 21 Feb 2017 01:20:59 +0900] rev 31051
tests: make directory to prevent test process from going out of $TESTTMP Before this patch, test process for test-bookmarks.t goes out of $TESTTMP at "cd .." before creation of "orderrepo" repository. To prevent test process from going out of $TESTTMP, this patch makes directory "repo" sub-directory and executes almost all test scenarios in test-bookmarks.t under it. This is preparation for new test added in subsequent patch.
Tue, 21 Feb 2017 01:20:59 +0900 txnutil: factor out the logic to read file in according to HG_PENDING
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 21 Feb 2017 01:20:59 +0900] rev 31050
txnutil: factor out the logic to read file in according to HG_PENDING This patch adds new file txnutil.py, because: - transaction.py is too large to import small utility logic - scmutil.py or so causes cyclic importing in phases.py mayhavepending() is defined separately for convenience in subsequent patch.
Mon, 20 Feb 2017 01:54:07 -0800 repoview: separate cache hash computation from cache reading
Stanislau Hlebik <stash@fb.com> [Mon, 20 Feb 2017 01:54:07 -0800] rev 31049
repoview: separate cache hash computation from cache reading This change will make it easier for extensions to use another cache hash.
Mon, 20 Feb 2017 18:27:29 +0100 tests: make test suite more immune to environment variables
Dr Rainer Woitok <rainer.woitok@gmail.com> [Mon, 20 Feb 2017 18:27:29 +0100] rev 31048
tests: make test suite more immune to environment variables Plenty of tests break when "make tests" is run while environment variables "HGPLAIN" or "HGPLAINEXCEPT" are set (test "test-obsolete- checkheads.t" is just a single example). This patch causes script "run-tests.py" to also remove these two variables from the environment the tests are executed in.
Mon, 06 Feb 2017 23:08:49 -0500 version: enable pager if --verbose is specified
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:08:49 -0500] rev 31047
version: enable pager if --verbose is specified `hg version` output is very short without --verbose, but with --verbose it tends to scroll off the user's screen.
Mon, 06 Feb 2017 23:07:16 -0500 tags: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:07:16 -0500] rev 31046
tags: enable pager
Mon, 06 Feb 2017 23:06:59 -0500 summary: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:06:59 -0500] rev 31045
summary: enable pager
Mon, 06 Feb 2017 23:06:32 -0500 status: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:06:32 -0500] rev 31044
status: enable pager
Mon, 06 Feb 2017 23:06:10 -0500 resolve: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:06:10 -0500] rev 31043
resolve: enable pager
Mon, 06 Feb 2017 23:06:01 -0500 paths: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:06:01 -0500] rev 31042
paths: enable pager
Mon, 06 Feb 2017 23:04:44 -0500 outgoing: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:04:44 -0500] rev 31041
outgoing: enable pager The structure here is similar to incoming, and requires similar treatment.
Mon, 06 Feb 2017 23:04:26 -0500 manifest: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:04:26 -0500] rev 31040
manifest: enable pager
Mon, 06 Feb 2017 23:04:10 -0500 locate: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:04:10 -0500] rev 31039
locate: enable pager
Mon, 06 Feb 2017 23:03:48 -0500 incoming: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:03:48 -0500] rev 31038
incoming: enable pager The design of incoming means we have to activate the pager in several places, depending on which codepath gets chosen.
Mon, 06 Feb 2017 23:09:21 -0500 help: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:09:21 -0500] rev 31037
help: enable pager
Mon, 06 Feb 2017 23:09:15 -0500 grep: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:09:15 -0500] rev 31036
grep: enable pager
Mon, 06 Feb 2017 23:02:48 -0500 files: enable pager
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:02:48 -0500] rev 31035
files: enable pager
Mon, 06 Feb 2017 23:01:42 -0500 config: activate pager if not starting an editor
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:01:42 -0500] rev 31034
config: activate pager if not starting an editor This demonstrates the power of the non-attend-based pager API.
Mon, 06 Feb 2017 23:57:21 -0500 qdiff: migrate to modern pager API
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 23:57:21 -0500] rev 31033
qdiff: migrate to modern pager API This results in the default pager-attend list being empty. Sadly, we can't let the code be that way, because some legacy extensions depend on hooking the pager's attend list at import time (and we'd like to not break them), and if the list is actually *empty* that triggers magic behavior in the extension that attends everything. Instead, we put a long, improbable command name as the only entry in the attend list.
Mon, 06 Feb 2017 22:59:25 -0500 log: migrate to modern pager API
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 22:59:25 -0500] rev 31032
log: migrate to modern pager API
Mon, 06 Feb 2017 22:58:54 -0500 export: migrate to modern pager API
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 22:58:54 -0500] rev 31031
export: migrate to modern pager API
Mon, 06 Feb 2017 22:58:26 -0500 diff: migrate to modern pager API
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 22:58:26 -0500] rev 31030
diff: migrate to modern pager API
Mon, 06 Feb 2017 22:57:52 -0500 cat: migrate to modern pager API
Augie Fackler <augie@google.com> [Mon, 06 Feb 2017 22:57:52 -0500] rev 31029
cat: migrate to modern pager API
Sun, 19 Feb 2017 15:09:41 -0500 annotate: start pager after we're sure we wont abort
Augie Fackler <augie@google.com> [Sun, 19 Feb 2017 15:09:41 -0500] rev 31028
annotate: start pager after we're sure we wont abort This avoids needlessly putting a short error message into the pager.
Sun, 19 Feb 2017 20:16:11 -0500 dispatch: consolidate pager flag handling to a single place
Augie Fackler <augie@google.com> [Sun, 19 Feb 2017 20:16:11 -0500] rev 31027
dispatch: consolidate pager flag handling to a single place This makes a little more sense, thanks to Martin for suggesting it.
Sun, 19 Feb 2017 20:12:52 -0500 ui: rename neverpager to disablepager
Augie Fackler <augie@google.com> [Sun, 19 Feb 2017 20:12:52 -0500] rev 31026
ui: rename neverpager to disablepager I agree this is a clearer name for this method.
Sun, 19 Feb 2017 20:00:18 +0900 scmutil: proxy revrange() through repo to break import cycles
Yuya Nishihara <yuya@tcha.org> [Sun, 19 Feb 2017 20:00:18 +0900] rev 31025
scmutil: proxy revrange() through repo to break import cycles This was one of the hardest import cycles as scmutil is widely used and revset functions are likely to depend on a variety of modules. New repo.anyrevs() does not expand user aliases by default to copy the behavior of the existing repo.revs(). I don't want to add new function to localrepository, but this function is quite similar to repo.revs() so it won't increase the complexity of the localrepository class so much.
Sun, 19 Feb 2017 18:19:33 +0900 revset: split language services to revsetlang module (API)
Yuya Nishihara <yuya@tcha.org> [Sun, 19 Feb 2017 18:19:33 +0900] rev 31024
revset: split language services to revsetlang module (API) New revsetlang module hosts parser, tokenizer, and miscellaneous functions working on parsed tree. It does not include functions for evaluation such as getset() and match(). 2288 mercurial/revset.py 684 mercurial/revsetlang.py 2972 total get*() functions are aliased since they are common in revset.py.
Sun, 19 Feb 2017 18:16:09 +0900 revset: import set classes directly from smartset module
Yuya Nishihara <yuya@tcha.org> [Sun, 19 Feb 2017 18:16:09 +0900] rev 31023
revset: import set classes directly from smartset module Follows up 1be65deb3d54.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 +10000 tip