Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 17:23:18 +0200] rev 34711
phase: add a dedicated pretxnclose-phase hook
This new hook mirror the newly introduced 'txnclose-phase' but can abort the
transaction.
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 17:50:46 +0200] rev 34710
phase: add a dedicated txnclose-phase hook
The new 'txnclose-phase' hook expose the phase movement information stored in
'tr.changes['phases]'. To provide a simple and straightforward hook API to the
users, we introduce a new hook called for each revision affected. Since a
transaction can affect the phase of multiple changesets, updating the existing
'txnclose' hook to expose that information would be more complex. The data for
all moves will not fit in environment variables and iterations over each move
would be cumbersome. So the introduction of a new dedicated hook is
preferred in this changesets.
This does not exclude the addition of the full phase movement information to
the existing 'txnclose' in the future to help write more complex hooks.
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 18:50:14 +0200] rev 34709
bookmark: add a dedicated pretxnclose-bookmark hook
This new hook mirror the newly introduced 'txnclose-bookmark' but can abort the
transaction.
Boris Feld <boris.feld@octobus.net> [Tue, 10 Oct 2017 17:53:42 +0200] rev 34708
bookmark: add a dedicated txnclose-bookmark hook
The new 'txnclose-bookmark' hook expose the bookmark movement information
stored in 'tr.changes['bookmarks]'. To provide a simple and straightforward
hook API to the users, we introduce a new hook called for each bookmark
touched. Since a transaction can affect multiple bookmarks, updating the
existing 'txnclose' hook to expose that information would be more complex. The
data for all moves might not fit in environment variables and iterations over
each move would be cumbersome. So the introduction of a new dedicated hook is
preferred in this changeset.
This does not exclude the addition to the full bookmark information to the
existing 'txnclose' in the future to help write more complex hooks.
Augie Fackler <augie@google.com> [Fri, 13 Oct 2017 15:58:54 -0400] rev 34707
tweakdefaults: make commands.update.check be `noconflict`
This is the second-safest option we have to offer in `updatecheck`,
with `abort` being the safest and `linear` being the default. At the
sprint we discussed how much `none` and `linear` make us all
uncomfortable, and how we'd like to move the default behavior if we can.
I'm not sure we can get away with actually changing the out of the box
default behavior, but we can at *least* do this.
Differential Revision: https://phab.mercurial-scm.org/D1062
Augie Fackler <augie@google.com> [Sat, 14 Oct 2017 15:43:06 -0400] rev 34706
hgweb: fix logging to use native strings as appropriate
Kind of a tangled mess, but now logging works in both Python 2 and 3.
# no-check-commit because of the interface required by Python's HTTP
server code.
Differential Revision: https://phab.mercurial-scm.org/D1080
Augie Fackler <augie@google.com> [Sat, 14 Oct 2017 03:13:50 -0400] rev 34705
config: graduate experimental.updatecheck to commands.update.check
.. feature::
New `commands.update.check` feature to adjust constraints on when
`hg update` will allow updates with a dirty working copy.
also
.. bc::
The `experimental.updatecheck` name for the new `commands.update.check`
feature is now deprecated, and will be removed after this release.
Differential Revision: https://phab.mercurial-scm.org/D1070
Augie Fackler <augie@google.com> [Sat, 14 Oct 2017 15:42:38 -0400] rev 34704
hgweb: rewrite most obviously-native-strings to be native strings
This clearly won't be everything, but it unblocks a fair amount of
stuff here.
Differential Revision: https://phab.mercurial-scm.org/D1079
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:48:52 -0400] rev 34703
hgweb: use native strings consistently for querystring parsing
Differential Revision: https://phab.mercurial-scm.org/D1078
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:48:31 -0400] rev 34702
hgweb: rewrite two X or Y and Z ad-hoc ternaries with Y if X else Z
Just easier to muddle through for my brain now that I don't see the
old pattern much anymore.
Differential Revision: https://phab.mercurial-scm.org/D1077
Augie Fackler <augie@google.com> [Sun, 01 Oct 2017 12:12:34 -0400] rev 34701
httppeer: use native strings for headers
On Python 3, we need to use unicodes, rather than bytes. This lets
test-pull.t get a lot further along.
Differential Revision: https://phab.mercurial-scm.org/D887
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:29:51 -0400] rev 34700
hgweb: more native string treatment in query string parsing
Differential Revision: https://phab.mercurial-scm.org/D1076
Augie Fackler <augie@google.com> [Sat, 14 Oct 2017 14:07:39 -0400] rev 34699
httppeer: pass url to urllib as native str, not bytes
Differential Revision: https://phab.mercurial-scm.org/D1075
Denis Laxalde <denis@laxalde.org> [Sat, 14 Oct 2017 13:33:37 +0200] rev 34698
tersestatus: rework dirnode and tersedir docstrings
Follow-up on refactorings
3d6d4b12128e and
5d98674df18a of the original
changeset
7e3001b74ab3 by updating the docstrings of dirnode class and tersedir
function:
* rewrite dirnode.iterfilepaths()'s docstring (the method got
renamed and reimplemented in
5d98674df18a);
* simplify and update dirnode.tersewalk() to remove reference to 'self' and
'tersedict';
* use the imperative form of verbs in the first sentence of all docstrings.
Differential Revision: https://phab.mercurial-scm.org/D1072
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 10:52:50 -0400] rev 34697
bitmanipulation: reformat with clang-format
Mostly un-wrapping over-wrapped definitions.
Differential Revision: https://phab.mercurial-scm.org/D1069
Augie Fackler <augie@google.com> [Mon, 14 Sep 2015 14:16:31 -0400] rev 34696
hghave: add a check for clang-format
Differential Revision: https://phab.mercurial-scm.org/D1068
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:16:20 -0400] rev 34695
python3: use our bytes-only version of cgi.escape everywhere
As suggested by Yuya in D965.
Differential Revision: https://phab.mercurial-scm.org/D1067
Augie Fackler <augie@google.com> [Sat, 14 Oct 2017 02:57:26 -0400] rev 34694
url: add cgi.escape equivalent for bytestrings
This seems like a sensible enough place to put it.
Differential Revision: https://phab.mercurial-scm.org/D1066
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:15:05 -0400] rev 34693
python3: move from using func_name to __name__
Previously reviewed as D964, but required some fixups and therefore
seems to need a new revision.
Differential Revision: https://phab.mercurial-scm.org/D1065
Matt Harbison <matt_harbison@yahoo.com> [Sat, 14 Oct 2017 01:20:12 -0400] rev 34692
tests: add globs for Windows
Matt Harbison <matt_harbison@yahoo.com> [Sat, 14 Oct 2017 01:07:59 -0400] rev 34691
test-conflicts: conditionalize for no-symlink platforms
It seems better to create standin files for the symlinks, rather than blacklist
the entire tests. Especially since link vs file doesn't seem to affect the
tests.
There is more instability in test-pathconflicts-{basic,merge}.t that I can't
figure out.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 14 Oct 2017 00:20:59 -0400] rev 34690
test-extdata: conditonalize error message for Windows
Matt Harbison <matt_harbison@yahoo.com> [Sat, 14 Oct 2017 00:07:26 -0400] rev 34689
test-audit-path: fill in missing output for no-symlink case
It looks like this was meant to go with
989e884d1be9.
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Oct 2017 13:37:14 +0900] rev 34688
test-i18n: guard gettext test appropriately
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 13:08:31 +0200] rev 34687
hook: add a 'hashook' function to test for hook existence
Preparing the data for some hooks can be expensive. Add a function to check if
a hook exists so we can skip useless preparation if no hook is configured.
muxator <a.mux@inwind.it> [Fri, 13 Oct 2017 22:42:17 +0200] rev 34686
build: for the bootstrap phase of a deb/rpm build pure-py mercurial is enough
When bootstrapping a deb/rpm build, packagelib.sh starts performing a local
build for the sole purpose of parsing the output of "hg version".
Then it "hg archive"s the source code, and builds everything again.
For that initial step, we are perfectly good in using a pure python mercurial,
without compiling the c modules (base85, bdiff, zstdlib, ...).
On my personal system, this cuts down 22 seconds for a package build (the
bootstrapping build goes from ~30 to ~8 seconds).
Phil Cohen <phillco@fb.com> [Fri, 13 Oct 2017 12:40:05 -0700] rev 34685
context: add a fast-comparision for arbitraryfilectx and workingfilectx
Differential Revision: https://phab.mercurial-scm.org/D1056
Denis Laxalde <denis@laxalde.org> [Fri, 13 Oct 2017 04:02:06 +0530] rev 34684
tersestatus: avoid modifying tersedict
Turn dirnode's methods into generators which can be used to update "tersedict"
in caller. So instead of passing the "tersedict" to be mutated here and there,
it's now clearer where it is updated as it's purely a local variable to
tersedir() function.
While I was here, I renamed _processtersestatus to tersewalk and
_addfilestotersed to iterfilepaths.
Differential Revision: https://phab.mercurial-scm.org/D1043
Denis Laxalde <denis@laxalde.org> [Wed, 11 Oct 2017 21:19:19 +0200] rev 34683
tersestatus: make methods part of the dirnode class
Differential Revision: https://phab.mercurial-scm.org/D1042
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 06 Oct 2017 20:54:23 +0530] rev 34682
tersestatus: re-implement the functionality to terse the status
The previous terse status implementation was hacking around os.listdir() and was
flaky. There have been a lot of instances of mercurial buildbots failing
and google's internal builds failing because of the
hacky implementation of terse status. Even though I wrote the last
implementation but it was hard for me to find the reason for the flake.
The new implementation can be slower than the old one but is clean and easy to
understand.
In this we create a node object for each directory and create a tree
like structure starting from the root of the working copy. While building the
tree like structure we store some information on the nodes which will be helpful
for deciding later whether we can terse the dir or not.
Once the whole tree is build we traverse and built the list of files for each
status with required tersing.
There is no behaviour change as the old test, test-status-terse.t passes with
the new implementation.
Differential Revision: https://phab.mercurial-scm.org/D985
Phil Cohen <phillco@fb.com> [Fri, 13 Oct 2017 12:54:46 -0700] rev 34681
context: add is `isinmemory()` to filectx
This will make it easier to skip certain behavior when running an in-memory
merge.
Differential Revision: https://phab.mercurial-scm.org/D1061
Ryan McElroy <rmcelroy@fb.com> [Fri, 06 Oct 2017 06:48:43 -0700] rev 34680
merge: ensure that we always commit the mergestate
In future patches, we may halt the merge process based on configuration or
user requests by raising exceptions. We need to ensure that the mergestate
is unconditionally committed even when such an exception is raised.
Depends on D930.
Differential Revision: https://phab.mercurial-scm.org/D931
Ryan McElroy <rmcelroy@fb.com> [Fri, 06 Oct 2017 06:48:43 -0700] rev 34679
merge: add tests to show current behavior on failed filemerges
Currently, failed file merges will nevertheless force the user to continue
attempting to merge all additional unresolved files. Future patches will allow
the user to halt the merge process instead. This patch first introduces a test
demonstrating the current bejhavior so the upcoming changes are more obvious.
Differential Revision: https://phab.mercurial-scm.org/D930
Durham Goode <durham@fb.com> [Thu, 05 Oct 2017 11:34:41 -0700] rev 34678
dirstate: move the _dirfoldmap to dirstatemap
Now that dirstatemap is the source of truth for the list of directories, let's
move _dirfoldmap on to it.
This pattern of moving cached variables onto the dirstate map makes it easier to
invalidate them, as seen by how the cache invalidation functions are slowly
shrinking to just be recreating the dirstatemap instance.
Differential Revision: https://phab.mercurial-scm.org/D983
Durham Goode <durham@fb.com> [Thu, 05 Oct 2017 11:34:41 -0700] rev 34677
dirstate: remove _dirs property cache
Now that dirs is source of truthed on the dirstatemap, let's get rid of the
_dirs propertycache on the dirstate.
Differential Revision: https://phab.mercurial-scm.org/D982
Durham Goode <durham@fb.com> [Thu, 05 Oct 2017 11:34:41 -0700] rev 34676
dirstate: remove _filefoldmap property cache
Now that the filefoldmap is source of truthed on the dirstatemap, let's get rid
of the property cache on the dirstate.
Differential Revision: https://phab.mercurial-scm.org/D981
Durham Goode <durham@fb.com> [Thu, 05 Oct 2017 11:34:41 -0700] rev 34675
dirstate: move identity to dirstatemap
Moving the identity function to the dirstatemap class will allow alternative
dirstate implementations to replace the implementation.
Differential Revision: https://phab.mercurial-scm.org/D980
Durham Goode <durham@fb.com> [Thu, 05 Oct 2017 11:34:41 -0700] rev 34674
dirstate: move nonnormal and otherparent sets to dirstatemap
As part of separating dirstate business logic from storage, let's move the
nonnormal and otherparent storage to the dirstatemap class. This will allow
alternative dirstate storage to persist these sets instead of recomputing them.
Differential Revision: https://phab.mercurial-scm.org/D979
Durham Goode <durham@fb.com> [Thu, 05 Oct 2017 11:34:41 -0700] rev 34673
dirstate: move write into dirstatemap
As part of separating the dirstate business logic from the dirstate storage
logic, let's move the serialization code down into dirstatemap.
Differential Revision: https://phab.mercurial-scm.org/D978
Durham Goode <durham@fb.com> [Thu, 05 Oct 2017 11:34:41 -0700] rev 34672
dirstate: move _read into dirstatemap
As part of separating the dirstate business logic from the storage, let's move
the read code into the new dirstatemap class.
Differential Revision: https://phab.mercurial-scm.org/D977
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 21:29:24 +0200] rev 34671
configitems: register the 'templates' section
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 05:01:55 +0200] rev 34670
configitems: register the 'paths' config section
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 02:26:09 +0200] rev 34669
configitems: register the 'pager.attend-.*' options
Boris Feld <boris.feld@octobus.net> [Fri, 13 Oct 2017 16:39:06 +0200] rev 34668
configitems: register the 'hooks' config section
Boris Feld <boris.feld@octobus.net> [Tue, 10 Oct 2017 10:48:47 +0200] rev 34667
configitems: register the 'extensions' section
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 20:39:51 +0200] rev 34666
configitems: register the 'defaults' section
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 21:02:02 +0200] rev 34665
configitems: register the 'committemplate' section
Boris Feld <boris.feld@octobus.net> [Tue, 10 Oct 2017 10:49:28 +0200] rev 34664
configitems: register the 'color' section
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 20:26:25 +0200] rev 34663
configitems: register the 'alias' section
Boris Feld <boris.feld@octobus.net> [Tue, 10 Oct 2017 10:49:15 +0200] rev 34662
configitems: allow for the registration of "generic" config item
Some section can contains arbitrary keys (eg: color, alias, extensions). We
add a way to register some generic config items for them. This is necessary to
get all the config registered. We use a regular expression because some sub-
attributes (eg: hooks.xxx.priority) can define default value on their own.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 12 Oct 2017 09:39:50 +0200] rev 34661
transaction-summary: show the range of new revisions upon pull/unbundle (BC)
Upon pull or unbundle, we display a message with the range of new revisions
fetched. This revision range could readily be used after a pull to look out
what's new with 'hg log'. The algorithm takes care of filtering "obsolete"
revisions that might be present in transaction's "changes" but should not be
displayed to the end user.
Yuya Nishihara <yuya@tcha.org> [Fri, 13 Oct 2017 21:36:10 +0900] rev 34660
i18n: cache translated messages per encoding
This is a simpler workaround alternative to D958, "i18n: clean msgcache when
encoding changes." The cache won't be bloated unless you run tons of commands
with different --encoding options on command server, or serve many repositories
of different web.encoding options on hgweb.
The test was originally written by Jun Wu.
Differential Revision: https://phab.mercurial-scm.org/D1053
Yuya Nishihara <yuya@tcha.org> [Thu, 12 Oct 2017 22:09:11 +0900] rev 34659
templater: fix ifcontains() to handle type mismatch gracefully
This was unintentionally changed in
ee0d74083a22. Since ifcontains() takes
needle of any types, it shouldn't abort depending on the given container type.
Yuya Nishihara <yuya@tcha.org> [Thu, 12 Oct 2017 21:56:13 +0900] rev 34658
help: use single quotes in ``template example``
It was hard to read because ``""`` was rendered as """".
Yuya Nishihara <yuya@tcha.org> [Thu, 12 Oct 2017 21:48:02 +0900] rev 34657
help: hide template keywords of obsolescence as they are still experimental
Yuya Nishihara <yuya@tcha.org> [Thu, 12 Oct 2017 21:42:42 +0900] rev 34656
help: fix formatting of template keywords
Our minirst formatter can't render multi-paragraph definition lists well.
Also added periods where appropriate.
Yuya Nishihara <yuya@tcha.org> [Thu, 12 Oct 2017 22:21:14 +0900] rev 34655
chg: remove outdated rule to start test server
This rule is no longer useful because chg daemon may be killed and respawned
per config/environment hash. We can't reliably run a daemon in foreground.
Yuya Nishihara <yuya@tcha.org> [Fri, 13 Oct 2017 00:22:54 +0900] rev 34654
configitems: drop redundant default of web.allow<archtype>
Otherwise develwarn would be sent to stderr. I've added blackbox logging
to capture warnings.
Yuya Nishihara <yuya@tcha.org> [Fri, 13 Oct 2017 00:14:28 +0900] rev 34653
configitems: correct default values of web.allow<archtype> and web.hidden
The default of ui.configbool() is False unless explicitly specified.
Yuya Nishihara <yuya@tcha.org> [Fri, 13 Oct 2017 22:38:24 +0900] rev 34652
bdiff: include compat.h in header to define ssize_t
Before
ff4c9c6263de, compat.h was included first so it happened to work.
But we shouldn't rely on the include order.
Boris Feld <boris.feld@octobus.net> [Sat, 30 Sep 2017 22:37:20 +0100] rev 34651
test: add an extra case for obsolescence distributed case
This changeset introduces a new documented test case for a distributed
obsolescence scenario. The scenario involves a simple case where some
obsolescence markers are retrieved before the changeset they affect. See the
test case documentation for details.
We also test variants where the changesets are added from a bundle.
Boris Feld <boris.feld@octobus.net> [Fri, 29 Sep 2017 19:59:15 +0100] rev 34650
test: add a test file dedicated to an important distributed case
This test file introduces documented test case for obsolescence markers usage
that are important to distributed workflow cases.
In the distributed case, new changesets, markers, and phases can be added in
orders that would not happen during the local only usage. Documenting these
scenarios and test them is important as we make progress with various
obsolescence aspects.
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 10 Oct 2017 23:19:35 +0530] rev 34649
repoview: remove incorrect documentation of the function
In repoview.py, computeunserved() and computemutable() functions had the same
documentation. The documentation of computemutable() is wrong. I was unable to
write documentation for the function but it's better to not having the
documentation than having it wrong.
Differential Revision: https://phab.mercurial-scm.org/D1016
Jun Wu <quark@fb.com> [Thu, 12 Oct 2017 09:34:58 -0700] rev 34648
check-code: suggest pycompat.is(posix|windows|darwin)
Differential Revision: https://phab.mercurial-scm.org/D1037
Jun Wu <quark@fb.com> [Thu, 12 Oct 2017 23:34:34 -0700] rev 34647
codemod: use pycompat.isdarwin
This is done by:
sed -i "s/pycompat\.sysplatform == 'darwin'/pycompat.isdarwin/" **/*.py
Plus a manual change to `sslutil.py` which involves indentation change that
cannot be done by `sed`.
Differential Revision: https://phab.mercurial-scm.org/D1035
Jun Wu <quark@fb.com> [Thu, 12 Oct 2017 09:04:22 -0700] rev 34646
codemod: use pycompat.isposix
This is done by:
sed -i "s/pycompat\.osname == 'posix'/pycompat.isposix/" **/*.py
Differential Revision: https://phab.mercurial-scm.org/D1036
Jun Wu <quark@fb.com> [Thu, 12 Oct 2017 23:30:46 -0700] rev 34645
codemod: use pycompat.iswindows
This is done by:
sed -i "s/pycompat\.osname == 'nt'/pycompat.iswindows/" **/*.py
sed -i "s/pycompat\.osname != 'nt'/not pycompat.iswindows/" **/*.py
sed -i 's/pycompat.osname == "nt"/pycompat.iswindows/' **/*.py
Differential Revision: https://phab.mercurial-scm.org/D1034
Jun Wu <quark@fb.com> [Thu, 12 Oct 2017 19:20:04 -0700] rev 34644
pycompat: define operating system constants
As suggested by Ryan in D1019, it's cleaner if we use defined constants
instead of `osname == 'nt'` everywhere.
Differential Revision: https://phab.mercurial-scm.org/D1033
Jun Wu <quark@fb.com> [Wed, 11 Oct 2017 21:24:32 -0700] rev 34643
hgweb: do not import uuid immediately to avoid its side effect
With hgdemandimport disabled (chg's case), `import uuid` has an immediate
side effect calling `ctypes.util.find_library` trying to locate the
`libuuid` library. This happens at `import` time before `dispatch.run()`.
The call trace is like:
File "hg/hg", line 54, in <module>
from mercurial import (
File "hg/mercurial/dispatch.py", line 24, in <module>
from . import (
File "hg/mercurial/commands.py", line 23, in <module>
from . import (
File "hg/mercurial/help.py", line 33, in <module>
from .hgweb import (
File "hg/mercurial/hgweb/__init__.py", line 20, in <module>
from . import (
File "hg/mercurial/hgweb/hgweb_mod.py", line 14, in <module>
from .common import (
File "hg/mercurial/hgweb/common.py", line 15, in <module>
import uuid
File "/usr/lib64/python2.7/uuid.py", line 404, in <module>
lib = ctypes.CDLL(ctypes.util.find_library(libname))
The problem is, `ctypes.util.find_library` will execute
`sh -c '/sbin/ldconfig -p 2>/dev/null'` on Python <= 2.7.12. The output of
`sh` may pollute the terminal:
shell-init: error retrieving current directory: getcwd: cannot access
parent directories: No such file or directory
This patch moves `import uuid` so its side-effect can only happen after the
cwd check in `dispatch._getlocal`. Therefore the terminal won't be
polluted by importing `uuid`.
Differential Revision: https://phab.mercurial-scm.org/D1024
Jun Wu <quark@fb.com> [Wed, 11 Oct 2017 17:42:57 -0700] rev 34642
check-code: forbid platform.system()
See the previous patches for the reason.
Differential Revision: https://phab.mercurial-scm.org/D1021
Jun Wu <quark@fb.com> [Wed, 11 Oct 2017 17:42:35 -0700] rev 34641
largefiles: do not use platform.system()
See the previous patch for the reason.
Differential Revision: https://phab.mercurial-scm.org/D1020
Jun Wu <quark@fb.com> [Wed, 11 Oct 2017 17:38:20 -0700] rev 34640
logtoprocess: do not use platform.system()
See the previous patch for the reason.
Differential Revision: https://phab.mercurial-scm.org/D1019
Jun Wu <quark@fb.com> [Wed, 11 Oct 2017 17:27:21 -0700] rev 34639
selectors2: do not use platform.system()
`platform.system()` may have a side effect spawning a shell executing
`uname -p`, which may print a warning when the current directory is removed:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
This patch changes selectors2 to test the `sys.platform` string, which is a
much safer way to detect Jython.
Jython's `sys.platform` looks like this:
Jython 2.7.1 (default:
0df7adb1b397, Jun 30 2017, 19:02:43)
[OpenJDK 64-Bit Server VM (Oracle Corporation)] on java1.8.0_144
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.platform
'java1.8.0_144 ( ==linux2 for targets )'
Differential Revision: https://phab.mercurial-scm.org/D1018
Jun Wu <quark@fb.com> [Mon, 09 Oct 2017 12:42:28 -0700] rev 34638
dispatch: when --pager=no is passed, also disable pager on req.repo.ui
With a future chg change, `req.repo` could be set and currently it is
unaffected by `--pager=on`. This patch makes it so.
This could make one of the test cases in `test-pager.t` pass with future chg
changes.
Differential Revision: https://phab.mercurial-scm.org/D990
Durham Goode <durham@fb.com> [Wed, 11 Oct 2017 10:36:59 -0700] rev 34637
bundle2: immediate exit for ctrl+c (
issue5692)
21c2df59a regressed bundle2 by catching all exceptions and trying to handle
them. The old behavior was to allow KeyboardInterrupts to throw and not have
graceful cleanup, which allowed it to exit immediately. Let's go back to that
behavior.
Differential Revision: https://phab.mercurial-scm.org/D960
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 11:04:18 -0400] rev 34636
exewrapper: format with clang-format
A few *s move around, some spaces around parens, a couple of
braces. Nothing remarkable.
Differential Revision: https://phab.mercurial-scm.org/D1032
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 11:02:44 -0400] rev 34635
util: add clang-format control comment around struct and format macro
clang-format is not a fan of PyObject_HEAD.
Differential Revision: https://phab.mercurial-scm.org/D1031
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 10:57:23 -0400] rev 34634
mpatch: reflow two oddly formatted else blocks with clang-format
Differential Revision: https://phab.mercurial-scm.org/D1029
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 10:55:51 -0400] rev 34633
mpatch: re-wrap wide line with clang-format
Differential Revision: https://phab.mercurial-scm.org/D1027
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 10:51:39 -0400] rev 34632
bdiff: remove trailing newlines
Differential Revision: https://phab.mercurial-scm.org/D1009
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 10:51:25 -0400] rev 34631
bdiff: rewrap function prototypes per clang-format
Differential Revision: https://phab.mercurial-scm.org/D1008
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 10:50:54 -0400] rev 34630
bdiff: re-wrap lines per clang-format
A few too-wide lines corrected, and some places where clang-format
prefers to wrap after the binary operator instead of before. I don't
feel strongly, so I'm leaving the auto-format result as "after the
binary operator".
Differential Revision: https://phab.mercurial-scm.org/D1007
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 10:49:34 -0400] rev 34629
bdiff: remove extra space after * per clang-format
Differential Revision: https://phab.mercurial-scm.org/D1006
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 10:48:46 -0400] rev 34628
bdiff: fix misplaced comma in macro definition with clang-format
Differential Revision: https://phab.mercurial-scm.org/D1005
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 10:47:51 -0400] rev 34627
bdiff: format header file with clang-format
Differential Revision: https://phab.mercurial-scm.org/D1004
Augie Fackler <augie@google.com> [Wed, 04 Oct 2017 10:47:19 -0400] rev 34626
bdiff: sort includes using clang-format
Differential Revision: https://phab.mercurial-scm.org/D1003
muxator <a.mux@inwind.it> [Wed, 11 Oct 2017 01:47:00 +0200] rev 34625
build: "make deb" failed when the base path contained spaces
With these changes, all the commands triggered by "make deb" use proper quoting
and succeed even when invoked from a directory containing spaces.
muxator <a.mux@inwind.it> [Wed, 11 Oct 2017 02:06:12 +0200] rev 34624
build: chg build was failing when the base directory contained spaces
muxator <a.mux@inwind.it> [Wed, 11 Oct 2017 01:37:43 +0200] rev 34623
build: initial version detection by make deb/rpm was missing quoting
muxator <a.mux@inwind.it> [Wed, 11 Oct 2017 01:19:48 +0200] rev 34622
build: make install in "/doc" failed if the destination dir contained spaces
This and the following commits try to add the necessary quoting in the build
scripts to make the process more robust.
The target for now is rendering "make deb" successful even when the base
directory contains spaces (eg. "/opt/mercu rial").
The build process should succeed without scattering files in spurious
directories (eg.: "/opt/mercu/usr/bin/hg").
Paul Morelle <paul.morelle@octobus.net> [Thu, 05 Oct 2017 16:13:05 +0200] rev 34621
strip: take branch into account when selecting update target (
issue5540)
Test contributed by Matt Harbison
Keep the same behavior in most cases (i.e. first parent of the first root of
stripped changsets), but if the branch differs from wdir's, try to find another
parent of stripped commits that is on the same branch.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 04 Oct 2017 18:49:09 +0200] rev 34620
scmutil: factor out building of transaction summary callback
In registersummarycallback(), we extra generic bits of the existing
"reportsummary" function into a decorator which will be used in forthcoming
changesets to add new summary callbacks.
Denis Laxalde <denis.laxalde@logilab.fr> [Sun, 01 Oct 2017 09:52:44 +0200] rev 34619
scmutil: factor out transaction name lookup in registersummarycallback()
Add an inner txmatch function in registersummarycallback() factoring out the
logic to determine if the transaction matches a particular sources set. We'll
reuse this function to add some new report logic in the new changeset.
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 05:23:45 +0200] rev 34618
configitems: register the annotate diff options
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 05:42:56 +0200] rev 34617
configitems: register the 'convert.cvsps.logencoding' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 05:36:10 +0200] rev 34616
configitems: register the 'ui.interface.chunkselector' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 05:18:20 +0200] rev 34615
configitems: register the 'experimental.archivemetatemplate' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:57:54 +0200] rev 34614
configitems: register the 'rebase.singletransaction' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 17:51:40 +0200] rev 34613
configitems: register the 'server.bundle*' family of config
All these config use the same function specifying a default value. We need to
register them all at the same time.
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:16:17 +0200] rev 34612
configitems: register the 'web.logourl' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:16:05 +0200] rev 34611
configitems: register the 'web.logoimg' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:15:48 +0200] rev 34610
configitems: register the 'web.labels' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:15:37 +0200] rev 34609
configitems: register the 'web.hidden' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:15:24 +0200] rev 34608
configitems: register the 'web.guessmime' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:15:08 +0200] rev 34607
configitems: register the 'web.deny_push' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:14:44 +0200] rev 34606
configitems: register the 'web.contact' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:14:33 +0200] rev 34605
configitems: register the 'web.cache' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:14:14 +0200] rev 34604
configitems: register the 'web.allowzip' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:14:01 +0200] rev 34603
configitems: register the 'web.allow_push' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:12:50 +0200] rev 34602
configitems: register the 'web.allowpull' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:12:34 +0200] rev 34601
configitems: register the 'web.allowgz' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 04:12:23 +0200] rev 34600
configitems: register the 'web.allowbz2' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:54:19 +0200] rev 34599
configitems: register the 'email.reply-to' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:54:05 +0200] rev 34598
configitems: register the 'email.cc' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:53:58 +0200] rev 34597
configitems: register the 'email.bcc' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:50:24 +0200] rev 34596
configitems: register the 'logtoprocess.uiblocked' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:50:14 +0200] rev 34595
configitems: register the 'logtoprocess.develwarn' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:49:47 +0200] rev 34594
configitems: register the 'logtoprocess.command' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:49:21 +0200] rev 34593
configitems: register the 'logtoprocess.commandfinish' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:49:04 +0200] rev 34592
configitems: register the 'logtoprocess.commandexception' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:45:14 +0200] rev 34591
configitems: register the 'pager.pager' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:41:48 +0200] rev 34590
configitems: register the 'web.maxchanges' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:41:01 +0200] rev 34589
configitems: register the 'web.maxfiles' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:39:21 +0200] rev 34588
configitems: register the 'web.maxshortchanges' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:36:44 +0200] rev 34587
configitems: register the 'web.motd' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:32:59 +0200] rev 34586
configitems: register the 'web.name' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:29:09 +0200] rev 34585
configitems: register the 'web.push_ssl' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 03:18:04 +0200] rev 34584
configitems: register the 'web.view' config
Boris Feld <boris.feld@octobus.net> [Wed, 11 Oct 2017 15:25:57 +0200] rev 34583
configitems: fix registration for 'blackbox.track' config
Default mutable values could be problematic. Use a lambda that returns the
value instead.
Thanks to martin for catching this bug.
Kevin Bullock <kbullock+mercurial@ringworld.org> [Tue, 10 Oct 2017 10:27:35 -0500] rev 34582
status: copy-edit and improve --terse and --verbose help
Yuya Nishihara <yuya@tcha.org> [Tue, 19 Sep 2017 23:13:46 +0900] rev 34581
templater: store revisions as ints so min/max won't compare them as strings
Because a template value has no explicit type (like ancient PHP), ifcontains()
has to coerce the type of the needle. Before, it was always converted to a
string, which meant any container type should be a list/dict of strings.
This no longer works since we've introduced min/max functions.
In order to work around the untyped nature of templater, this patch adds
a type specifier to hybrid dict/list. It isn't named as "valuetype" since
the _hybrid class can also wrap a dict.
Durham Goode <durham@fb.com> [Mon, 09 Oct 2017 12:47:22 -0700] rev 34580
fsmonitor: update to match new dirstate refactor
The dirstate was refactored so dirstate._map is now at dirstate._map._map. Same
for _copymap, is not _map.copymap. It seems none of the mercurial tests cover
this stuff, but it was caught by our Facebook extension tests.
Differential Revision: https://phab.mercurial-scm.org/D945
David Demelier <markand@malikania.fr> [Tue, 26 Sep 2017 08:37:17 +0200] rev 34579
doc: rename README to README.rst
Many hosting services consider README without extension as plain text. By using
.rst extension, we bring better formatting on many services (e.g. bitbucket).
Boris Feld <boris.feld@octobus.net> [Mon, 09 Oct 2017 08:35:55 +0200] rev 34578
test: use current user in the multi-user amend scenario
The obsfate template keyword that will be introduced in a later patch
distinguish between current user and other users when displaying the obsfate
users.
Update the test before for clarity.
Boris Feld <boris.feld@octobus.net> [Fri, 06 Oct 2017 17:05:19 +0200] rev 34577
test: cleanup verbosity variant from fatelog test
Unlike the '{obsfate}' keyword defined in 'hg-evolve', the definition of hg
fatelog in test-obsmarker-template.t is not verbosity dependent. Remove useless
call to fatelog -v and fatelog -q.
Boris Feld <boris.feld@octobus.net> [Fri, 06 Oct 2017 16:36:41 +0200] rev 34576
test: rename obsfate template alias
We will introduce an obsfate templatekw in the next patch that will conflict
with the obsfate template in the test file, rename the one in test file to
avoid this collision.
Boris Feld <boris.feld@octobus.net> [Fri, 06 Oct 2017 16:15:24 +0200] rev 34575
obsolete: add a devel.user.obsmarker
In tests, we often want to use a different username in obs-markers without
changing the default user. Add a 'devel.user.obsmarker'.
Paul Morelle <paul.morelle@octobus.net> [Thu, 05 Oct 2017 15:11:34 +0200] rev 34574
strip: factor out update target selection
The same algorithm was used in two places: one to find out which commit shall
become the parent of wdir, and the other to prepare the wdir when keeping
changes. Factoring it out prevents inconsistent changes in either occurrence.
Augie Fackler <augie@google.com> [Wed, 11 Oct 2017 03:48:11 -0700] rev 34573
contrib: add check-code rule banning use of readlink
readlink doesn't always exist, such as on Solaris-derived platforms.
Differential Revision: https://phab.mercurial-scm.org/D1000
Augie Fackler <augie@google.com> [Tue, 10 Oct 2017 11:03:14 -0400] rev 34572
tests: use readlink.py instead of readlink
The latter doesn't always exist, such as on Solaris-derived platforms.
Differential Revision: https://phab.mercurial-scm.org/D999
Augie Fackler <augie@google.com> [Tue, 10 Oct 2017 11:02:53 -0400] rev 34571
tests: use readlink.py instead of readlink
The latter doesn't always exist, such as on Solaris-derived platforms.
Differential Revision: https://phab.mercurial-scm.org/D998
Augie Fackler <augie@google.com> [Tue, 10 Oct 2017 11:02:40 -0400] rev 34570
tests: use readlink.py instead of readlink
The latter doesn't always exist, such as on Solaris-derived platforms.
Differential Revision: https://phab.mercurial-scm.org/D997
Augie Fackler <augie@google.com> [Tue, 10 Oct 2017 11:02:23 -0400] rev 34569
tests: use readlink.py instead of readlink
The latter doesn't always exist, such as on Solaris-derived platforms.
Differential Revision: https://phab.mercurial-scm.org/D996
Augie Fackler <augie@google.com> [Wed, 11 Oct 2017 01:56:49 -0700] rev 34568
ui: recommend tweakdefaults in the default hgrc template
Were I only slightly bolder, I'd make it on by default in the
suggested user hgrc.
Differential Revision: https://phab.mercurial-scm.org/D1001
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 10 Oct 2017 01:03:24 +0530] rev 34567
tests: optimize test-copytrace-heuristics.t
test-copytrace-heuristics.t tests the heuristics algorithm of copytracing. The
test has a pattern of making a server repo first and then cloning into a local
repo for each test to have public and draft commits. This is done because if we
have all draft commits and we have very less commits, heuristics will fallback
to full copytracing as that will be fast.
To avoid creating the server repo, we set the commit limit to -1 so that
everytime we perform the heuristics algorithm even when having full drafts and
tweak the config setting when we need to test the ability to fallback to full
copytracing.
This optimizes this test by 3 seconds.
Before:
real 0m41.503s
user 0m36.068s
sys 0m3.900s
After:
real 0m38.826s
user 0m33.884s
sys 0m3.396s
Differential Revision: https://phab.mercurial-scm.org/D991
Jun Wu <quark@fb.com> [Thu, 05 Oct 2017 13:38:48 -0700] rev 34566
patch: do not cache translated messages (API)
Previously the code caches `i18n._` results in module variables. That causes
issues after an encoding change. Instead of invalidating them manually, we
now just recalculate the translated messages every time `filterpatch` gets
called.
This makes test-commit-interactive.t pass regardless of whether chg or
demandimport is used or not.
.. api: `patch.messages` now lives in `patch.getmessages()`.
Extensions adding new messages should now wrap the `patch.getmessages`
method instead of changing `patch.messages` directly.
Differential Revision: https://phab.mercurial-scm.org/D959
Eamonn Kent <ekent@fb.com> [Mon, 09 Oct 2017 10:09:36 -0700] rev 34565
fsmonitor: add new watchman notifications to fsmonitor extension
The fsmonitor extension currently sends state-enter and state-leave
notifications to watchman on the update operation. This commit creates
additional notifications for the following events :
- transaction creation and commit/abort. A state-enter notification will be
sent when a transaction is created. It will provide the working copy
parent's hash. A state-leave notification will be sent when the
transaction is committed or aborted. It will provide the working copy
parent's hash.
- calls to set-parent will cause state-enter and state-leave notifications
to be sent. The state-enter notification will be sent prior to the
set-parent operation and the working copy parent's hash will be provided at
this time. The state-leave notification will be sent after the set-parent
operation completes providing the working copy parents hash.
Test Plan:
tested on dev server to check that necessary notifications were sent/received
Differential Revision: https://phab.mercurial-scm.org/D989
Eamonn Kent <ekent@fb.com> [Mon, 09 Oct 2017 10:09:36 -0700] rev 34564
fsmonitor: change the distance calculation
Change the distance calculation in the fsmonitor extension. It is done
in a method since anticipated changes will need to use this logic as well.
Test Plan:
Tested on development server.
Differential Revision: https://phab.mercurial-scm.org/D988
Boris Feld <boris.feld@octobus.net> [Mon, 09 Oct 2017 16:31:43 +0200] rev 34563
configitems: update default value of 'phases.new-commit'
Now that mq is cleaned up, we can rely on the config register for the default
value. We switch the default from the integer to human readable value to help
with future automatic documentation that could be generated from the config
register.
Boris Feld <boris.feld@octobus.net> [Mon, 09 Oct 2017 17:33:03 +0200] rev 34562
mq: use the newcommitphase utility
We use the official API instead of doing the operation manually. This will help
storing the default value for phases properly in the next changeset.
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 26 Sep 2017 18:17:47 +0200] rev 34561
patch: rename "header" variable into "hdr" in diff()
The "header" variable was hiding the eponymous class, hence preventing its
usage.
Mark Thomas <mbthomas@fb.com> [Thu, 05 Oct 2017 08:03:57 -0700] rev 34560
merge: improve comments in mergestate._makerecords
Differential Revision: https://phab.mercurial-scm.org/D955
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34559
commands: tidy up merge state decoding in resolve
Make the mapping from merge state to label and display key explicit, and move
construction of the dict out of the loop.
Differential Revision: https://phab.mercurial-scm.org/D861
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34558
tests: add test for path conflicts during merge
Differential Revision: https://phab.mercurial-scm.org/D787
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34557
tests: add test for path conflicts during update
Differential Revision: https://phab.mercurial-scm.org/D786
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34556
context: also consider path conflicts when clearing unknown files
When clearing unknown files to remove path conflicts, also delete files that
conflict with the target file's path.
Differential Revision: https://phab.mercurial-scm.org/D785
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34555
merge: check for path conflicts when merging (
issue5628)
When merging, check for any path conflicts introduced by the manifest
merge and rename the conflicting file to a safe name.
Differential Revision: https://phab.mercurial-scm.org/D784
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34554
util: add safename function for generating safe names to rename to
This function finds a name which does not clash with any other name in the
manifest, and so can be used to safely rename a file.
Differential Revision: https://phab.mercurial-scm.org/D783
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34553
merge: improve error messages for path conflicts during update
Differential Revision: https://phab.mercurial-scm.org/D782
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34552
merge: check for path conflicts when updating (
issue5628)
When updating to a new revision, check for path conflicts caused by unknown
files in the working directory, and handle these by backing up the file or
directory and replacing it.
Differential Revision: https://phab.mercurial-scm.org/D781
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34551
merge: rename conflicts to fileconflicts in _checkunknownfiles
We will need to distinguish between file conflicts and path conflicts. Rename
the conflicts variable so that it will be clearly distinct from pathconflicts,
which will be introduced in a future commit.
Differential Revision: https://phab.mercurial-scm.org/D780
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34550
merge: add _checkunknowndirs function for detecting path conflicts
Add a new function which, given a file name, finds the shortest path for which
there is a conflicting file or directory in the working directory.
Differential Revision: https://phab.mercurial-scm.org/D779
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34549
merge: backup conflicting directories when getting files
During batchget, if a target file conflicts with a directory, or if the
directory a target file is in conflicts with a file, backup and remove the
conflicting file or directory before performing the get.
Differential Revision: https://phab.mercurial-scm.org/D778
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34548
merge: add merge action 'pr' to rename files during update
Add a new merge action to handle a path conflict by renaming the conflicting
file to a safe name.
The rename is just to avoid problems on the filesystem. The conflict is still
considered unresolved until the user marks the original path as resolved.
Differential Revision: https://phab.mercurial-scm.org/D777
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34547
merge: add merge action 'p' to record path conflicts during update
Add a new merge action to record path conflicts. A status message is
printed, and the path conflict is added to the merge state.
Differential Revision: https://phab.mercurial-scm.org/D776
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34546
commands: update the resolve command to handle path conflicts
The resolve command must support displaying path conflicts and marking
them as resolved or unresolved.
Differential Revision: https://phab.mercurial-scm.org/D775
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34545
merge: add pathconflict merge state
Path conflicts that occur during merges are represented by 'pu' (unresolved)
and 'pr' (resolved) records in the merge state. These are stored on disk
in 'P' records.
Differential Revision: https://phab.mercurial-scm.org/D774
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34544
tests: add a test demonstrating basic path conflict failures
Differential Revision: https://phab.mercurial-scm.org/D773
Mark Thomas <mbthomas@fb.com> [Mon, 02 Oct 2017 14:05:30 -0700] rev 34543
scmutil: handle conflicting files and dirs in origbackuppath
When ui.origbackuppath is set, .orig files are stored outside of the working
copy. However conflicts can occur when files or directories end up having the
same name. These conflicts cause Mercurial to abort, even if they've been
created as a result of different backups.
Make sure we always replace files or directories in the origbackuppath if
they conflict with another file or directory.
Test Plan:
Add new unit test for conflicting paths.
Differential Revision: https://phab.mercurial-scm.org/D680
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Oct 2017 12:21:50 +0100] rev 34542
extdata: show debug message if external command exits with non-zero status
This isn't fatal because it's quite common for grep to exit with 1. Thanks to
Foozy for spotting this.
Yuya Nishihara <yuya@tcha.org> [Sat, 30 Sep 2017 08:57:50 +0100] rev 34541
templatekw: allow accessing to nested namespace item by its template name
Since we have the dot operator, it makes more sense to write
{namespaces.tags % "{tag}"}
instead of
{namespaces.tags % "{name}"}
Yuya Nishihara <yuya@tcha.org> [Sat, 30 Sep 2017 08:50:24 +0100] rev 34540
templatekw: get rid of temporary dicts from shownamespaces()
Yuya Nishihara <yuya@tcha.org> [Mon, 18 Sep 2017 23:53:05 +0900] rev 34539
templatekw: rename peerpaths to peerurls per naming convention (BC)
Since each element is called as "url", the template keyword should be named
as "<whatever>urls".
{peerurls} is now stabilized.
Yuya Nishihara <yuya@tcha.org> [Mon, 18 Sep 2017 23:31:01 +0900] rev 34538
templatekw: make experimental {peerpaths} return a single-level dict (BC)
This was planned as in
c0d8de2724ce, "{peerpaths.default.pushurl} will be
translated to peerpaths['default'].makemap()['pushurl'], which means
{peerpaths} should be a single-level dict and sub-options should be
makemap()-ed."
Yuya Nishihara <yuya@tcha.org> [Mon, 18 Sep 2017 23:49:05 +0900] rev 34537
templatekw: fix scope of peerpath url bound to generator
I had to explicitly bind 'd' to the generator. Otherwise, the last 'd' would
be used.
Yuya Nishihara <yuya@tcha.org> [Mon, 18 Sep 2017 23:07:17 +0900] rev 34536
templater: extend dot operator as a short for get(dict, key)
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Sep 2017 19:32:56 +0900] rev 34535
templater: add dot operator to easily access a sub item
This and the next patch will allow us to access a deeply-nested item
by foo.bar.baz syntax.
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Sep 2017 19:13:25 +0900] rev 34534
templater: wrap get/min/max result so map operation can apply to element
See the test for usage example.
wraphybridvalue() takes a key/value pair because a hybrid dict passes a key
to its makemap() function. Since makemap() of showmanifest() doesn't need
a key, it's set to None.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Oct 2017 07:18:24 +0100] rev 34533
dispatch: move initialization of sys.std* files
I'll add another Python 3 hack.
Yuya Nishihara <yuya@tcha.org> [Mon, 02 Oct 2017 06:52:10 +0100] rev 34532
py3: work around the scope of exception variable in dispatch.run()
https://stackoverflow.com/questions/
29268892/
Yuya Nishihara <yuya@tcha.org> [Sat, 07 Oct 2017 22:07:10 +0900] rev 34531
chg: just forward --time to command server
Since we've removed the use of atexit in
de5c9d0e02ea, --time just works.
Kostia Balytskyi <ikostia@fb.com> [Mon, 09 Oct 2017 02:30:23 -0700] rev 34530
windows: add an experimental option for long paths support
This commit adds an experimental --long-paths-support flag to build_hgexe
on Windows. It is off by default, but when supplied, causes setup.py to
embed some XML into the generated hg.exe, which in turn tells Windows to
allow this exe to use long paths (given that the appropriate registry setting
is enabled as well).
This was tested on Windows 10 14393 and 15063.
This commit introduces a badly-named initialize_options function, but its name
is dictated by distutils, rather than chosen.
# no-check-commit
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 22:07:47 +0200] rev 34529
configitems: register the 'experimental.graphstyle.grandparent' config
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 22:07:21 +0200] rev 34528
configitems: register the 'experimental.graphstyle.missing' config
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 22:06:35 +0200] rev 34527
configitems: register the 'experimental.graphstyle.parent' config
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 21:41:37 +0200] rev 34526
configitems: register the 'devel.empty-changegroup' config
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 21:41:22 +0200] rev 34525
configitems: register the 'devel.cache-vfs' config
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 21:36:26 +0200] rev 34524
configitems: register the 'devel.warn-config-default' config
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 21:41:10 +0200] rev 34523
configitems: register the 'devel.warn-config' config
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 21:48:40 +0200] rev 34522
configitems: register 'merge.checkunknown' and 'merge.checkignored'
They both use the same function defining a default, so we need to update them at
the same time.
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 21:47:14 +0200] rev 34521
configitems: register the 'diff.*' config
All the config were already using a unified function with a forced default, so,
registering them all at once seems safe.
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 20:43:46 +0200] rev 34520
configitems: register the 'experimental.mmapindexthreshold' config
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 20:42:19 +0200] rev 34519
configitems: register the 'experimental.maxdeltachainspan' config
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 20:16:09 +0200] rev 34518
configitems: register the 'commands.show.aliasprefix' config
Boris Feld <boris.feld@octobus.net> [Sun, 08 Oct 2017 20:11:34 +0200] rev 34517
configitems: register the 'blackbox.track' config
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 08 Oct 2017 04:39:42 +0530] rev 34516
copies: add docs for config `experimental.copytrace.sourcecommitlimit`
This patch adds documentation for the config option. The config name does not
convey much and hence documentation was required.
Differential Revision: https://phab.mercurial-scm.org/D986
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:29:13 -0400] rev 34515
hgweb: extract function for loading style from request context
Also make it work on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D970
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:27:21 -0400] rev 34514
request: coerce content-type to native str
Again, required by WSGI.
Differential Revision: https://phab.mercurial-scm.org/D969
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:26:09 -0400] rev 34513
request: use trivial iterator over dictionary keys
Differential Revision: https://phab.mercurial-scm.org/D968
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:22:02 -0400] rev 34512
hgweb: when constructing or adding to a wsgi environ dict, use native strs
That's what's required of us to work with the WSGI API on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D967
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:17:50 -0400] rev 34511
hgweb: produce native string for etag value
Also use %d since we know mtime is numeric.
Differential Revision: https://phab.mercurial-scm.org/D966
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:13:20 -0400] rev 34510
hgweb: in protocol adapter, look for bytes instances, not str
Differential Revision: https://phab.mercurial-scm.org/D963
Augie Fackler <augie@google.com> [Thu, 05 Oct 2017 14:12:51 -0400] rev 34509
hgweb: in protocol adapter, avoid control reaching end of non-void function
This greatly confounded some Python 3 porting work, once it was
managing to get this far.
Differential Revision: https://phab.mercurial-scm.org/D962
Saurabh Singh <singhsrb@fb.com> [Thu, 05 Oct 2017 14:18:55 -0700] rev 34508
test-check-code: fail new commits which use 'atexit' instead of 'ui.atexit'
Callbacks registered with 'atexit' are sometimes not called (like when
hg aborts and calls os._exit). On the other hand, callbacks registered with
'ui.atexit' are called in most cases. Therefore, encouraging the use of
'ui.atexit' by failing the test 'test-check-code.t' appropriately.
Test Plan:
Ran the test 'test-check-code.t' after importing 'atexit' in one of
the py files and confirmed that the test fails.
Differential Revision: https://phab.mercurial-scm.org/D961
Saurabh Singh <singhsrb@fb.com> [Thu, 05 Oct 2017 20:46:49 +0000] rev 34507
test-push-race: use 'ui.atexit' instead of python's 'atexit'
Callbacks registered with 'atexit' are sometimes not called (like when a
process is killed by the SIGTERM signal). Therefore, this commit replaces it
with 'ui.atexit' which ensures that the callbacks are always called. This also
makes the test compatible with chg.
Test Plan:
Ran the test 'test-push-race.t' with and without the '--chg' option.
Differential Revision: https://phab.mercurial-scm.org/D957
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 02 Oct 2017 04:48:06 +0530] rev 34506
py3: use '%d' for integers instead of '%s'
Differential Revision: https://phab.mercurial-scm.org/D973
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 02 Oct 2017 04:46:17 +0530] rev 34505
py3: fix keyword arguments handling in mq
This patch fixes the handling of keyword arguments to functions on Python 3. On
python3, the keys of keyword arguments need to str which is unicode. So any
keyword argument will get will have str keys and any dictionary we pass as
kwargs must have all the keys as str.
This patch uses pycompat.(strkwargs|byteskwargs) to do so conversion between
bytes keys and str keys and use r'' if there are very less uses and conversion
can be prevented.
Differential Revision: https://phab.mercurial-scm.org/D972
Jun Wu <quark@fb.com> [Thu, 05 Oct 2017 20:41:50 -0700] rev 34504
test-rebase-base: clarify it is about the "--base" flag
It happened several times that people use `test-rebase-base.t` as a general
purposed test file for rebase. But it is intended to be only related to the
`--base` flag. This patch split, renamed the test, and added a note to
clarify.
Differential Revision: https://phab.mercurial-scm.org/D975
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:36:10 +0200] rev 34503
configitems: register the 'convert.p4.encoding' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:42:34 +0200] rev 34502
configitems: register the 'gpg.key' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:42:33 +0200] rev 34501
configitems: register the 'gpg.cmd' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:42:50 +0200] rev 34500
configitems: register the 'keywordset.svn' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:42:35 +0200] rev 34499
configitems: register the 'hgk.path' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:44:18 +0200] rev 34498
configitems: register the 'share.poolnaming' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:44:17 +0200] rev 34497
configitems: register the 'share.pool' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:44:19 +0200] rev 34496
configitems: register the 'shelve.maxbackups' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:43:33 +0200] rev 34495
configitems: register the 'pager.attend' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:43:46 +0200] rev 34494
configitems: register the 'perf.stub' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:32:25 +0200] rev 34493
configitems: register the 'commands.rebase.requiredest' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:42:06 +0200] rev 34492
configitems: register the 'experimental.rebaseskipobsolete' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:41:49 +0200] rev 34491
configitems: register the 'experimental.nonnormalparanoidcheck' config
Boris Feld <boris.feld@octobus.net> [Fri, 30 Jun 2017 03:39:44 +0200] rev 34490
configitems: register the 'experimental.allowdivergence' config
Saurabh Singh <singhsrb@fb.com> [Thu, 05 Oct 2017 21:56:25 +0000] rev 34489
histedit: removing the experimental config 'histeditng'
This config has been around for about 2 years now. So, it can be
assumed to be stable. Therefore, I am removing the config. This also makes the
test 'test-histedit-base.t' compatible with chg.
Test Plan:
- Ran the test 'test-histedit-base.t' with and without '--chg' option.
- Ran all the other tests without '--chg' option.
- Checked the output of 'hg help histedit'.
Differential Revision: https://phab.mercurial-scm.org/D942
Saurabh Singh <singhsrb@fb.com> [Thu, 05 Oct 2017 00:48:44 +0000] rev 34488
convert: fix the RevisionSpec import in the bzr module
This import was failing (because its invalid) which was resulting in
the following tests failing with chg running:
- test-convert-bzr.t
- test-convert-bzr-directories.t
- test-convert-bzr-ghosts.t
- test-convert-bzr-treeroot.t
- test-convert-bzr-114.t
- test-convert-bzr-merges.t
This commit fixes the import which in turn fixes the tests.
Test Plan:
Ran the aforementioned tests with and without '--chg' option.
Differential Revision: https://phab.mercurial-scm.org/D936