Yuya Nishihara <yuya@tcha.org> [Thu, 15 Mar 2018 21:52:47 +0900] rev 37106
templater: switch 'revcache' based on new mapping items
It was pretty easy to leave a stale 'revcache' when switching 'ctx'.
Let's make it be automatically replaced.
Yuya Nishihara <yuya@tcha.org> [Thu, 15 Mar 2018 21:49:33 +0900] rev 37105
templater: add hook point to populate additional mapping items
The 'revcache' dict will be inserted by this hook.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 24 Mar 2018 01:30:50 -0400] rev 37104
context: skip path conflicts by default when clearing unknown file (issue5776)
Prior to adding path conflict checking in 989e884d1be9, the test-audit-path.t
tests failed as shown here (but it was globbed away). 989e884d1be9 made it fail
with a message about the destination manifest containing a conflict (though the
no-symlink case wasn't updated). When the path conflict checking was gated
behind an experimental config in 2a774cae3a03^::2a774cae3a03, the update started
erroneously succeeding here. It turns out that the child of 989e884d1be9 is the
origin of this change when path conflict checking is disabled, as shown by
grafting the experimental config range on top of it.
What's happening here is merge.batchget() is writing the symlink 'back' to wdir
(but as a regular file for the no-symlink case), and then tries to write
'back/test', but calls wctx['back/test'].clearunknown() first. The code that's
gated here was removing the newly written 'back' file, allowing 'back/test' to
succeed. I tried checking for the dir components of 'back/test' in dirstate,
and skipping removal if present. But that didn't work because the dirstate
isn't updated after each file is written out.
This is the last persistent test failure on Windows, so the testbot should start
turning green now. \o/
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Mar 2018 13:02:27 +0900] rev 37103
url: make logginghttphandler compatible with Python 2.7.6
There wasn't a usable hook point in httplib, so we have to replace connect()
to wrap the socket before self._tunnel().
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Mar 2018 14:24:32 +0900] rev 37102
util: make safehasattr() a pycompat function
So safehasattr() can be imported by utils.* modules. util.safehasattr() still
remains as an alias since it is pretty basic utility available for years.
On current Python 3, the builtin hasattr() should have no problem.
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Mar 2018 14:13:37 +0900] rev 37101
util: drop util.Abort in favor of error.Abort (API)
IIRC, error.Abort exists since Mercurial 1.2, so it should be pretty easy
for extensions authors to update their code.
.. api::
The util.Abort alias has been removed. Use error.Abort.
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Mar 2018 14:09:44 +0900] rev 37100
test-bundle2-exchange: use error.Abort instead of util.Abort
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Mar 2018 14:08:50 +0900] rev 37099
util: use error.Abort instead of local alias
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Mar 2018 13:30:50 +0900] rev 37098
rcutil: directly call win32.executablepath()
Since it isn't supported on POSIX platform, we don't need to double the
compatibility layers.
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Mar 2018 17:19:32 +0900] rev 37097
directaccess: do not abort by 'ff...' hash
Since the 'ff...' hash should never be hidden, we can just ignore it.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 23 Mar 2018 11:20:13 -0700] rev 37096
hgweb: don't responsd to api requests unless feature is enabled
Per discussion at https://phab.mercurial-scm.org/D2834, new URLs
in hgweb can conflict with subrepos and virtual repos. This may prevent
access to repos in certain paths or having certain names.
Until we have a workaround for this, let's not serve requests for
"api/" URLs unless the feature is enabled.
Differential Revision: https://phab.mercurial-scm.org/D2936
Daniel Ploch <dploch@google.com> [Fri, 23 Mar 2018 11:20:49 -0700] rev 37095
fancyopts: prevent mutation of the default value in customopts
Differential Revision: https://phab.mercurial-scm.org/D2937
Daniel Ploch <dploch@google.com> [Thu, 22 Mar 2018 17:08:25 -0700] rev 37094
fancyopts: fix rendering of customopt defaults in help text
Differential Revision: https://phab.mercurial-scm.org/D2935
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 12 Mar 2018 18:38:26 +0530] rev 37093
remotenames: show remote bookmarks in `hg bookmarks`
This patch adds functionality to show list of remote bookmarks in `hg bookmarks`
command.
There is some indenting problem in the test output as the current bookmark
printing code in core can handle bookmark names of size 25 only gracefully.
The idea is taken from hgremotenames extension which has --remote and --all
flags to show remote bookmarks. However, this patch by defaults support showing
list of remote bookmarks if remotenames extension is enabled and remotebookmarks
are turned on.
Differential Revision: https://phab.mercurial-scm.org/D2808
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 11 Mar 2018 16:17:51 +0530] rev 37092
remotenames: add functionality to hoist remotebookmarks
This patch adds the functionality to hoist remotebookmarks to the top level
namespace. The peer of which bookmarks should be hoisted can be set using
`remotenames.hoistedpeer` config option. Only bookmarks can be hoisted. If a
hoisted name and local bookmark exists of the same name, the local bookmark
takes precedence.
While I was here, I documented the default values of two other remotenames
config options.
Differential Revision: https://phab.mercurial-scm.org/D2807
Kyle Lippincott <spectral@google.com> [Thu, 08 Mar 2018 11:44:03 -0800] rev 37091
copyfile: preserve stat info (mtime, etc.) when doing copies/renames
Differential Revision: https://phab.mercurial-scm.org/D2729
Matt Harbison <matt_harbison@yahoo.com> [Thu, 22 Mar 2018 22:58:31 -0400] rev 37090
merge: add 'isknown=True' to a dirstate.normalize() in _unknowndirschecker
Per the docstring for dirstate.normalize().
Matt Harbison <matt_harbison@yahoo.com> [Thu, 22 Mar 2018 22:56:29 -0400] rev 37089
merge: pconvert paths in _unknowndirschecker before dirstate-normalizing
This fixes the failure in test-pathconflicts-basic.t on Windows. The test was
passing in 'a\b', which was getting normalized to 'A\B', which isn't in
dirstate. (The filesystem path is all lowercase anyway.)
This isn't the only case of calling dirstate.normalize(), but other methods here
(util.finddirs()) seem to assume the input paths are already using '/'. I think
the backslash comes from wvfs.reljoin() (in this case), but could also come from
wvfs.walk(), so this is the only case that needs it.
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Mar 2018 22:39:43 +0900] rev 37088
util: enable deprecation warning for stringutil proxy (API)
.. api::
Several generic string helper functions have been moved to utils.stringutil
module.
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Mar 2018 21:56:20 +0900] rev 37087
stringutil: bulk-replace call sites to point to new module
This might conflict with other patches floating around, sorry.
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Mar 2018 21:19:31 +0900] rev 37086
stringutil: move generic string helpers to new module
Per https://phab.mercurial-scm.org/D2903#46738
URL and file paths functions are left since they are big enough to make
separate modules.
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Mar 2018 21:32:19 +0900] rev 37085
util: remove unused private constant '_hextochr'
The only user, _urlunquote(), was removed by 81d38478fced.
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Mar 2018 21:20:47 +0900] rev 37084
util: mark internal constants of escapedata() as private
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Mar 2018 21:14:12 +0900] rev 37083
util: adjust indent level in wrap()
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Mar 2018 21:13:31 +0900] rev 37082
util: mark MBTextWrapper as private
Makes porting slightly easier.
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Mar 2018 21:10:42 +0900] rev 37081
util: add helper to define proxy functions to utils.*
Kyle Lippincott <spectral@google.com> [Wed, 21 Mar 2018 12:36:29 -0700] rev 37080
filemerge: make the 'local' path match the format that 'base' and 'other' use
If we pass a separate '$output' arg to the merge tool, we produce four files:
local, base, other, and output. In this situation, 'output' will be the
original filename, 'base' and 'other' are temporary files, and previously
'local' would be the backup file (so if 'output' was foo.txt, 'local' would be
foo.txt.orig).
This change makes it so that 'local' follows the same pattern as 'base' and
'other' - it will be a temporary file either in the
`experimental.mergetempdirprefix`-controlled directory with a name like
foo~local.txt, or in the normal system-wide temp dir with a name like
foo~local.RaNd0m.txt.
For the cases where the merge tool does not use an '$output' arg, 'local' is
still the destination filename, and 'base' and 'other' are unchanged.
The hope is that this is much easier for people to reason about; rather than
having a tool like Meld pop up with three panes, one of them with the filename
"foo.txt.orig", one with the filename "foo.txt", and one with
"foo~other.StuFf2.txt", we can (when the merge temp dir stuff is enabled) make
it show up as "foo~local.txt", "foo.txt" and "foo~other.txt", respectively.
This also opens the door to future customization, such as getting the
operation-provided labels and a hash prefix into the filenames (so we see
something like "foo~dest.abc123", "foo.txt", and "foo~src.d4e5f6").
Differential Revision: https://phab.mercurial-scm.org/D2889
Matt Harbison <matt_harbison@yahoo.com> [Wed, 21 Mar 2018 22:36:26 -0400] rev 37079
test-strip-narrow: adjust bundle removal for Windows test stability
MSYS was mangling $TESTTMP to C:\\Users\\...\\test-narrow-strip.t-flat/, which
caused `rm` to fail. The -f was suppressing -ENOENT, so the only clue something
was wrong was when 2 bundles were applied via `hg unbundle` on line 91, instead
of just 1. This changed the text output of `hg unbundle`.
The first `rm` wasn't causing an issue, but is changed for consistency with the
rest of the file.
Yuya Nishihara <yuya@tcha.org> [Thu, 15 Mar 2018 21:38:57 +0900] rev 37078
templater: drop symbols which should be overridden by new 'ctx' (issue5612)
This problem is caused by impedance mismatch between the templater and the
formatter interface, which is that the template keywords are generally
evaluated dynamically, but the formatter puts static values into a template
mapping.
This patch avoids the problem by removing conflicting values from a mapping
dict when a 'ctx' is switched.
Yuya Nishihara <yuya@tcha.org> [Thu, 15 Mar 2018 21:22:52 +0900] rev 37077
templater: factor out function to create mapping dict for nested evaluation
overlaymap() is the hook point to drop mapping items conflicting with the
default keywords which have to be re-evaluated with new 'ctx' resource.