Siddharth Agarwal <sid0@fb.com> [Sat, 10 Jun 2017 14:07:31 -0700] rev 32791
test-dirstate-race: ensure that a isn't in the lookup set at the end
We're going to rely on this in upcoming patches.
Siddharth Agarwal <sid0@fb.com> [Sat, 10 Jun 2017 14:07:31 -0700] rev 32790
hghave: add test for whether fsmonitor is enabled
This uses the HGFSMONITOR_TESTS environment variable that
fsmonitor-run-tests.py adds.
Siddharth Agarwal <sid0@fb.com> [Sat, 10 Jun 2017 14:07:30 -0700] rev 32789
tests: add a wrapper to run fsmonitor tests
This script does a bunch of non-trivial configuration work: in particular, it
sets up an isolated instance of Watchman which isn't affected by global state
and can be torn down on completion.
This script also sets the HGFSMONITOR_TESTS environment variable, which hghave
will use in the next patch to allow gating on whether fsmonitor is enabled.
With fsmonitor enabled, there appear to be a number of failures in the test
suite. It's not yet clear to me why they're happening, but if someone would
like to jump in and fix some of them I hope this will be helpful for that.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 10 Jun 2017 18:47:09 +0100] rev 32788
setdiscovery: improves logged message
The 'srvheads' list contains all server heads including the common ones. We
adjust 'ui.log' message to provide more useful information about server heads
locally unknown. The performance impact of turning the list to set is
negligible (about 1e-4s) compared to the rest of the discovery cost, so I'm
taking the easy path.
Augie Fackler <raf@durin42.com> [Sat, 10 Jun 2017 10:46:06 -0400] rev 32787
tests: handle variation between pure and normal output in annotate --skip
I'm pretty sure that both results are valid, depending on how you
slice the edits.
Brandon McCaig <bamccaig@gmail.com> [Fri, 09 Jun 2017 20:12:39 -0400] rev 32786
bisect: improve option validation message
Sean Farley <sean@farley.io> [Sat, 10 Jun 2017 10:24:33 -0400] rev 32785
context: inline makememctx (API)
I have always thought it weird that we have a helper method instead of
just using __init__. So, I ripped it out.
Sean Farley <sean@farley.io> [Fri, 09 Jun 2017 13:39:13 -0700] rev 32784
context: add convenience method for returning a memfilectx from a patch
This is mostly a copy of what makememctx does but refactored to make it
behave more like our other convenience methods.
Sean Farley <sean@farley.io> [Fri, 09 Jun 2017 13:25:02 -0700] rev 32783
memctx: refactor inline getfilectx into convenience method
No actual logic is changing, just moving code so __init__ is easier to
read.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 09 Jun 2017 13:55:51 -0700] rev 32782
hgweb: refresh styling of gitweb's search form
gitweb was missing the hint hover box. So that was added.
Also, the positioning of the form was absolute and it didn't
vertically align on all pages. The element has been moved inline
with the navigation links (which now are contained in a div) and
flexbox is used to obtain sane alignment of the navigation links
and search form. For those new to flexbox,
"justify-content: space-between" basically says to maximize space
elements. You can use it to easily get left and right justified
containers without having to worry about width, floating, etc.
"align-items: center" centers all items in a cross-axis. I've
literally wasted hours trying to figure out both these problems
before flexbox. Flexbox is amazing.
Flexbox has been supported by Chrome and Firefox for a few years.
But it is only supported by IE 11. I'm willing to wager that
people using this either won't be using IE or will be using IE 11.
So I'm willing to be a bit aggressive in adopting flexbox because
it makes CSS alignment so much easier.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 09 Jun 2017 13:45:36 -0700] rev 32781
hgweb: consistently add search form to all gitweb pages
Paper has it on all pages. Not sure why gitweb doesn't. I think it
should be everywhere because it is a useful feature.
Also, we weren't consistently adding the HTML in the same place. This
was OK since the element is absolutely positioned. But this bothered
me a bit, so I went ahead and fixed it.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 09 Jun 2017 13:42:38 -0700] rev 32780
hgweb: consolidate search form for gitweb
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 09 Jun 2017 13:41:10 -0700] rev 32779
hgweb: consolidate search form for monoblue
Same deal as for paper.
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 09 Jun 2017 13:59:13 -0700] rev 32778
hgweb: consolidate search form for paper
AFAICT this was mostly a bunch of copy pasta. The only variation is
some pages defined a "value" attribute. The "query" variable will
just be empty on pages that don't accept it. So let's consolidate
the template and remove the redundancy.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 09 Jun 2017 23:56:50 -0400] rev 32777
test-extension: fix load path for Windows
The previous code was trying to load the extension from /tmp/hgtests.xxx/...,
but the actual path for tests is C:\Users\...\Temp\hgtests.xxx\... I assume
that the former is an MSYS path that maps somewhere under C:\MinGW.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 10 Jun 2017 00:11:54 -0400] rev 32776
test-setdiscovery: stabilize for Windows
Windows wants double quotes here.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 10 Jun 2017 02:20:14 -0400] rev 32775
convert: correct the documentation about whitespace in branchmap branches
Might as well let the users know they can get rid of branch names with spaces.
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 08 Jun 2017 00:51:46 +0530] rev 32774
py3: use pycompat.bytestr() instead of str()
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 02 Jun 2017 16:57:21 +0530] rev 32773
py3: convert bool variables to bytes
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 09 Jun 2017 13:07:49 +0900] rev 32772
context: avoid writing outdated dirstate out (issue5584)
Before this patch, workingctx.status() may cause writing outdated
dirstate out, if:
- .hg/dirstate is changed simultaneously after last loading it,
- there is any file, which should be dirstate.normal()-ed
Typical issue case is:
- the working directory is updated by "hg update"
- .hg/dirstate is updated in background (e.g. fsmonitor)
This patch compares identities of dirstate before and after
acquisition of wlock, and avoids writing outdated dirstate out, if
change of .hg/dirstate is detected.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 09 Jun 2017 13:07:49 +0900] rev 32771
tests: factor external procedures out for portability
Fortunately, "&&" is treated as "execute next, if previous doesn't
fail" both on POSIX and Windows. But keeping portability of
"dirstaterace.command" manually is troublesome.
This patch factors external procedures out as a shell script for
portability. "sh SCRIPT" always allows scripting in POSIX style.
This change is also for convenience. Fixed script name can reduce
command line arguments.
"r" prefix is needed for "sh '$TESTTMP/dirstaterace.sh'", because
$TESTTMP contains backslash on Windows.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 09 Jun 2017 13:07:48 +0900] rev 32770
dirstate: add identity information to detect simultaneous changing in storage
This identity is used to examine whether dirstate is simultaneously
changed in storage after previous caching (see issue5584 for detail).
util.cachestat can't be used for this purpose, because it has no
valuable information on Windows.
On the other hand, util.filestat can detect changing dirstate in
storage certainly, regardless of platforms.
https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Strictly speaking, if underlying filesystem doesn't support
ctime/mtime, util.filestat can't detect simultaneous changing in
storage as expected. But simultaneous changing on such (very rare)
platform can't be detected regardless of this patch series.
Therefore, util.filestat should be reasonable identity for almost all
usecases.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 09 Jun 2017 13:07:48 +0900] rev 32769
util: make filestat.__eq__ return True if both of self and old have None stat
For convenience to compare two filestat objects regardless of
None-ness of stat field.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 09 Jun 2017 12:58:18 +0900] rev 32768
vfs: create copy at renaming to avoid file stat ambiguity if needed
In order to fix issue5418, bff5ccbe5ead made vfs.rename(checkambig=True)
omit advancing mtime of renamed file, if renamed file is owned by
another (EPERM is raised in this case).
But this omission causes rewinding mtime at restoration in such
situation, and makes avoiding file stat ambiguity difficult, because
ExactCacheValidationPlan assumes that mtime should be advanced, if a
file is changed in same ctime.
https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Ambiguity of file stat also requires issue5584 to be fixed with other
than file stat, but "hash of file", "generation ID" and so on were
already rejected ideas (please see original RFC linked from "Outline
of issue" in ExactCacheValidationPlan page).
This omission occurs:
- only for non append-only files (dirstate, bookmarks, and phaseroots), and
- only if previous transaction is rollbacked by another user
The latter means "sharing a repository clone via group permission".
This is reasonable usecase, but not ordinary for many users, IMHO.
"hg rollback" itself has been deprecated since Mercurial 2.7, too.
Therefore, increasing the cost at rollbacking previous transaction
executed by another a little seems reasonable, for avoidance of file
stat ambiguity.
This patch does:
- create copy of (already renamed) source file, if advancing mtime
fails for EPERM
- rename from copied file to destination file, and
- advance mtime of renamed file, which is now owned by current user
This patch also factors "self.join(src)" out to reduce redundancy.