Christian Delahousse <cdelahousse@fb.com> [Tue, 10 Nov 2015 14:41:14 -0800] rev 26942
shelve: choose where .orig file locations are kept
This patch uses cmdutil.origpath to let the user set the location of the orig
files.
Christian Delahousse <cdelahousse@fb.com> [Tue, 10 Nov 2015 16:25:59 -0800] rev 26941
filemerge: choose where .orig files are kept
Having .orig files litter your working copy is a common complaint. This patch
uses cmdutil.orig to let the user determine where those files should reside.
Christian Delahousse <cdelahousse@fb.com> [Tue, 10 Nov 2015 14:29:13 -0800] rev 26940
git-subrepos: revert respects specified location to save .orig files
This patch makes revert in git subrepos save .orig files where the user wants
them by using the cmdutil.origpath function.
Christian Delahousse <cdelahousse@fb.com> [Tue, 10 Nov 2015 14:26:19 -0800] rev 26939
resolve: choose where .orig file locations are kept
Having your working copy littered with .orig files is a common HG complaint.
This patch uses the cmd.origpath helper function to let the user
specify where they should be kept when using the resolve command.
Christian Delahousse <cdelahousse@fb.com> [Thu, 12 Nov 2015 17:00:08 -0600] rev 26938
revert: allow configuring the .orig file location
Christian Delahousse <cdelahousse@fb.com> [Thu, 12 Nov 2015 16:56:06 -0600] rev 26937
cmdutil: add origbackuppath helper
Ryan McElroy <rmcelroy@fb.com> [Tue, 10 Nov 2015 11:16:25 -0800] rev 26936
discovery: pass pushop to _nowarnheads
Previously, we passed only enough information to _nowarnheads to perform the old
calculation. However, extensions may want to use more information in this
calculation. Now that pushop is extensible, extensions will often want access
to the additional fields they have added to the pushop, so pass that through.
Specifically, the remotenames extension will use this information to allow
pushing new heads that are bookmarked without requiring --force.
Ryan McElroy <rmcelroy@fb.com> [Tue, 10 Nov 2015 11:13:21 -0800] rev 26935
exchange: pass pushop to discovery.checkheads
Previously, we passed a bunch of parameters to discovery.checkheads, but all
of the arguments can be fetched out of pushop, which may contain a lot more
useful information for extensions now that pushop is extensible.
Matt Mackall <mpm@selenic.com> [Thu, 12 Nov 2015 15:26:30 -0600] rev 26934
merge with stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 13 Nov 2015 02:36:30 +0900] rev 26933
share: wrap bmstore._writerepo for transaction sensitivity (issue4940)
46dec89fe888 made 'bmstore.write()' transaction sensitive, to restore
original bookmarks correctly at failure of a transaction.
For example, shelve and unshelve imply steps below:
before 46dec89fe888:
1. move active bookmark forward at internal rebasing
2. 'bmstore.write()' writes updated ones into .hg/bookmarks
3. rollback transaction to remove internal commits
4. restore updated bookmarks manually
after 46dec89fe888:
1. move active bookmark forward at internal rebasing
2. 'bmstore.write()' doesn't write updated ones into .hg/bookmarks
(these are written into .hg/bookmarks.pending, if external hook
is spawn)
3. rollback transaction to remove internal commits
4. .hg/bookmarks should be clean, because it isn't changed while
transaction running: see (2) above
But if shelve or unshelve is executed in the repository created with
"shared bookmarks" ("hg share -B"), this doesn't work as expected,
because:
- share extension makes 'bmstore.write()' write updated bookmarks
into .hg/bookmarks of shared source repository regardless of
transaction activity, and
- intentional transaction failure at the end of shelve/unshelve
doesn't restore already updated .hg/bookmarks of shared source
This patch makes share extension wrap 'bmstore._writerepo()' instead
of 'bmstore.write()', because the former is used to actually write
bookmark changes out.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 07 Nov 2015 13:48:42 -0500] rev 26932
test: use generaldelta in 'test-clonebundle.t'
Using generaldelta has effects on the generated bundle.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 13:14:04 +0200] rev 26931
test: use generaldelta in 'test-ssh.t'
This has effects on the capabilities string.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 13:14:31 +0200] rev 26930
test: use generaldelta in 'test-ssh-bundle1.t'
This has effect on the capabilities string.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 13:09:43 +0200] rev 26929
test: use generaldelta in 'test-strip.t'
This has minor effects on test output.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 12:39:49 +0200] rev 26928
test: use generaldelta in 'test-rebase-newancestors.t'
This has some minor effects on test output.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 12:09:18 +0200] rev 26927
test: use general delta for 'test-commit-amend.t'
Using general delta introduces harmless changes to some of the test output.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 11:50:55 +0200] rev 26926
test: wider matching in 'test-clone-r.t'
The test is already somewhat resistant to changes from general delta. We make
it wider to catch expected differences.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 11:48:49 +0200] rev 26925
test: use generaldelta in 'test-bundle-type.t'
Generaldelta changes some of the default targets for 'hg bundle'. All cases are
already properly tested but some ambiguous specifications are affected.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 10:46:59 +0200] rev 26924
test: use generaldelta in 'test-patchbomb.t'
Using generaldelta changes the default type of bombed bundle.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 10:37:07 +0200] rev 26923
test: use generaldelta for test-bundle.t
This impacts tests of the 'packed' feature. We can safely accept the new output
because the 'v1' format is not restricted to old revlog format, the requirements
are properly advertised to the client.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 03:14:36 +0200] rev 26922
test: use generaldelta in 'test-rebase-conflict.t'
Doing this has some minor impacts on test output since the rebase
backup bundle moves to bundle2.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 19 Oct 2015 15:25:58 +0200] rev 26921
tests: test generaldelta configuration in test-init.t
We turn the feature on for the whole test and test that it can properly be
disabled through the config.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 19 Oct 2015 11:28:31 +0200] rev 26920
test: enable generaldelta early in 'test-treemanifest.t'
Having generaldelta on results in minor test output changes (as we are staring
at the revlog).
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 19 Oct 2015 10:48:02 +0200] rev 26919
test: enable generaldelta in 'test-copy.t'
Doing so has a minimal impact on the test.
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 18 Oct 2015 19:04:29 +0200] rev 26918
test: enable generaldelta in 'test-debugcommand.t'
The test logic is not affected by generaldelta, so we move it to
generaldelta early. Some of the fuzzy matching had to be extended to
cover "delta".
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 18 Oct 2015 18:55:32 +0200] rev 26917
test: use generaldelta in test-manifestv2.t
Generaldelta and bundle2 have no real influence on this test. So we can safely
switch it early.
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 18 Oct 2015 18:36:39 +0200] rev 26916
test: explicitly use generaldelta in 'test-rebase-mq-skip.t'
This induces some trivial changes in the tests. This happen in its own changeset
for clarity purposes.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 16 Oct 2015 02:54:52 +0100] rev 26915
test: using generaldelta in 'test-lfconvert.t'
This leads to a harmless test change.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 12 Nov 2015 02:52:19 -0800] rev 26914
test: enforce generaldelta format with the right option
The option that will become true by default is now 'usegeneraldelta' We have to
adjust the change made in b75fed55f6dc to actually achieve its goal.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 07 Nov 2015 13:53:11 -0500] rev 26913
test: enforce non-generaldelta base repository in 'test-generaldelta'
This test check the difference between various configurations we have to pin the
type of some repositories to ensure the test is still correct when we change the
default.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 12:25:51 +0200] rev 26912
test: use generaldelta in 'test-hgweb-command.t'
Using generaldelta has a meaningless impact on the capabilities string.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 12:28:42 +0200] rev 26911
stream: sort stream capability before serialisation
We want that capability to be stable in our testing. This is currently not an
issue because the set is size 1, but this will be once generaldelta related
data gets in there.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 12:25:09 +0200] rev 26910
test: spread capabilities replies in 'test-hgweb-commands'
Any changes to the capabilities string was very hard to review. So we introduce two
tests. A small one that validates the format and a second one to validate the
content, where each capability is on its own line to make changes simpler to
review.
Durham Goode <durham@fb.com> [Sat, 07 Nov 2015 16:11:49 -0800] rev 26909
phase: improve retractboundary perf
The existing retractboundary implementation computed the new boundary by walking
all descendants of all existing roots and computing the new roots. This is
O(commits since first root), which on long repos can be hundreds of thousands of
commits.
The new algorithm only updates roots that are greater than the new root
locations. For common operations like commit on a repo with the earliest root
several hundred thousand commits ago, this makes retractboundary go from
1 second to 0.008 seconds.
I tested it by running the test suite with both implementations and checking
that the root results were always the identical.
There was some discussion on IRC about the safety of this (i.e. what if the new
nodes are already part of the phase, etc). I've looked into it and believe this
patch is safe:
1) The old existing code already filters the input nodes to only contain nodes
that require retracting (i.e. we only make node X a new root if the old phase
is less than the target phase), so there's no chance of us adding a
unnecessary root to the phase (unless the input root is made unnecessary by
another root in the same input, but see point #3).
2) Another way of thinking about this is: the only way the new algorithm would
be different from the old algorithm is if it added a root that is a
descendant of an old root (since the old algorithm would've caught this in
the big "roots(%ln::)". At the beginning of the function, when we filter out
roots that already meet the phase criteria, the *definition* of meeting the
phase criteria is "not being a descendant of an existing root". Therefore,
by definition none of the new roots we are processing are descendants of an
existing root.
3) If two nodes are passed in as input, and one node is an ancestor of the other
(and therefore the later node should not be a root), this is still caught by
the 'roots(%ln::)' revset. So there's no chance of an extra root being
introduced that way either.
Matt Mackall <mpm@selenic.com> [Thu, 12 Nov 2015 13:51:09 -0600] rev 26908
merge with stable
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 02 Nov 2015 15:59:12 +0000] rev 26907
format: introduce 'format.usegeneraldelta`
This option will make repositories created as general delta by default but will
not make Mercurial aggressively recompute deltas for all incoming bundle.
Instead, the delta contained in the bundle will be used. This will allow us to
start having general delta repositories created everywhere without triggering
massive recomputation costs for all new clients cloning from old servers.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 02 Nov 2015 16:52:34 +0000] rev 26906
scmutil: extract general delta config handling in a function
General delta is currently controlled by a single option, we will introduce a
new one in the next changeset.
We extract the logic in a function while it is simple.
Danek Duvall <danek.duvall@oracle.com> [Tue, 10 Nov 2015 09:58:10 -0800] rev 26905
test: test-bundle-type.t needs to work more universally
The cut and head utilities on Solaris have weird differences from the GNU
versions. The f helper script does a dump more nicely than those tools,
anyway.
Anton Shestakov <av6@dwimlabs.net> [Tue, 10 Nov 2015 19:52:30 +0800] rev 26904
bash_completion: add -p|--patch|--stat support for shelve
Matt Harbison <matt_harbison@yahoo.com> [Sun, 08 Nov 2015 18:34:36 -0500] rev 26903
test-convert-git: silence commit output for stablity
When running the tests with 1.7.7.6, I get 'files' and 'insertions' instead of
the singular forms, and there is also an additional '0 deletions(-)' at the end.
Since this doesn't seem important to the test, silence it.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 08 Nov 2015 17:56:48 -0500] rev 26902
rebase: preserve the 'intermediate-source' attribute of grafts
Preserving the 'source' attribute of grafts started with a69a77a80900, which
predates the introduction of 'intermediate-source' in 51930a7180bd by a year and
a half. It looks like not preserving this was an oversight.
On a related note, notice how the source value of 32af76 is no longer visible in
the graph above this test. Is it reasonable to import the sha1 translation from
evolve.py:relocate() into scmutil or similar, and use that to fixup these
attributes as well as the commit message? (I realize that evolve is still
experimental, but I don't see a way to do this from the evolve extension.)
Matt Mackall <mpm@selenic.com> [Wed, 11 Nov 2015 15:08:08 -0600] rev 26901
merge with stable
Augie Fackler <augie@google.com> [Wed, 04 Nov 2015 12:14:18 -0500] rev 26900
verify: add a hook that can let extensions manipulate file lists
Without a hook of this nature, narrowhg[0] clones always result in 'hg
verify' reporting terrible damage to the entire repository
history. With this hook, we can ignore files that aren't supposed to
be in the clone, and then get an accurate report of any damage present
(or not) in the repo.
0: https://bitbucket.org/Google/narrowhg
Siddharth Agarwal <sid0@fb.com> [Tue, 10 Nov 2015 17:16:59 -0800] rev 26899
resolve: don't abort when file is missing
A file being missing is a completely valid situation in which the user may want
to re-resolve merge conflicts. Mercurial already maintains backups of local
data, so this turns out to be easy to handle.
Siddharth Agarwal <sid0@fb.com> [Tue, 10 Nov 2015 17:13:16 -0800] rev 26898
filemerge: treat EOF at prompt as fail, not abort
Previously we'd abort the merge entirely if there was an EOF at the prompt.
This is unnecessary -- it's much better to simply fail and treat the file as
unresolved instead.
Siddharth Agarwal <sid0@fb.com> [Tue, 10 Nov 2015 17:10:47 -0800] rev 26897
test-merge-tools.t: add 'hg resolve --list' output to tests
In upcoming patches we're going to be making some improvements to the ':prompt'
merge tool, and one of them is recovering appropriately from exceptions. It is
important in such cases to make sure that the merge state is written out
properly.
I went through the output and verified that it all makes sense.
Siddharth Agarwal <sid0@fb.com> [Tue, 10 Nov 2015 00:46:45 -0800] rev 26896
error: add structured exception for EOF at prompt
We'll catch this exception for promptchoice queries to provide better error
handling.
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.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 20 Oct 2015 02:39:42 +0200] rev 26863
test: enforce bundle1 in "test-commit-interactive.t"
This test generate a bundle to get a binary file to commit. We should ensure
this binary file remains the same when we move to general delta as default.
Ryan McElroy <rmcelroy@fb.com> [Fri, 06 Nov 2015 09:48:24 -0800] rev 26862
discovery: factor out calculation of heads to not warn about
In addition to taking a step towards getting an unreasonably large function
factored into smaller, more manageable functions, this will allow extensions
such as remotenames have more control over what pushes are allowed or not.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 06 Nov 2015 11:08:11 -0500] rev 26861
hooks: back 9f272bf3b342 out
Changeset 9f272bf3b342 alters the 'HG_PENDING' mechanism to be "always" there.
This change is made under the assumption than we previously did it only when
"writepending() actually wrote something". This assumption was wrong,
'writepending()' informs of pending changes the first time something is written
and for all following calls. We back this change out to restore the former
behavior, which was already correct.
Matt Mackall <mpm@selenic.com> [Wed, 04 Nov 2015 15:17:52 -0600] rev 26860
merge with stable
Durham Goode <durham@fb.com> [Tue, 03 Nov 2015 17:13:27 -0800] rev 26859
hooks: fix hooks not firing if prechangegroup was set (issue4934)
We need to call delayupdate again after writing to the changelog.
Otherwise the prechangegroup hook consumes the delayupdate subscription and
future hooks don't see the pending changes (see issue 4934 for more details).
Adds a test that triggers the prechangegroup hook before the pretxnchangegroup
hook and verifies that the output of pretxnchangegroup doesn't change.
Durham Goode <durham@fb.com> [Tue, 03 Nov 2015 16:58:13 -0800] rev 26858
hooks: always include HG_PENDING
Previously we would only include HG_PENDING in the hook args if the
transaction's writepending() actually wrote something. This is a bad criteria,
since it's possible that a previous call to writepending() wrote stuff and the
hooks want to still see that.
The solution is to always have hooks execute within the scope of the pending
changes by always putting HG_PENDING in the environment.
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 03 Nov 2015 12:31:33 -0800] rev 26857
wireproto: move clonebundles command from extension (issue4931)
The SSH peer class accesses wireproto.commands[cmd] as part of encoding
command arguments. Previously, the wire protocol command was defined in
the clonebundles extension. If the client didn't have this extension
enabled (which it likely doesn't since it is meant as a server-side
extension), then clients attempting to clone via ssh:// would get a
crash due to a KeyError accessing wireproto.commands['clonebundles']
when cloning from a server that is advertising clone bundles.
Moving the definition of the wire protocol command to wireproto.py makes
this problem go away.
A side effect of this code move is servers will always respond to
"clonebundles" wire protocol command requests. This should be fine: the
server will return an empty response unless a clone bundles manifest
file is present and clients shouldn't call the command unless the server
is advertising the capability, which only happens if the clonebundles
extension is enabled and the manifest file exists.
Yuya Nishihara <yuya@tcha.org> [Wed, 04 Nov 2015 23:48:15 +0900] rev 26856
templatefilters: try round-trip utf-8 conversion by json filter (issue4933)
As JSON string is known to be a unicode, we should try round-trip conversion
for localstr type. This patch tests localstr type explicitly because
encoding.fromlocal() may raise Abort for undecodable str, which is probably
not what we want. Maybe we can refactor json filter to use encoding module
more later.
Still "{desc|json}" can't round-trip because showdescription() modifies a
localstr object.
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 03 Nov 2015 12:16:54 -0800] rev 26855
exchange: do not attempt clone bundle if local repo is non-empty (issue4932)
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 03 Nov 2015 12:15:14 -0800] rev 26854
test-clonebundles.t: add test for incremental pull
This demonstrates issue4932.
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Nov 2015 22:44:57 +0900] rev 26853
i18n: make sure to include translation of (DEPRECATED)
This patch replaces old "DEPRECATED" msgid by "(DEPRECATED)" if that .po
file does not have "(DEPRECATED)" but have "... (DEPRECATED)".
It is necessary to hide deprecated options correctly.
Yuya Nishihara <yuya@tcha.org> [Tue, 03 Nov 2015 22:39:26 +0900] rev 26852
i18n: do not abuse msgstr of "DEPRECATED" to check for bad translation
Because 44cc9f63a2f1 requires the msgstr of "(DEPRECATED)", old *.po files
must be blamed. Using "DEPRECATED" would just hide the error.
For example, "LANG=da_DK.UTF-8 hg help serve" fails to hide deprecated
options right now, but check-translation.py couldn't detect it because
da.po has outdated translation of "DEPRECATED".
Siddharth Agarwal <sid0@fb.com> [Mon, 02 Nov 2015 12:12:24 -0800] rev 26851
filemerge.prompt: separate out choice selection and action
This will make future patches cleaner.
Siddharth Agarwal <sid0@fb.com> [Mon, 02 Nov 2015 12:25:15 -0800] rev 26850
test-merge-prompt.t: add tests for linear updates + change/delete conflicts
Turns out this bit of code was woefully untested.
Siddharth Agarwal <sid0@fb.com> [Sat, 24 Oct 2015 16:25:16 -0700] rev 26849
test-pathencode.py: drop support for Python 2.4
Siddharth Agarwal <sid0@fb.com> [Sat, 24 Oct 2015 16:23:42 -0700] rev 26848
hgweb.server: drop support for Python 2.4
Siddharth Agarwal <sid0@fb.com> [Sat, 24 Oct 2015 15:56:16 -0700] rev 26847
util: drop Python 2.4 compat by directly importing md5 and sha1
There's been a fair amount of cruft here over the years, which we can all
just get rid of now.