Mon, 27 Apr 2015 15:37:57 -0700 revert: make the interactive mode experimental stable
Laurent Charignon <lcharignon@fb.com> [Mon, 27 Apr 2015 15:37:57 -0700] rev 24873
revert: make the interactive mode experimental While fixing issue4304: "record: allow editing new files" we introduced changes in record/crecord. These changes need to be matched with changes in any command using record. Revert is one of these commands and the changes have not been made for this release. Therefore, revert -i should be an experimental feature for this release.
Mon, 27 Apr 2015 15:36:10 -0700 shelve: make the interactive mode experimental stable
Laurent Charignon <lcharignon@fb.com> [Mon, 27 Apr 2015 15:36:10 -0700] rev 24872
shelve: make the interactive mode experimental While fixing issue4304: "record: allow editing new files" we introduced changes in record/crecord. These changes need to be matched with changes in any command using record. Shelve is one of these commands and the changes have not been made for this release. Therefore, shelve -i should be an experimental feature for this release.
Mon, 27 Apr 2015 15:12:41 -0700 help: also hide options marked EXPERIMENTAL stable
Siddharth Agarwal <sid0@fb.com> [Mon, 27 Apr 2015 15:12:41 -0700] rev 24871
help: also hide options marked EXPERIMENTAL Similar to DEPRECATED, add a way to indicate that options are EXPERIMENTAL.
Tue, 28 Apr 2015 10:19:46 -0700 rebase: don't forward "source" argument to rebase (issue4633) stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 28 Apr 2015 10:19:46 -0700] rev 24870
rebase: don't forward "source" argument to rebase (issue4633) `hg pull` takes an optional "source" argument to define the path/url to pull from. Under some circumstances, this option could get proxied to rebase and interpretted as the --source argument to rebase, leading to unexpected behavior. In my local environment, "source" always appears in "opts" in pullrebase. However, when attempting to write a test, I couldn't reproduce this. Instead, the source is being captured as a positional argument in "args." I suspect an interaction between **kwargs and an extension is to blame for the differences in behavior. This is why no test has been written. I have tested behavior locally and the patch has the intended side-effect of making `hg pull --rebase` work again.
Tue, 28 Apr 2015 23:27:18 +0900 histedit: fix reST syntax problem of example code in help document stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 28 Apr 2015 23:27:18 +0900] rev 24869
histedit: fix reST syntax problem of example code in help document To show example code correctly in online help, text block of it should be preceded by "::" and indented.
Mon, 27 Apr 2015 19:13:55 -0300 webcommands: fix description of manifest default behavior stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 27 Apr 2015 19:13:55 -0300] rev 24868
webcommands: fix description of manifest default behavior
Mon, 27 Apr 2015 19:09:54 -0300 webcommands: fix typo in changelog documentation stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 27 Apr 2015 19:09:54 -0300] rev 24867
webcommands: fix typo in changelog documentation
Mon, 27 Apr 2015 14:02:49 -0700 record: fix adding new file with record from within a subdir (issue4626) stable
Laurent Charignon <lcharignon@fb.com> [Mon, 27 Apr 2015 14:02:49 -0700] rev 24866
record: fix adding new file with record from within a subdir (issue4626) In my latest change on record (edit newly added file), I forgot the repo.wjoin() so that record was not computing the paths properly to delete the backups and was crashing.
Mon, 27 Apr 2015 16:24:43 -0500 tests: fix backslashes in test-casefolding stable
Matt Mackall <mpm@selenic.com> [Mon, 27 Apr 2015 16:24:43 -0500] rev 24865
tests: fix backslashes in test-casefolding
Sat, 25 Apr 2015 23:44:53 +0900 cmdutil: avoid wrapping ctx.phasestr() by _() stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 25 Apr 2015 23:44:53 +0900] rev 24864
cmdutil: avoid wrapping ctx.phasestr() by _() This wrapping seems meaningless, because: - there is no "_()" invocation to prepare for extracting phase names to be translated "make update-pot" doesn't extract msgids for phase names - phase names are kine of reserved keywords like as branch name "default"
Sat, 25 Apr 2015 23:44:53 +0900 repair: avoid string concatenation by + operator stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 25 Apr 2015 23:44:53 +0900] rev 24863
repair: avoid string concatenation by + operator String concatenation by "+" operator causes failure of extracting messages to be translated. Python automatically concatenates strings separated by whitespaces into one string.
Sat, 25 Apr 2015 15:38:06 +0900 annotate: always adjust linkrev before walking down to parents (issue4623) stable
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Apr 2015 15:38:06 +0900] rev 24862
annotate: always adjust linkrev before walking down to parents (issue4623) This should avoid the bad performance in the following scenario. Before this patch, on "hg annotate -r10000", p.rev() would walk changelog from 10000 to 3 because _descendantrev was 10000. With this patch, it walks from 5 to 3. 1 -- 2 -- 4 -- 5 -- ... -- 10000 \ 'p' 'f' - 3 (grafted 3 to 4) 'p' repo: https://hg.mozilla.org/releases/mozilla-beta/#4f80fecda802 command: hg annotate -r b0a57152fd14 browser/app/profile/firefox.js before: 83.120 secs after: 3.820 secs This patch involves extra calls of narrow _adjustlinkrev(), but the cost of them seems relatively small compared to wide _adjustlinkrev() calls eliminated by this patch. repo: http://selenic.com/repo/hg/#8015a3cf1380 command: hg annotate mercurial/commands.py before: 7.380 secs after: 7.320 secs repo: https://hg.mozilla.org/mozilla-central/#f214df6ac75f command: hg annotate layout/generic/nsTextFrame.cpp before: 5.070 secs after: 5.050 secs repo: https://hg.mozilla.org/releases/mozilla-beta/#4f80fecda802 command: hg annotate -r 4954faa47dd0 gfx/thebes/gfxWindowsPlatform.cpp before: 1.600 secs after: 1.620 secs
Sun, 26 Apr 2015 15:13:13 -0400 test-commit-interactive: stablize output for no-execbit platforms stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 26 Apr 2015 15:13:13 -0400] rev 24861
test-commit-interactive: stablize output for no-execbit platforms
Sun, 26 Apr 2015 15:10:09 -0400 test-bundle2-exchange: make hooks compatible with Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 26 Apr 2015 15:10:09 -0400] rev 24860
test-bundle2-exchange: make hooks compatible with Windows The cmd.exe process doesn't fail the hook when "; false" is appended, and its echo command prints out the quote characters.
Tue, 28 Apr 2015 00:38:16 +0900 i18n: extract doc string of each web commands as translatable one stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 28 Apr 2015 00:38:16 +0900] rev 24859
i18n: extract doc string of each web commands as translatable one Before this patch, doc string of each web commands isn't extracted as translatable one, even though web commands are listed up in "hg help hgweb". This patch adds "mercurial/hgweb/webcommands.py" on to arguments of "i18n/hggettext". "i18nfunctions" added into "webcommands.py" is used by "i18n/hggettext" to get the list of functions having translatable doc string.
Fri, 24 Apr 2015 23:23:55 -0400 subrepo: don't write .hgsubstate lines with empty subrepo state (issue4622) stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 24 Apr 2015 23:23:55 -0400] rev 24858
subrepo: don't write .hgsubstate lines with empty subrepo state (issue4622) The '' that is used to represent the state of a not-yet-committed subrepo cannot be written to the file, because the code that parses the file splits on ' ' and expects two parts. Given that the .hgsubstate file is automatically rewritten on commit, it seems a little strange that the file is written out during a merge.
Sat, 25 Apr 2015 23:54:31 -0400 revert: restore the ability to revert across case only renames (issue4481) stable
Matt Harbison <matt_harbison@yahoo.com> [Sat, 25 Apr 2015 23:54:31 -0400] rev 24857
revert: restore the ability to revert across case only renames (issue4481) This regressed in 5e16fe6fdd32, in what looks like an unrelated change. It seems sufficient to pass 'ignoremissing=True', but the restored try/except has been there for six years since 41bb88cb913e, so this seems safer for now. Note that renaming directories in the filename doesn't appear to work- not sure if this would end up throwing a different type of error when that is fixed.
Mon, 27 Apr 2015 11:11:26 -0500 convert: avoid traceback in subversion sink stable
Matt Mackall <mpm@selenic.com> [Mon, 27 Apr 2015 11:11:26 -0500] rev 24856
convert: avoid traceback in subversion sink We've had a couple reports of subversion tracebacks that trigger when the parents list is empty, and thus block showing what the commit failure was on the next two lines.
Fri, 24 Apr 2015 15:29:02 -0500 merge with i18n stable
Matt Mackall <mpm@selenic.com> [Fri, 24 Apr 2015 15:29:02 -0500] rev 24855
merge with i18n
Thu, 23 Apr 2015 00:07:37 -0300 i18n-pt_BR: synchronized with 5947a68fa271 stable
Wagner Bruna <wbruna@yahoo.com> [Thu, 23 Apr 2015 00:07:37 -0300] rev 24854
i18n-pt_BR: synchronized with 5947a68fa271
Fri, 24 Apr 2015 14:52:12 -0400 template-phases: do not show description or summary if empty stable
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 24 Apr 2015 14:52:12 -0400] rev 24853
template-phases: do not show description or summary if empty This is a copy of c1cb6523e968, but applied to the phases template, which is itself almost a copy of the default template. Perhaps we should rewrite these templates to use the %include syntax afforded by config files. This change seems a bit too big for stable, though.
Fri, 24 Apr 2015 14:17:14 -0400 test-command-template: add a short description of a temporary snippet stable
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 24 Apr 2015 14:17:14 -0400] rev 24852
test-command-template: add a short description of a temporary snippet This snippet was introduced by c1cb6523e968. Its purpose seems a bit obscure without historical context.
Thu, 23 Apr 2015 16:36:18 +0100 bundle2: also save output when error happens during part processing stable
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 23 Apr 2015 16:36:18 +0100] rev 24851
bundle2: also save output when error happens during part processing Until this changeset, we were only able to save output if an error happened during the 'transaction.close()' phase. If the 'processbundle' call raised an exception, the 'bundleoperation' object was never returned, so the reply bundle was never accessible and no output could be salvaged. We introduce a quick (but not very elegant) fix to gain access to any reply created during the processing. This conclude this output related series. We should hopefully be able client-side to see the whole server output, in a proper order. The code is now complex enough that a refactoring of it would make sense on default.
Thu, 23 Apr 2015 14:54:45 +0100 bundle2: capture output issue during transaction close stable
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 23 Apr 2015 14:54:45 +0100] rev 24850
bundle2: capture output issue during transaction close We were capturing all output issue during bundle2 processing, and all output issue during transaction rollback in case of failure. However, the output issue during transaction commit was still roaming the land freely. It is now put back in line. This let the user see output from 'pretxnclose' and 'txnclose' (and related) in the right order.
Thu, 23 Apr 2015 17:03:58 +0100 bundle2: also capture hook output during processing stable
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 23 Apr 2015 17:03:58 +0100] rev 24849
bundle2: also capture hook output during processing External hook used to directly write on stdout and stderr. As a result their output was not captured by the bundle2 processing. This resulted in confusing out of order output on the client side. We are now capturing hooks output in this context.
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/.
Sat, 18 Apr 2015 15:27:03 +0900 annotate: prepare ancestry context of workingfilectx stable
Yuya Nishihara <yuya@tcha.org> [Sat, 18 Apr 2015 15:27:03 +0900] rev 24818
annotate: prepare ancestry context of workingfilectx _ancestrycontext is necessary for fast lookup of _changeid. Because we can't compute the ancestors from wctx, we skip to its parents. 'None' is not needed to be included in _ancestrycontext because it is used for a membership test of filelog revisions. repo: https://hg.mozilla.org/releases/mozilla-beta/#062e49bcb2da command: hg annotate -r 'wdir()' gfx/thebes/gfxWindowsPlatform.cpp before: 51.520 sec after: 1.780 sec
Sat, 18 Apr 2015 14:10:55 +0900 committablefilectx: propagate ancestry info to parent to fix annotation stable
Yuya Nishihara <yuya@tcha.org> [Sat, 18 Apr 2015 14:10:55 +0900] rev 24817
committablefilectx: propagate ancestry info to parent to fix annotation Before this patch, annotating working directory could include wrong revisions that were hidden or belonged to different branches. This fixes wfctx.parents() to set _descendantrev so that all ancestors can take advantage of the linkrev adjustment introduced at c48924787eaa. _adjustlinkrev() can handle 'None' revision thanks to 5a12ef618c03.
Sat, 18 Apr 2015 14:03:41 +0900 filectx: extract function to create parent fctx keeping ancestry info stable
Yuya Nishihara <yuya@tcha.org> [Sat, 18 Apr 2015 14:03:41 +0900] rev 24816
filectx: extract function to create parent fctx keeping ancestry info committablefilectx.parents() should use this to take advantage of the linkrev adjustment.
Sat, 18 Apr 2015 13:46:24 +0900 filectx: factor out creation of parent fctx stable
Yuya Nishihara <yuya@tcha.org> [Sat, 18 Apr 2015 13:46:24 +0900] rev 24815
filectx: factor out creation of parent fctx This series tries to fix wrong ancestry information on annotating working directory. This change should slightly improves the readability of the next patch.
Sun, 19 Apr 2015 11:37:29 +0100 help: fix typo commited -> committed stable
Javi Merino <merino.jav@gmail.com> [Sun, 19 Apr 2015 11:37:29 +0100] rev 24814
help: fix typo commited -> committed
Sat, 18 Apr 2015 13:08:41 -0400 largefiles: don't mangle filesets when fixing up the log matcher stable
Matt Harbison <matt_harbison@yahoo.com> [Sat, 18 Apr 2015 13:08:41 -0400] rev 24813
largefiles: don't mangle filesets when fixing up the log matcher The fileset-generated.t test previously failed with this: + hg: parse error: unknown identifier: .hglf/modified + (did you mean 'modified'?) + [255] Filesets will find the standins on their own, without any help. While that's useful for some things like modified(), clean(), etc., it is wrong for things like size(). Proper fileset support for largefiles is not trivial, but this was failing with just the extension enabled on a normal repo.
Sat, 18 Apr 2015 00:34:38 -0400 largefiles: don't crash when cloning to a remote repo stable
Matt Harbison <matt_harbison@yahoo.com> [Sat, 18 Apr 2015 00:34:38 -0400] rev 24812
largefiles: don't crash when cloning to a remote repo The immediate crash was when checking for requirements immediately after this, but lfcommands.downloadlfiles() will also crash if --all-largefiles is specified. That has been in place since atleast 5884812686f7 (2.3-rc) without anyone noticing. I can't tell from the peer classes if there's a way to make the custom largefile functionality work in this case, but atleast it doesn't crash.
Fri, 17 Apr 2015 14:12:01 -0700 run-tests: don't error when glob matched line ends with backslash stable
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 17 Apr 2015 14:12:01 -0700] rev 24811
run-tests: don't error when glob matched line ends with backslash As part of writing another test, I triggered an array index error in glob match processing code by having a (glob) line end in a single backslash (which is the escape character). Adding a simple bounds check prevents the error in run-tests.py.
Fri, 17 Apr 2015 09:46:43 -0700 histedit: change state format to allow non-hash lines stable
Durham Goode <durham@fb.com> [Fri, 17 Apr 2015 09:46:43 -0700] rev 24810
histedit: change state format to allow non-hash lines The existing state serialization format assumed the rule line consisted of an action and a hash. In our external extension that adds 'exec' this is not the case (there is no hash, just the shell command). So let's change the format to be more generic with just an action and a remainder, and the various commands can handle it as they wish. Flagged for stable since we want to get this format tweak in before the new format goes live in the release.
Fri, 17 Apr 2015 15:42:20 -0500 tests: fix portability issue with test-merge-tools stable
Matt Mackall <mpm@selenic.com> [Fri, 17 Apr 2015 15:42:20 -0500] rev 24809
tests: fix portability issue with test-merge-tools Not sure how this ever worked.
Fri, 17 Apr 2015 12:39:55 -0400 test-rename-merge2: fix test failure on Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 17 Apr 2015 12:39:55 -0400] rev 24808
test-rename-merge2: fix test failure on Windows Windows and OpenVMS use double quote for shell quoting, posix uses single quote. Since the other test lines added in 5668202cfaaf don't include the quotes, this was presumably an oversight.
Fri, 17 Apr 2015 12:11:14 -0400 test-add.t: fix output difference between Windows and OS X (issue4603) stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 17 Apr 2015 12:11:14 -0400] rev 24807
test-add.t: fix output difference between Windows and OS X (issue4603)
Fri, 17 Apr 2015 23:22:58 +0900 tags: do not abort if failed to write lock file to save cache stable
Yuya Nishihara <yuya@tcha.org> [Fri, 17 Apr 2015 23:22:58 +0900] rev 24806
tags: do not abort if failed to write lock file to save cache LockHeld wasn't enough to suppress error during acquiring lock. If .hg directory is read-only, LockUnavailable will be raised. $ chmod ugo-w .hg $ hg identify abort: could not lock working directory of ...: Permission denied
Thu, 16 Apr 2015 20:58:41 -0500 Added signature for changeset e89f909edffa stable
Matt Mackall <mpm@selenic.com> [Thu, 16 Apr 2015 20:58:41 -0500] rev 24805
Added signature for changeset e89f909edffa
Thu, 16 Apr 2015 20:58:35 -0500 Added tag 3.4-rc for changeset e89f909edffa stable
Matt Mackall <mpm@selenic.com> [Thu, 16 Apr 2015 20:58:35 -0500] rev 24804
Added tag 3.4-rc for changeset e89f909edffa
Thu, 16 Apr 2015 20:57:51 -0500 merge default into stable for 3.4 freeze stable 3.4-rc
Matt Mackall <mpm@selenic.com> [Thu, 16 Apr 2015 20:57:51 -0500] rev 24803
merge default into stable for 3.4 freeze
Thu, 16 Apr 2015 20:56:43 -0500 tests: fix up whitespace complaint
Matt Mackall <mpm@selenic.com> [Thu, 16 Apr 2015 20:56:43 -0500] rev 24802
tests: fix up whitespace complaint
Thu, 16 Apr 2015 20:52:37 -0500 tests: fix test-tags on vfat
Matt Mackall <mpm@selenic.com> [Thu, 16 Apr 2015 20:52:37 -0500] rev 24801
tests: fix test-tags on vfat The unix conditional section wasn't cleaning up sufficiently.
Thu, 16 Apr 2015 20:31:44 -0500 tests: ignore sha512 flag in bundle2 for py2.4
Matt Mackall <mpm@selenic.com> [Thu, 16 Apr 2015 20:31:44 -0500] rev 24800
tests: ignore sha512 flag in bundle2 for py2.4
Thu, 16 Apr 2015 04:01:51 -0400 bundle2-localpeer: properly propagate the server output on error (issue4594)
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 16 Apr 2015 04:01:51 -0400] rev 24799
bundle2-localpeer: properly propagate the server output on error (issue4594) In case of errors, output parts salvaged from the reply bundle need to be processed for outputting their content. This concludes our quest for fixing issue4594.
Thu, 16 Apr 2015 05:09:37 -0400 bundle2: add on more layer of exception catching in localrepo.unbundle
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 16 Apr 2015 05:09:37 -0400] rev 24798
bundle2: add on more layer of exception catching in localrepo.unbundle We are going to add output related logic in this function. We do the indentation first to help next changeset readability. We need a new try except because we want to handle output on any exception, including PushRaced ones.
Thu, 16 Apr 2015 03:17:37 -0400 bundle2-wireproto: properly propagate the server output on error (issue4594)
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 16 Apr 2015 03:17:37 -0400] rev 24797
bundle2-wireproto: properly propagate the server output on error (issue4594) In case of errors, output parts salvaged from the reply bundle are re-injected into the bundle carrying the exception. We still need to fix the situation for non-wireprotocol push.
Thu, 16 Apr 2015 03:56:50 -0400 bundle2: refactor error bundle creation for the wireprotocol
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 16 Apr 2015 03:56:50 -0400] rev 24796
bundle2: refactor error bundle creation for the wireprotocol We want to add output information to the error bundle. Before doing this, we rework the code to have a single bundler creation and return statement. This will make the update with the output simpler as only one place will have to be touched.
Thu, 16 Apr 2015 03:17:01 -0400 bundle2: store the salvaged output on the exception object
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 16 Apr 2015 03:17:01 -0400] rev 24795
bundle2: store the salvaged output on the exception object The re-handling of output is happening in some 'unbundle' callers. We have to transmit the output information to this place so we stick it on the exception. This is the third step in our quest for preserving the server output on error (issue4594). We want to be able to copy the output part from the aborted reply into the exception bundle.
Thu, 16 Apr 2015 03:16:04 -0400 bundle2: add a 'salvageoutput' method on bundle20
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 16 Apr 2015 03:16:04 -0400] rev 24794
bundle2: add a 'salvageoutput' method on bundle20 This method returns a copy of all 'output' parts added to the bundler. This is the second step in our quest for preserving the server output on error (issue4594). We want to be able to copy the output parts from the aborted reply into the exception bundle. The function will be used in a later patch.
Thu, 16 Apr 2015 03:15:28 -0400 bundle2: add a 'copy' method on parts
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 16 Apr 2015 03:15:28 -0400] rev 24793
bundle2: add a 'copy' method on parts This is the first step in our quest for preserving the server output on error (issue4594). We want to be able to copy the output parts from the aborted reply into the exception bundle. The function will be used in a later patch.
Thu, 16 Apr 2015 05:36:49 -0400 hooks: add a 'txnabort' hook
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 16 Apr 2015 05:36:49 -0400] rev 24792
hooks: add a 'txnabort' hook This hook will be called whenever a transaction is aborted. This will make it easy for people to clean up temporary content they may have created during a transaction.
Thu, 16 Apr 2015 05:41:07 -0400 help: document the ''HG_TXNID'' environment variable during hooks
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 16 Apr 2015 05:41:07 -0400] rev 24791
help: document the ''HG_TXNID'' environment variable during hooks We forgot to document the new "transaction ID" mechanism.
Sun, 12 Apr 2015 01:39:21 -0400 match: add a subclass for dirstate normalizing of the matched patterns
Matt Harbison <matt_harbison@yahoo.com> [Sun, 12 Apr 2015 01:39:21 -0400] rev 24790
match: add a subclass for dirstate normalizing of the matched patterns This class is only needed on case insensitive filesystems, and only for wdir context matches. It allows the user to not match the case of the items in the filesystem- especially for naming directories, which dirstate doesn't handle[1]. Making dirstate handle mismatched directory cases is too expensive[2]. Since dirstate doesn't apply to committed csets, this is only created by overriding basectx.match() in workingctx, and only on icasefs. The default arguments have been dropped, because the ctx must be passed to the matcher in order to function. For operations that can apply to both wdir and some other context, this ends up normalizing the filename to the case as it exists in the filesystem, and using that case for the lookup in the other context. See the diff example in the test. Previously, given a directory with an inexact case: - add worked as expected - diff, forget and status would silently ignore the request - files would exit with 1 - commit, revert and remove would fail (even when the commands leading up to them worked): $ hg ci -m "AbCDef" capsdir1/capsdir abort: CapsDir1/CapsDir: no match under directory! $ hg revert -r '.^' capsdir1/capsdir capsdir1\capsdir: no such file in rev 64dae27060b7 $ hg remove capsdir1/capsdir not removing capsdir1\capsdir: no tracked files [1] Globs are normalized, so that the -I and -X don't need to be specified with a case match. Without that, the second last remove (with -X) removes the files, leaving nothing for the last remove. However, specifying the files as 'glob:**.Txt' does not work. Perhaps this requires 're.IGNORECASE'? There are only a handful of places that create matchers directly, instead of being routed through the context.match() method. Some may benefit from changing over to using ctx.match() as a factory function: revset.checkstatus() revset.contains() revset.filelog() revset._matchfiles() localrepository._loadfilter() ignore.ignore() fileset.subrepo() filemerge._picktool() overrides.addlargefiles() lfcommands.lfconvert() kwtemplate.__init__() eolfile.__init__() eolfile.checkrev() acl.buildmatch() Currently, a toplevel subrepo can be named with an inexact case. However, the path auditor gets in the way of naming _anything_ in the subrepo if the top level case doesn't match. That is trickier to handle, because there's the user provided case, the case in the filesystem, and the case stored in .hgsub. This can be fixed next cycle. --- a/tests/test-subrepo-deep-nested-change.t +++ b/tests/test-subrepo-deep-nested-change.t @@ -170,8 +170,15 @@ R sub1/sub2/test.txt $ hg update -Cq $ touch sub1/sub2/folder/bar +#if icasefs + $ hg addremove Sub1/sub2 + abort: path 'Sub1\sub2' is inside nested repo 'Sub1' + [255] + $ hg -q addremove sub1/sub2 +#else $ hg addremove sub1/sub2 adding sub1/sub2/folder/bar (glob) +#endif $ hg status -S A sub1/sub2/folder/bar ? foo/bar/abc The narrowmatcher class may need to be tweaked when that is fixed. [1] http://www.selenic.com/pipermail/mercurial-devel/2015-April/068183.html [2] http://www.selenic.com/pipermail/mercurial-devel/2015-April/068191.html
Sun, 12 Apr 2015 00:29:17 -0400 match: move _normalize() into the match class
Matt Harbison <matt_harbison@yahoo.com> [Sun, 12 Apr 2015 00:29:17 -0400] rev 24789
match: move _normalize() into the match class This will be overridden in an upcoming patch to also deal with dirstate normalization on case insensitive filesystems.
Sat, 17 Jan 2015 03:34:57 +0100 largefiles: always consider updatelfiles 'checked' parameter set
Mads Kiilerich <madski@unity3d.com> [Sat, 17 Jan 2015 03:34:57 +0100] rev 24788
largefiles: always consider updatelfiles 'checked' parameter set mergeupdate already set the flag to update all. This will thus only change overriderevert and scmutilmarktouched ... where the flag effectually also were true. The test coverage thus shows no change. As the flag always is set, it is removed. This is mainly a change for keeping the code simple and consistent and correct, but it should also make it faster in many cases.
Wed, 15 Apr 2015 15:22:16 -0400 largefiles: for update -C, only update largefiles when necessary
Mads Kiilerich <madski@unity3d.com> [Wed, 15 Apr 2015 15:22:16 -0400] rev 24787
largefiles: for update -C, only update largefiles when necessary Before, a --clean update with largefiles would use the "optimization" that it didn't read hashes from standin files before and after the update. Instead of trusting the content of the standin files, it would rehash all the actual largefiles that lfdirstate reported clean and update the standins that didn't have the expected content. It could thus in some "impossible" situations automatically recover from some "largefile got out sync with its standin" issues (even there apparently still were weird corner cases where it could fail). This extra checking is similar to what core --clean intentionally do not do, and it made update --clean unbearable slow. Usually in core Mercurial, --clean will rely on the dirstate to find the files it should update. (It is thus intentionally possible (when trying to trick the system or if there should be bugs) to end up in situations where --clean not will restore the working directory content correctly.) Checking every file when we "know" it is ok is however not an option - that would be too slow. Instead, trust the content of the standin files. Use the same logic for --clean as for linear updates and trust the dirstate and that our "logic" will keep them in sync. It is much cheaper to just rehash the largefiles reported dirty by a status walk and read all standins than to hash largefiles. Most of the changes are just a change of indentation now when the different kinds of updates no longer are handled that differently. Standins for added files are however only written when doing a normal update, while deleted and removed files only will be updated for --clean updates.
Wed, 15 Apr 2015 11:49:44 -0400 subrepo: calculate _relpath for hgsubrepo based on self instead of parent
Matt Harbison <matt_harbison@yahoo.com> [Wed, 15 Apr 2015 11:49:44 -0400] rev 24786
subrepo: calculate _relpath for hgsubrepo based on self instead of parent Prior to 105758d1b37b, the subrelpath() (now _relpath) for hgsubrepo was calculated by removing the root path of the outermost repo from the root path of the subrepo. Since the root paths use platform specific separators, and the relative path is printed by various commands, the output of these commands require a glob (and check-code.py enforces this). In an effort to be generic to all subrepos, 105758d1b37b started calculating this path based on the parent repo, and then joining the subrepo path in .hgsub. One of the tests in test-subrepo.t creates a subrepo inside a directory, so the path being joined contained '/' instead of '\'. This made the test fail with a '~' status, because the glob is unnecessary[1]. Removing them made the test work, but then check-code complains. We can't just drop the check-code rule, because sub-subrepos are still joined with '\'. Presumably the other subrepo types have this issue as well, but there likely isn't a test with git or svn repos inside a subdirectory. This simply restores the exact _relpath value (and output) for hgsubrepos prior to 105758d1b37b. [1] http://www.selenic.com/pipermail/mercurial-devel/2015-April/068720.html
Wed, 15 Apr 2015 11:23:26 -0400 subrepo: backout 93b0e0db7929 to restore reporelpath()
Matt Harbison <matt_harbison@yahoo.com> [Wed, 15 Apr 2015 11:23:26 -0400] rev 24785
subrepo: backout 93b0e0db7929 to restore reporelpath() The path for hgsubrepo needs to be calculated slightly differently from other subrepo types, but can reuse this. See the next patch for details.
Thu, 16 Apr 2015 18:48:20 -0500 rollback: clear resolve state (issue4593)
Matt Mackall <mpm@selenic.com> [Thu, 16 Apr 2015 18:48:20 -0500] rev 24784
rollback: clear resolve state (issue4593)
Thu, 16 Apr 2015 11:31:48 -0700 diff: pass the diff matcher to the copy logic
Durham Goode <durham@fb.com> [Thu, 16 Apr 2015 11:31:48 -0700] rev 24783
diff: pass the diff matcher to the copy logic This passes the existing diff matcher instance down to the copy logic so copy tracing can be more efficient when possible and only trace copies for matching files. This only actually affects forwardcopies (i.e. Given A<-B<-C<-D, it works for 'hg diff -r B -r D foo.txt', but not for 'hg diff -r D -r B foo.txt') since backward copies require walking all histories, and not just the individual file's. This reduces 'hg diff -r A -r B foo.txt' time from 15s to 1s when A and B have 80,000 files different.
Thu, 16 Apr 2015 11:29:30 -0700 copies: add matcher parameter to copy logic
Durham Goode <durham@fb.com> [Thu, 16 Apr 2015 11:29:30 -0700] rev 24782
copies: add matcher parameter to copy logic This allows passing a matcher down the pathcopies() stack to _forwardcopies(). This will let us add logic in a later patch to avoid tracing copies when not necessary (like when doing hg diff -r 1 -r 2 foo.txt).
Sun, 12 Apr 2015 23:01:18 -0700 treemanifest: extract parse method from constructor
Martin von Zweigbergk <martinvonz@google.com> [Sun, 12 Apr 2015 23:01:18 -0700] rev 24781
treemanifest: extract parse method from constructor When we start to lazily load submanifests, it will be useful to be able to create an treemanifest instance before manifest data gets parsed into it. To prepare for this, extract the parsing code from treemanifest's constructor to a separate method.
Sun, 12 Apr 2015 14:37:55 -0700 manifest: duplicate call to addrevision()
Martin von Zweigbergk <martinvonz@google.com> [Sun, 12 Apr 2015 14:37:55 -0700] rev 24780
manifest: duplicate call to addrevision() When we start writing submanifests to their own revlogs, we will not want to write a new revision for a directory if there were no changes to it. To prepare for this, duplicate the call to addrevision() and move them earlier where they can more easily be avoided.
Thu, 16 Apr 2015 14:26:50 -0700 record: add message when starting record's curses interface
Laurent Charignon <lcharignon@fb.com> [Thu, 16 Apr 2015 14:26:50 -0700] rev 24779
record: add message when starting record's curses interface We are adding this log message to reduce a confusion when a command prints something just before starting the curses interface. Since the interactive mode is taking over the entire screen, starts with no delay and does wait for a key press, the user believes that messages printed before opening the interactive mode were actually printed after using interactive mode, not before. The fix adds the line "Starting interactive mode" helping the user separate the messages that were printed before and after the start of the interactive mode. One particular example where this was a problem is the revert command where we first print the list of changes to be considered for revert, then opens the curses interface right away without letting the user see the messages. The user then selects the changes, validates and then see the messages from before opening the interactive mode and is confused.
Tue, 14 Apr 2015 20:09:56 +0200 subrepo: add include/exclude support for diffing git subrepos
Mathias De Maré <mathias.demare@gmail.com> [Tue, 14 Apr 2015 20:09:56 +0200] rev 24778
subrepo: add include/exclude support for diffing git subrepos Previously, git subrepos were ignored if any type of path selection was done. This can be solved by using subrepo status and filtering matching files.
Sun, 12 Apr 2015 19:00:31 +0900 revset: undocument wdir() until its command outputs get stable
Yuya Nishihara <yuya@tcha.org> [Sun, 12 Apr 2015 19:00:31 +0900] rev 24777
revset: undocument wdir() until its command outputs get stable wdir() implementation is still incomplete and shouldn't be advertised to users. This patch will be backed out when - template values such as {rev} and {node} are settled - major commands and revsets work without crashing
Thu, 16 Apr 2015 18:30:08 -0500 linkrev: fix issue with annotate of working copy
Matt Mackall <mpm@selenic.com> [Thu, 16 Apr 2015 18:30:08 -0500] rev 24776
linkrev: fix issue with annotate of working copy The introrev was appearing as None in new annotate tests, which the code from the stable branch wasn't expecting.
Thu, 16 Apr 2015 17:30:01 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 16 Apr 2015 17:30:01 -0500] rev 24775
merge with stable
Sat, 04 Apr 2015 02:16:48 -0700 histedit: delete all non-actionclass related code
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 02:16:48 -0700] rev 24774
histedit: delete all non-actionclass related code Now that all actions have been migrated to the class format, we can delete all the unnecessary code that supported the old function format.
Sat, 04 Apr 2015 02:12:53 -0700 histedit: improve roll action integration with fold
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 02:12:53 -0700] rev 24773
histedit: improve roll action integration with fold Previously the fold action would inspect it's class to figure out if it was a rollup or not. This was hacky. Now that finishfold is inside the fold class, let's modify it to check a function (which roll can override) to determine if it should be prompting for a commit message.
Sat, 04 Apr 2015 02:12:24 -0700 histedit: move finishfold into fold class
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 02:12:24 -0700] rev 24772
histedit: move finishfold into fold class Let's move the finishfold function into the fold class so we can modify it from the roll class more easily.
Sat, 04 Apr 2015 02:03:27 -0700 histedit: convert fold/roll actions into a class
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 02:03:27 -0700] rev 24771
histedit: convert fold/roll actions into a class This converts the fold/roll actions into a histeditclass instance, as part of an ongoing effort to refactor histedit for maintainability and robustness. The tests changed for two reasons: 1) We get a new 'empty changeset' warning because we now warn more consistently between normal histedit and --continue about commits disappearing. 2) Previously we were not putting the histedit-source extra field on the temporary fold commit during normal runs, but we were on --continue runs. By unifying these code paths we now consistently put histedit-source on the temporary fold commit, which changes some of the hashes in the backup bundles.
Sat, 04 Apr 2015 01:00:51 -0700 histedit: convert edit action into a class
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 01:00:51 -0700] rev 24770
histedit: convert edit action into a class This converts the edit action into a histeditclass instance, as part of an ongoing effort to refactor histedit for maintainability and robustness.
Sat, 04 Apr 2015 00:42:32 -0700 histedit: convert message action into a class
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 00:42:32 -0700] rev 24769
histedit: convert message action into a class This converts the message action into a histeditclass instance, as part of an ongoing effort to refactor histedit for maintainability and robustness.
Sat, 04 Apr 2015 00:30:01 -0700 histedit: convert drop action into a class
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 00:30:01 -0700] rev 24768
histedit: convert drop action into a class This converts the drop action into a histeditclass instance, as part of an ongoing effort to refactor histedit for maintainability and robustness.
Sat, 04 Apr 2015 11:39:08 -0700 histedit: convert pick action into a class
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 11:39:08 -0700] rev 24767
histedit: convert pick action into a class This converts the pick action into a histeditclass instance, as part of an ongoing effort to refactor histedit for maintainability and robustness. The test output changed because previously pick would only report the commit disappearing if there were no merge conflicts. Now that we've unified the normal and the --continue flows, they act the same and we get the warning even after --continue.
Sat, 04 Apr 2015 11:37:08 -0700 histedit: integrate action class into flow
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 11:37:08 -0700] rev 24766
histedit: integrate action class into flow This takes the newly added histeditaction class and integrates it into the histedit run and bootstrapcontinue logic. No actions implement the class yet, but they will be add in upcoming patches.
Sat, 04 Apr 2015 11:34:53 -0700 histedit: add a new histeditaction class
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 11:34:53 -0700] rev 24765
histedit: add a new histeditaction class This adds a new class called histeditaction. It represents a single action in a histedit plan. Future patches will integrate it into the histedit flow, then convert each existing action in to the class form one by one. This is part of a larger refactor aimed at increasing histedit robustness, maintainability, and extensibility.
Sat, 04 Apr 2015 01:00:05 -0700 histedit: allow histedit --continue when not on a descendant (BC)
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 01:00:05 -0700] rev 24764
histedit: allow histedit --continue when not on a descendant (BC) Previously we would not allow --continue if the current working copy parent was not a descendant of the commit produced by the previous histedit step. There's nothing really blocking us from continuing the histedit in this situation, so let's stop aborting in this case. This is technically a BC change, but it is making things more forgiving so I think it's ok. In the future we will likely add an 'exec' action to histedit, which means the user can do whatever they want during the middle of a histedit (like perhaps calling 'hg update'), which means we'll need to support this case eventually anyway.
Thu, 16 Apr 2015 11:59:36 -0400 tags: explicitly log which tags cache file is being written
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 16 Apr 2015 11:59:36 -0400] rev 24763
tags: explicitly log which tags cache file is being written We now have multiple tags cache files. Record exactly which file is being written. This should help aid debugging into performance issues with any single filter.
Thu, 16 Apr 2015 11:54:13 -0400 tags: write a separate tags cache file for unfiltered repos
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 16 Apr 2015 11:54:13 -0400] rev 24762
tags: write a separate tags cache file for unfiltered repos Since we changed the format of the tags cache, we should bump the filename. Before this patch, "tags" was being used for unfiltered repositories. Change the naming scheme to be consistent and ensure that a new cache file is used. While I was here, I updated the docs to describe the existence of multiple caches. I also added explicit test coverage for the creation of the unfiltered tags cache.
Thu, 16 Apr 2015 11:32:46 -0400 tags: return empty list of heads for no .hgtags case
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 16 Apr 2015 11:32:46 -0400] rev 24761
tags: return empty list of heads for no .hgtags case The caller only uses the heads to resolve tags from content of .hgtags. Returning a non-empty array is pointless if there is no .hgtags file.
Thu, 16 Apr 2015 12:01:00 -0400 tags: change format of tags cache files
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 16 Apr 2015 12:01:00 -0400] rev 24760
tags: change format of tags cache files .hgtags fnodes are now written to a shared cache file. They don't need to exist in the per-filter tags cache files. Stop writing them. The format of the tags cache file has changed in a backwards incompatible way. This should be acceptable, as we just established per-filter tags cache files and no client should have per-filter tags cache files that will need to be read. So no backwards compatbility concern is present. The new format has a single header line followed by resolved tags entries. The header line is similar to the old first line with a major difference: we now compute and store a hash of the filtered revisions. Before, if the set of filtered revs changed, we may return incorrect results. We now detect that. A test for verifying filtered rev change is handled properly has been added.
Thu, 16 Apr 2015 10:12:44 -0400 tags: don't read .hgtags fnodes from tags cache files
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 16 Apr 2015 10:12:44 -0400] rev 24759
tags: don't read .hgtags fnodes from tags cache files Now that we have a standalone and shared cache for .hgtags fnodes, the .hgtags fnodes stored in the tags cache files are redundant. Upcoming patches will change the format of the tags cache files to remove this data and to improve the validation. To prepare for this, we change the tags reading code to ignore all but the tip .hgtags fnodes entries in existing tags cache files. All fnodes lookups now go through our new shared cache, which is why test output changed. Format of tags cache files has not yet changed.
Mon, 13 Apr 2015 14:54:02 -0400 rebase: restore bookmark state on abort
Tony Tung <tonytung@fb.com> [Mon, 13 Apr 2015 14:54:02 -0400] rev 24758
rebase: restore bookmark state on abort The bookmark state was already being preserved, but it wasn't being properly restored.
Sat, 04 Apr 2015 02:37:43 -0700 histedit: store backup file before histedit
Durham Goode <durham@fb.com> [Sat, 04 Apr 2015 02:37:43 -0700] rev 24757
histedit: store backup file before histedit It's possible for the user to delete some of the commits they started with during a histedit, and aborting the histedit doesn't bring them back. Let's store a backup bundle so we can always recover the stack of commits from before they began.
Mon, 13 Apr 2015 08:23:57 -0700 histedit: replace pickle with custom serialization
Durham Goode <durham@fb.com> [Mon, 13 Apr 2015 08:23:57 -0700] rev 24756
histedit: replace pickle with custom serialization Pickle is undesirable, so let's serialize it ourselves. We keep the ability to parse existing pickle blobs for now.
Wed, 15 Apr 2015 01:18:09 -0400 devel-warn: add a prefix to all messages ("devel-warn: ")
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 15 Apr 2015 01:18:09 -0400] rev 24755
devel-warn: add a prefix to all messages ("devel-warn: ") We want to make the origin and importance of the message clear to developers.
Wed, 15 Apr 2015 10:36:21 -0400 push: acquire local 'wlock' if "pushback" is expected (BC) (issue4596)
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 15 Apr 2015 10:36:21 -0400] rev 24754
push: acquire local 'wlock' if "pushback" is expected (BC) (issue4596) If the client allows "pushback", the bundle2 served back by the server may contains parts that will write to the repository. Such parts may require the 'wlock' (eg: bookmark) so we acquire it in advance to make sure it got acquired before the 'lock'.
(0) -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip