Siddharth Agarwal <sid0@fb.com> [Mon, 09 Nov 2015 22:37:32 -0800] rev 26895
test-merge-prompt.t: unset HGMERGE
We're going to test behavior with and without HGMERGE, so disable it for the
test.
Anton Shestakov <av6@dwimlabs.net> [Tue, 10 Nov 2015 23:02:59 +0800] rev 26894
hgweb: compute changeset parents and children for log pages lazily
Log pages, i.e. changelog, filelog and search results page computed children
and parents for each changeset shown, because spartan hgweb style shows this
info. Turns out, computing all this is heavy and also unnecessary for log pages
in all other hgweb styles.
Luckily, templates allow an easy way to do computations on demand: just pass
the heavy part of code as a callable and it will be only called when needed.
Here are some benchmarks on the mercurial repository (best of 3):
time wget http://127.0.0.1:8021/
before: 0m0.050s
after: 0m0.040s
time wget http://127.0.0.1:8021/?revcount=960
before: 0m1.164s
after: 0m0.389s
time wget http://127.0.0.1:8021/log/tip/mercurial/commands.py
before: 0m0.047s
after: 0m0.042s
time wget http://127.0.0.1:8021/log/tip/mercurial/commands.py?revcount=960
before: 0m0.830s
after: 0m0.434s
Siddharth Agarwal <sid0@fb.com> [Sun, 08 Nov 2015 23:42:44 -0800] rev 26893
filemerge: move :merge-local/other symlink check to precheck
In upcoming patches we're going to add more checks to the function currently
named _symlinkcheck. This consolidates all those checks.
Siddharth Agarwal <sid0@fb.com> [Sun, 08 Nov 2015 23:47:20 -0800] rev 26892
test-merge-types.t: add tests for :merge-local/:merge-other with symlinks
This had no test coverage.
Matt Mackall <mpm@selenic.com> [Mon, 09 Nov 2015 16:24:13 -0600] rev 26891
Added signature for changeset 1aa5083cbebb
Matt Mackall <mpm@selenic.com> [Mon, 09 Nov 2015 16:24:08 -0600] rev 26890
Added tag 3.6.1 for changeset 1aa5083cbebb
Matt Mackall <mpm@selenic.com> [Mon, 09 Nov 2015 15:53:11 -0600] rev 26889
posix: fix test-permissions regression
Anton Shestakov <av6@dwimlabs.net> [Sun, 08 Nov 2015 01:10:52 +0800] rev 26888
dockerlib: allow non-unique uid and gid of $DBUILDUSER (issue4657)
There are make targets for building mercurial packages for various
distributions using docker. One of the preparation steps before building is to
create inside the docker image a user with the same uid/gid as the current user
on the host system, so that the resulting files have appropriate
ownership/permissions.
It's possible to run `make docker-<distro>` as a user with uid or gid that is
already present in a vanilla docker container of that distibution. For example,
issue4657 is about failing to build fedora packages as a user with uid=999 and
gid=999 because these ids are already used in fedora, and groupadd fails.
useradd would fail too, if the flow ever got to it (and there was a user with
such uid already).
A straightforward (maybe too much) way to fix this is to allow non-unique uid
and gid for the new user and group that get created inside the image. I'm not
sure of the implications of this, but marmoute encouraged me to try and send
this patch for stable.
Mateusz Kwapich <mitrandir@fb.com> [Mon, 09 Nov 2015 10:43:23 -0800] rev 26887
dirstate: fix filefoldmap incosistency on file delete
The _filefoldmap is not updated in when files are deleted from dirstate. In the
case where the file with the same but differently cased name is added afterwards
it renders _filefoldmap incorrect. Those steps must occur to for a problem to
reproduce:
- call status (with listunknown=True),
- update working rectory to a commit which does a casefolding change (A -> a)
- call status again (it will show the file "a" as deleted)
Unfortunately I'm unable to write a test for it because I don't know any
core-mercurial command able to reproduce those steps.
The bug was originally spotted when hgwatchman was enabled. It caused the
changeset contents change during hg rebase (one file unrelarted to changeset
was deleted in it after rebase).
The hgwatchman is able to hit it because when hgignore changes the hgwatchmans
overridestatus is calling original status with listunknown=True.
Steve Borho <steve@borho.org> [Mon, 09 Nov 2015 09:41:20 -0600] rev 26886
wix: style-coal.css has been renamed
Matt Mackall <mpm@selenic.com> [Mon, 09 Nov 2015 12:49:21 -0600] rev 26885
merge with stable
Javi Merino <merino.jav@gmail.com> [Thu, 05 Nov 2015 10:31:20 +0000] rev 26884
clonebundles: fix typo s/comand/command/
Matt Mackall <mpm@selenic.com> [Fri, 06 Nov 2015 15:23:10 -0600] rev 26883
posix: retry on symlink race in checklink
Multiple threads might attempt to check links with the same temporary
name. This would cause one side to get an EEXIST error and wrongly
fail the support check. Here, we simply retry if our temporary name
exists.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 06 Nov 2015 13:01:15 -0500] rev 26882
changegroup: back code change of e7c618cee8df out
The previous changeset is a simpler way of fixing issue4934 without changing the
spirit of the code. We can remove the dual call to 'delayupdate' but we keep the
tests to show that the issue is still fixed.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 06 Nov 2015 12:59:09 -0500] rev 26881
changegroup: call 'prechangegroup' hook before setting up write delay
The 'prechangegroup' interfere with 'delayupdate' logic because it trigger the
one time call of 'changelog._writepending' (see issure4934). There is no reason
not to call that hook before setting up 'delayupdate' so we move the call a bit
earlier to avoid interference.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 06 Nov 2015 12:39:06 -0500] rev 26880
changegroup: fix the scope of a try finally
The try finally is here to ensure we release the just-created transaction.
Therefore we should not do half a dozen operations before actually entry the try
scope.
Matt Mackall <mpm@selenic.com> [Thu, 05 Nov 2015 17:30:10 -0600] rev 26879
encoding: re-escape U+DCxx characters in toutf8b input (issue4927)
This is the final missing piece in fully round-tripping random byte
strings through UTF-8b. While this issue means that UTF-8 <-> UTF-8b
isn't fully bijective, we don't expect to ever see U+DCxx codepoints
in "real" UTF-8 data, so it should remain bijective in practice.
Matt Mackall <mpm@selenic.com> [Thu, 05 Nov 2015 17:21:43 -0600] rev 26878
encoding: use getutf8char in toutf8b
This correctly avoids the ambiguity of U+FFFD already present in the
input and similar confusion by working a character at a time.
Matt Mackall <mpm@selenic.com> [Thu, 05 Nov 2015 17:11:50 -0600] rev 26877
encoding: handle non-BMP characters in fromutf8b
Matt Mackall <mpm@selenic.com> [Thu, 05 Nov 2015 17:09:00 -0600] rev 26876
posix: use getutf8char to handle OS X filename percent-escaping
This replaces an open-coded utf-8 parser that was ignoring subtle issues
like overlong encodings.
Matt Mackall <mpm@selenic.com> [Thu, 05 Nov 2015 16:48:46 -0600] rev 26875
encoding: add getutf8char helper
This allows us to find character boundaries in byte strings when
trying to do custom encodings.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 07 Nov 2015 16:03:09 -0500] rev 26874
unbundle: gratuitous fix white spacing "issue"
We were missing one space on this block.
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Nov 2015 21:19:09 +0900] rev 26873
demandimport: fix level passed to loader of sub-modules
As the fromlist gives the names of sub-modules, they should be searched in
the parent directory of the package's __init__.py, which is level=1.
I got the following error by rewriting hgweb to use absolute_import, where
the "mercurial" package is referenced as ".." (level=2):
ValueError: Attempted relative import beyond toplevel package
I know little about the import mechanism, but this change seems correct.
Before this patch, the following code did import the os module with no error:
from mercurial import demandimport
demandimport.enable()
from mercurial import os
print os.name
Yuya Nishihara <yuya@tcha.org> [Sat, 07 Nov 2015 17:43:20 +0900] rev 26872
parsers: fix width of datalen variable in fm1readmarkers
Because parsers.c does not define PY_SSIZE_T_CLEAN, "s#" format requires
(const char*, int), not (const char*, Py_ssize_t).
https://docs.python.org/2/c-api/arg.html
This error had no problem before 042344313939, where datalen wasn't used.
But now fm1readmarkers() fails with "overflow in obsstore" on Python 2.6.9
(amd64) because upper bits of datalen seem to be filled with 1, making it
a negative integer.
This problem seems not visible on our Python 2.7 environment because upper
bits happen to be filled with 0.
Durham Goode <durham@fb.com> [Thu, 05 Nov 2015 18:56:40 -0800] rev 26871
manifest: skip fastdelta if the change is large
In large repos, the existing manifest fastdelta computation (which performs a
bisect on the raw manifest for every file that is changing), is excessively
slow. This patch makes fastdelta fallback to the normal string delta algorithm
if the number of changes is large.
On a large repo with a commit of 8000 files, this reduces the commit time by 7
seconds (fastdelta goes from 8 seconds to 1).
I tested this change by modifying the function to compare the old and the new
values and running the test suite. The only difference is that the pure
text-diff algorithm sometimes produces smaller (but functionaly identical)
deltatexts than the bisect algorithm.
Siddharth Agarwal <sid0@fb.com> [Wed, 04 Nov 2015 23:44:51 -0800] rev 26870
merge.mergestate: update docstrings for preresolve and resolve
Add a docstring for preresolve, and update the one for resolve.
Stanislau Hlebik <stash@fb.com> [Mon, 26 Oct 2015 02:35:48 -0700] rev 26869
rebase: pass date parameter to concludenode
Stanislau Hlebik <stash@fb.com> [Mon, 26 Oct 2015 02:22:26 -0700] rev 26868
rebase: add date parameter to concludenode function
This parameter will allow us to set the date of rebased commits
Anton Shestakov <av6@dwimlabs.net> [Sat, 24 Oct 2015 09:47:33 +0100] rev 26867
hgweb: remove unused colorPart() from mercurial.js
Looks like the function wasn't ever used since its introduction in
0dba955c2636, since setColor() below always used "rgb(255, 255, 255)" notation
which doesn't need hex digits.
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 18 Oct 2015 18:49:59 +0200] rev 26866
test: enforce non-general delta in 'test-generaldelta.t'
If general delta becomes the default, we need to be explicit about what we
want to be tested.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 15:27:56 +0200] rev 26865
test: enforce bundle1 in 'test-push-cgi.t'
This test is checking bundle1 application, therefore we have to enforce the generated
bundle to be a bundle1.
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 18 Oct 2015 18:42:09 +0200] rev 26864
test: enforce v1 in 'test-debugbundle.t'
This test is about bundle1 and should remain so when we move to generaldelta by
default.