Thu, 23 Apr 2015 14:57:39 +0100 ui: allow capture of subprocess output stable
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 23 Apr 2015 14:57:39 +0100] rev 24848
ui: allow capture of subprocess output We want to capture hooks output during bundle2 processing. For this purpose we introduce a new 'subproc' argument to 'ui.pushbuffer'. When set, the output of sub process created through 'ui.system' will be captured in the buffer too. This will be used in the next changeset.
Thu, 23 Apr 2015 14:20:36 +0100 bundle2: capture transaction rollback message output (issue4614) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 23 Apr 2015 14:20:36 +0100] rev 24847
bundle2: capture transaction rollback message output (issue4614) The output from the transaction rollback was not included into the reply bundle. It was eventually caught by the usual 'unbundle' output capture and sent to the client but the result was out of order on the client side. We now capture the output for the transaction release and transmit it the same way as all other output. We should probably rethink the whole output capture things but this would not be appropriate for stable. The is still multiple cases were output failed to be properly capture, they will be fixed in later changesets.
Fri, 24 Apr 2015 00:46:48 +0100 bundle2: issue remote output as "status" (issue4612) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 24 Apr 2015 00:46:48 +0100] rev 24846
bundle2: issue remote output as "status" (issue4612) Remote output should be silenced by --quiet. The issue was found while running `test-largefiles-cache.t` so it will get tested once we switch bundle2 by default.
Thu, 23 Apr 2015 14:27:26 -0700 record: edit patch of newly added files (issue4304) stable
Laurent Charignon <lcharignon@fb.com> [Thu, 23 Apr 2015 14:27:26 -0700] rev 24845
record: edit patch of newly added files (issue4304) I tried to fix this issue in the past and had to revert the fix. This is a second attempt without the regression we found with the first one. record defines special headers (of file) as headers whose hunk are not shown to the user for editing, they are used to represent deleted, moved and new files. Since we want to authorize editing the patch of newly added file we make the newly added file with some content not special anymore. This entails that we have to save their content before applying the backup to be able to revert it if the patch does not apply properly. We reintroduce the test showing that newly added files can be edited and that their content is shown to the user.
Thu, 23 Apr 2015 16:59:11 -0700 record: remove useless line in test stable
Laurent Charignon <lcharignon@fb.com> [Thu, 23 Apr 2015 16:59:11 -0700] rev 24844
record: remove useless line in test Remove a useless line in test to make the next patch cleaner.
Fri, 24 Apr 2015 23:52:41 +0900 revert: apply normallookup on reverted file if size isn't changed (issue4583) stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 24 Apr 2015 23:52:41 +0900] rev 24843
revert: apply normallookup on reverted file if size isn't changed (issue4583) Before this patch, reverting a file to the revision other than the parent doesn't update dirstate. This seems to expect that timestamp and/or size will be changed by reverting. But if (1) dirstate of file "f" is filled with timestamp before reverting and (2) size and timestamp of file "f" isn't changed at reverting, file "f" is recognized as CLEAN unexpectedly. This patch applies "dirstate.normallookup()" on reverted file, if size isn't changed. Making "localrepository.wwrite()" return length of written data is needed to avoid additional (and redundant) "lstat(2)" on the reverted file. "filectx.size()" can't be used to know it, because data may be decoded at being written out. BTW, interactive reverting may cause similar problem, too. But this patch doesn't focus on fixing it, because (1) interactive (maybe slow) reverting changes one (or both) of size/timestamp of reverted files in many usecases, and (2) changes to fix it seems not suitable for stable branch.
Thu, 23 Apr 2015 21:23:13 +0200 win32: remove cacert.pem file from Inno Setup installer stable
Pascal Quantin <pascal.quantin@gmail.com> [Thu, 23 Apr 2015 21:23:13 +0200] rev 24842
win32: remove cacert.pem file from Inno Setup installer Duplicate the modification done in 6e38b6fc4123 for wix installer so that CA certificates loading works fine with Python 2.7.9+.
Wed, 22 Apr 2015 16:38:36 -0700 revert: accept just -I/-X without paths or -a/-i (issue4592) stable
Martin von Zweigbergk <martinvonz@google.com> [Wed, 22 Apr 2015 16:38:36 -0700] rev 24841
revert: accept just -I/-X without paths or -a/-i (issue4592) 'hg revert -I foo' currently fails with abort: no files or directories specified (use --all to revert all files, or 'hg update 1' to update) It doesn't seem intentional that -I/-X without other paths or --all/--interactive should fail, and it doesn't seem that harmful to allow it either, so let's just do that.
Tue, 21 Apr 2015 16:20:43 -0700 record: change wording for record curses interface stable
Laurent Charignon <lcharignon@fb.com> [Tue, 21 Apr 2015 16:20:43 -0700] rev 24840
record: change wording for record curses interface We are using record and crecord in different context, not just for commiting changes but also reverting and shelving changes. This diff changes the wording from commiting to confirming changes to avoid confusing the users with what they are doing.
Thu, 23 Apr 2015 22:44:46 +0900 wix: remove cacert.pem from Windows distribution stable
Yuya Nishihara <yuya@tcha.org> [Thu, 23 Apr 2015 22:44:46 +0900] rev 24839
wix: remove cacert.pem from Windows distribution It should not be included in the Windows installers because it prevents loading CA certificates from the system store on Python 2.7.9, implemented by 760a86865f80. The msi packages bundles Python 2.7.9, so cacert.pem is no longer necessary. Backed out changeset e5c2338d76b5
Thu, 23 Apr 2015 22:39:21 +0900 tests: use double quote to quote arguments in hook for portability stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 23 Apr 2015 22:39:21 +0900] rev 24838
tests: use double quote to quote arguments in hook for portability On windows, single quote doesn't work as quote character in hook command line, because "cmd.exe" doesn't recognize it as quoting character. And this causes failure of test. This patch uses double quote to quote arguments in hook instead of single quote for portability. Even though single quotes for "[hooks] pretxncommit" in test-clone-pull-corruption.t seems to work correctly (may MinGW sh treat specially ?) AFAIK, this patch also replaces them by double quotes for consistency.
Wed, 22 Apr 2015 13:56:30 -0700 record: fix record with change on moved file crashes (issue4619) stable
Laurent Charignon <lcharignon@fb.com> [Wed, 22 Apr 2015 13:56:30 -0700] rev 24837
record: fix record with change on moved file crashes (issue4619) reverting 79fceed67676, add a test to prevent the issue from coming back.
Wed, 22 Apr 2015 23:38:55 +0900 check-code: check os.path.join(*, '') not working correctly with Python 2.7.9 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 22 Apr 2015 23:38:55 +0900] rev 24836
check-code: check os.path.join(*, '') not working correctly with Python 2.7.9 Since Python 2.7.9, "os.path.join(path, '')" doesn't append "os.sep" for UNC path (see issue4557 for detail).
Wed, 22 Apr 2015 23:38:55 +0900 unionrepo: use pathutil.normasprefix to ensure os.sep at the end of cwd stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 22 Apr 2015 23:38:55 +0900] rev 24835
unionrepo: use pathutil.normasprefix to ensure os.sep at the end of cwd Since Python 2.7.9, "os.path.join(path, '')" doesn't add "os.sep" at the end of UNC path (see issue4557 for detail). This makes unionrepo incorrectly work, if: 1. cwd is the root of UNC share (e.g. "\host\share"), and 2. mainreporoot is near cwd (e.g. "\host\sharefoo\repo") - host of UNC path is same as one of cwd - share of UNC path starts with one of cwd 3. "repopath" isn't specified in URI (e.g. "union:path/to/repo2") For example: $ hg --cwd \host\share -R \host\sharefoo\repo incoming union:path\to\repo2 In this case: - os.path.join(r"\host\share", "") returns r"\host\share", - r"\host\sharefoo\repo".startswith(r"\host\share") returns True, then - r"foo\repo" is treated as repopath of unionrepo instead of r"\host\sharefoo\repo" This causes failure of combining "\host\sharefoo\repo" and another repository: in addition to it, "\host\share\foo\repo" may be combined with another repository, if it accidentally exists. This patch uses "pathutil.normasprefix()" to ensure "os.sep" at the end of cwd safely, even with some problematic encodings, which use 0x5c (= "os.sep" on Windows) as the tail byte of some multi-byte characters. BTW, normalization before "pathutil.normasprefix()" isn't needed in this case, because "os.getcwd()" always returns normalized one.
Wed, 22 Apr 2015 23:38:55 +0900 bundlerepo: use pathutil.normasprefix to ensure os.sep at the end of cwd stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 22 Apr 2015 23:38:55 +0900] rev 24834
bundlerepo: use pathutil.normasprefix to ensure os.sep at the end of cwd Since Python 2.7.9, "os.path.join(path, '')" doesn't add "os.sep" at the end of UNC path (see issue4557 for detail). This makes bundlerepo incorrectly work, if: 1. cwd is the root of UNC share (e.g. "\host\share"), and 2. mainreporoot is near cwd (e.g. "\host\sharefoo\repo") - host of UNC path is same as one of cwd - share of UNC path starts with one of cwd 3. "repopath" isn't specified in bundle URI (e.g. "bundle:bundlefile" or just "bundlefile") For example: $ hg --cwd \host\share -R \host\sharefoo\repo incoming bundle In this case: - os.path.join(r"\host\share", "") returns r"\host\share", - r"\host\sharefoo\repo".startswith(r"\host\share") returns True, then - r"foo\repo" is treated as repopath of bundlerepo instead of r"\host\sharefoo\repo" This causes failure of combining "\host\sharefoo\repo" and bundle file: in addition to it, "\host\share\foo\repo" may be combined with bundle file, if it accidentally exists. This patch uses "pathutil.normasprefix()" to ensure "os.sep" at the end of cwd safely, even with some problematic encodings, which use 0x5c (= "os.sep" on Windows) as the tail byte of some multi-byte characters. BTW, normalization before "pathutil.normasprefix()" isn't needed in this case, because "os.getcwd()" always returns normalized one.
Wed, 22 Apr 2015 23:38:52 +0900 dirstate: use pathutil.normasprefix to ensure os.sep at the end of root stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 22 Apr 2015 23:38:52 +0900] rev 24833
dirstate: use pathutil.normasprefix to ensure os.sep at the end of root 3cc630be5f09 replaced "os.path.join(root, '')" by "root.endswith(os.sep)" examination, because Python 2.7.9 changes behavior of "os.path.join(path, '')" on UNC path. But some problematic encodings use 0x5c (= "os.sep" on Windows) as the tail byte of some multi-byte characters, and replacement above prevents Mercurial from working on the repository, of which root path ends with such multi-byte character, regardless of enabling win32mbcs. This patch uses "pathutil.normasprefix()" instead of "root.endswith(os.sep)" examination, to ensure "os.sep" at the end of "dirstate._rootdir" even with problematic encodings. "root" of dirstate can be passed to "pathutil.normasprefix()" without normalization, because it is always given from "repo.root" = "repo.wvfs.base", which is normalized by "os.path.realpath()". Using "util.endswithsep()" instead of "str.endswith(os.sep)" also fixes this problem, but this patch chooses "pathutil.normasprefix()" to centralize "adding os.sep if endswith(os.sep)" logic into it.
Tue, 21 Apr 2015 21:02:08 -0300 bookmarks: add i18n hints to bookmark sync states stable
Wagner Bruna <wbruna@yahoo.com> [Tue, 21 Apr 2015 21:02:08 -0300] rev 24832
bookmarks: add i18n hints to bookmark sync states
Tue, 21 Apr 2015 21:01:17 -0300 histedit: fix typo in abort message stable
Wagner Bruna <wbruna@yahoo.com> [Tue, 21 Apr 2015 21:01:17 -0300] rev 24831
histedit: fix typo in abort message
Tue, 21 Apr 2015 21:01:05 -0300 help: fix typos in txnclose and txnabort documentation stable
Wagner Bruna <wbruna@yahoo.com> [Tue, 21 Apr 2015 21:01:05 -0300] rev 24830
help: fix typos in txnclose and txnabort documentation
Mon, 20 Apr 2015 22:21:57 -0500 util: fix the check for non-C99 compilers (issue4605) stable
Kevin Bullock <kbullock@ringworld.org> [Mon, 20 Apr 2015 22:21:57 -0500] rev 24829
util: fix the check for non-C99 compilers (issue4605)
Mon, 20 Apr 2015 18:44:57 -0700 histedit: fix rollup prompting for a commit message (issue4606) stable
Durham Goode <durham@fb.com> [Mon, 20 Apr 2015 18:44:57 -0700] rev 24828
histedit: fix rollup prompting for a commit message (issue4606) Commit 090da03361c5 broke histedit's rollup by causing it to open the editor. Turns out I missed a spot where the rollup option was read. This fixes that and adjusts the test to catch this case.
Mon, 20 Apr 2015 13:43:10 -0400 test-hook.t: don't directly use redirect to /dev/null in hook for Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 20 Apr 2015 13:43:10 -0400] rev 24827
test-hook.t: don't directly use redirect to /dev/null in hook for Windows This goes with 57f1dbc99631. External hooks are run in cmd.exe, which doesn't know about /dev/null, but sh can handle it.
Mon, 20 Apr 2015 18:13:44 -0500 mq: avoid silent failure when single patch doesn't apply (issue4604) stable
Matt Mackall <mpm@selenic.com> [Mon, 20 Apr 2015 18:13:44 -0500] rev 24826
mq: avoid silent failure when single patch doesn't apply (issue4604) The error-handling here is quite byzantine. self._apply raises an AbortNoCleanup, but self.apply was swallowing the exception and returns 2. In self.push, we catch all exceptions.. and cleanup. We try to print a message to clean up.. but that relies on having a top-of-stack. Instead, we re-raise the abort in self.apply, and avoid cleanup on AbortNoCleanup in self.push by adding a trivial new except clause. We also modernize the now-visible abort message.
Mon, 20 Apr 2015 17:16:05 +0200 pushkey: flush pending data before running a pre-pushkey hook (issue4607) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 20 Apr 2015 17:16:05 +0200] rev 24825
pushkey: flush pending data before running a pre-pushkey hook (issue4607) The pre-pushkey hook will likely validate the pushkey based on element previously changed in the same transaction. We need to make theses data available for the hook.
Mon, 20 Apr 2015 17:15:50 +0200 pushkey: use hook arguments from transaction when one exists stable
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 20 Apr 2015 17:15:50 +0200] rev 24824
pushkey: use hook arguments from transaction when one exists When pushkey is called during a transaction, we include its 'hookargs' when running the pre-pushkey hooks. Having more data cannot hurt, especially the transaction ID.
Mon, 20 Apr 2015 14:47:51 -0400 util.h: also sniff for C99 before trying to use stdbool.h (issue4605) stable
Augie Fackler <augie@google.com> [Mon, 20 Apr 2015 14:47:51 -0400] rev 24823
util.h: also sniff for C99 before trying to use stdbool.h (issue4605) stdbool.h isn't required until C99. Sigh.
Mon, 20 Apr 2015 17:16:22 +0200 changelog: fix readpending if no pending data exist (issue4609) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 20 Apr 2015 17:16:22 +0200] rev 24822
changelog: fix readpending if no pending data exist (issue4609) Since transaction are used for more than just changesets, it is possible to have a transaction without new changesets at all. In this case no ''00changelog.i.a' are written. In all cases the 'changelog.readpending' method is called if the repository has any pending data. The 'revlog' logic provides empty content if the file is missing, so the whole operation resulted in an empty changelog. We now skip reading the pending file if it is missing.
Mon, 20 Apr 2015 15:27:55 +0200 afterlock: add the callback to the top level lock (issue4608) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 20 Apr 2015 15:27:55 +0200] rev 24821
afterlock: add the callback to the top level lock (issue4608) If 'wlock' is taken, we should add 'afterlock' callback to the 'wlock' instead. Otherwise, running post transaction hook after 'lock' is release but 'wlock' is still taken lead to a deadlock (eg: 'hg update' during a hook). This situation is much more common since: 5dc5cd7abbf5 push: acquire local 'wlock' if "pushback" is expected (BC) (issue4596)
Mon, 20 Apr 2015 16:05:32 +0200 debuglock: access the lock file using the proper vfs stable
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 20 Apr 2015 16:05:32 +0200] rev 24820
debuglock: access the lock file using the proper vfs Before this fix, 'wlock' was always reported as "free" because '.hg/store/wlock' have never been a thing.
Sun, 19 Apr 2015 21:43:53 -0700 status: pass matcher to pathcopies() stable
Martin von Zweigbergk <martinvonz@google.com> [Sun, 19 Apr 2015 21:43:53 -0700] rev 24819
status: pass matcher to pathcopies() Just like a7f8e3584ef3 (diff: pass the diff matcher to the copy logic, 2015-04-16) sped up 'hg diff --git $path', let's speed up 'hg st -C $path'. On the Firefox repo, this speeds up hg st --rev tip~40000 --rev tip -C python from 16s to 1.8s. Those two revisions differ in 100k files, out of which 1k is in python/.
(0) -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip