Commit Graph

12380 Commits

Author SHA1 Message Date
Durham Goode
43c7bbda26 tests: drop devel warn lines
The hotfix that drops devel warnings lost it's test fixes in the latest rebase.
This adds them back.
(grafted from c8005d3b0d065f148672e799b4a05821dacf76f5)
(grafted from a0134574e5429c6c8b493270fe2e050e707401fb)
(grafted from 5d7d4d7c382dbdfdbee29f756ed89d2923716f06)
(grafted from 17a1c05f7dd723447808f146c47e778486e34c72)
(grafted from 94d0e522d808f5126a48be614838ffa125e2b001)
(grafted from 75c5f73252a5bae8742b0323ea689ca858baa753)
(grafted from 5c48dc2dea6a08c511f0b535eb4647d5c675bd30)
(grafted from 7817f8cc763105df882b96304285c7bf0763b1c4)
(grafted from 67951163d1fcc3f69542deae05cd8a118e2cdc6b)
(grafted from 4652ab4536eaf1fa8280ea40dfa40e2f6f18dcf1)
2018-01-03 05:35:56 -08:00
Kostia Balytskyi
93e8a3a685 tests_: simplify bundle2 requirement testing
Differential Revision: https://phabricator.intern.facebook.com/D4599415
(grafted from 35efb60b54b45e4bf8a281da35377ceabd9a2d0d)
(grafted from c976227665e29759c3bfd62a78b653815999f33c)
(grafted from ce81c51c90c6a7e67377b8368ff056be747ba808)
(grafted from f8ebd7782719ffb9f6c9bbdc740af4d628bc4c38)
(grafted from b683d8dc9677c2e4f24395f2ae849129bd4d6c81)
(grafted from 98300e5ba307c80f257e9d28b3afa7ef30d9a109)
(grafted from 6baa745cb3ea1a59c5e194b28d1db7e6a14da8fa)
(grafted from 0bd1e681e370164b2b58ed6329dcceab8a45ba1a)
(grafted from b88e051e45b3b34eebfe68b579d40e0848dd9164)
(grafted from d7d3ea27b8e834ca6a7ee86d67109f68dff8b627)
(grafted from 07f80547629b090986e880005f17af3470927034)
(grafted from f3ecb29d9b68d2adcf28a1986c070ceb85da8421)
(grafted from 23c77af0834657915d69f06623b8d831fc03dfbc)
(grafted from 6c0111953ffaacad3deb12f81bf05454f4c8bfc1)
(grafted from e6564dd98f0ab63736ba70500d60db0def7025f8)
(grafted from 3228fe1cc79cea64fa4cc674bf71f24123433ec7)
(grafted from 5a8c522c3db09d88bc6d45393c40256139ab4d42)
(grafted from 8d3f1b10a2bcda17dc55cdc97712bdc456acc406)
(grafted from 1f994f75a2a4f57c0f19981f71254e22963eaa04)
(grafted from 9bf91f3db246c40475f57657d82bd3f50e571e84)
(grafted from 2f88c5c88fd55b48fc0c30aa2abd701b2b7b9d7d)
(grafted from fab2b4f5d6e855c657f69dccb08f720bab4a82b1)
(grafted from e2fc694c13c74f7948680d653568e62d7010c4f4)
(grafted from d474fcb2eb58404a689024cc503abe28136c8395)
(grafted from 8b2233600993b96119186ddbfb16232c48247fe1)
(grafted from ba5486b8c838e72c35cb437cbdf0add5b2100c6b)
(grafted from 42699d89bd0da2e204075246eb4c27baa642fc2a)
(grafted from 02d0e17b6b7f938ba58f26d84191ef347bcdbd17)
(grafted from 9f9bba61993924c1c96a5dd15c0c50895ec8e525)
(grafted from c3bc9b3844d852ba7365574d3fbd4aa8e2763aa0)
(grafted from fc5d31337891e9eb218f100b177f8ead2f6353da)
(grafted from baad4585f877267a3264dc4c70e8cd75bfc6688e)
(grafted from 6d46603cea8fc9d04628817ae1e239b38e62ce62)
(grafted from c54d6c0b3b3dae086b8ad186e178a1e137b57cae)
(grafted from 1755e00c824c7d5b30a7daff573c3ab1e2f1fd2c)
(grafted from 81826a9db3f5f9c8e760d2b09afb06d9f74a1609)
(grafted from 73bce05fdb8cb8f8739bd2c90741ac7d422e24a4)
(grafted from c942744744e071464d3a476e57fd74f922fca497)
(grafted from 77b797a46b52249b26da6d30a0c63e381d1af0fe)
(grafted from 9b09bef68b1aa1ef3804aec330e793dcc7ada944)
(grafted from fefea5a4a24f0c8219b4b0e2b0cc70b4dfadfde2)
(grafted from 3428e6ab54999e70b38a5ee62291c8774bae7e4a)
(grafted from dd57d190fa75589d800beed188c5a381678cca3c)
(grafted from 9005ba0d5e6420ed8d048c08fc38a9682e536a26)
(grafted from daeb4bf87b68309c4c3c608853affe2adeb9fcbd)
(grafted from 6ad984397b22666ecebc2ff737b0d52ffb95b9b7)
(grafted from bd1f17920c18d88b6c4dd451f76699f6f665bc32)
(grafted from 31a92a48004ab6a4bfc389f674cacf549703e2b9)
(grafted from 7e80636f1529b8902292980912586f1db8598a83)
(grafted from 55ecf6a9f9bc89fd0330c4684f225e213be18033)
(grafted from 3361f627a0b8cb7666a529494ed80a0e1d7a365c)
(grafted from f51abda49b2d33a936567b786ce785c97e4b9c64)
(grafted from 5c01ed3bf394351e116fcece1fbd9e1b19f57ea4)
(grafted from 9503cdb335a95950235b7871978bcb6cb3e87222)
(grafted from 220d31489a377997e71d5766f9f29b30fd1662e1)
(grafted from 97483c98cf95113e95d03bf69f3307f92ef232a4)
(grafted from b3e9f8f43b4dd76422c20234acf76ec82a9c5f5b)
(grafted from 831d9f1b2940b6944fc1015c57f348a22de7a149)
(grafted from 051e1081a45e85944ea4414174a452e208904371)
(grafted from 9fb7c4c494166dee97bb04826cf71b0fa774cd2b)
(grafted from bfb4cb9c08c582323ceb82eb5cd2bcaeaf70329c)
(grafted from ab548e4f700a65bd24fbbbdb43f971eb5da73be5)
(grafted from 8870c382cfecbcbd4f8cec3ca0cb8759a43cf31c)
(grafted from 8e09e732b846b42beb49866d3785572df89f1e38)
(grafted from 951064f2a2980a00d085fce0d207c0225447b5d5)
(grafted from fce58e29903c2ef95b0481c11d59e5ef4fb56d15)
(grafted from 391f610601eeb542b9aa2bed3f541609772b8599)
(grafted from 681ea78b8ae1c29589a49a5bb74e0f3dff30e1d7)
(grafted from add76a9d94ee5d7b829be52458d1dfb65585c2d3)
(grafted from 475ae856da634e53637131717723fe895be0def6)
(grafted from b22d9651b8a7957c8275301d79f6ba62fc5a38f4)
(grafted from 3bf8c57dfd2fb432f4d499014dd9ab4ced26133d)
(grafted from 47718758ce30722c7a6e4d4dc324bdef20d45163)
(grafted from 59270eeea34cc381933ce50600983819e8a35794)
(grafted from 5397fdfa10d831ba358925e4a32faa23fed18173)
(grafted from de9cc0df3d097d25a8a218010e4a8370373f5068)
(grafted from e7f5a21e9dd2f2a4527943f5dad0d597c0f2b7a4)
(grafted from 5c383ebe8f57ccabf1ede74905a951631c7e32de)
(grafted from bf4ad8ffd761b575a843fe5f8370fb4a5c1a2eb9)
(grafted from 8523ff03bfa8708eefb667d9df64fba58e5a9f8c)
(grafted from 5220db13df5a745d113ebba89185ac42f4f890d1)
(grafted from 8a66c7352d03e545e8cbe80a1f84122624f2035c)
(grafted from 94cf7cdbce472e0694582b18acd6f2fc3f46e839)
(grafted from 29575e1ce294a235a1df9136a6b807b8947a20cd)
(grafted from d23b69b215e4201e90b600797b41ab362e7c7044)
(grafted from 386af1481e70f160f6b3d0e08ba8934372446b68)
(grafted from fc69c78396e9ab15fd961540204db004db933799)
(grafted from 8a8e35573518b72937af626999b885c6f6491683)
(grafted from 9fb083f031e7358fdb73ef6fac5278f841f2b084)
(grafted from aa20fd817539bdd8d15adb340ef714121dd273b2)
(grafted from 2b68df547651d1727b4320f2ffbb8fded3ab49ac)
(grafted from ff3bf5623756d977c88a25d546b34160229177d3)
(grafted from fd5f39d43bac7fa2c8a1e5785e3dc060f539277c)
(grafted from 8871ae64560384cf7693a5c32333b90e6774ba2a)
(grafted from 3a01e81a1a78138af5892129f447bee53fb85a73)
(grafted from ca1bc04c027005d42b4dc5eee52c3874a13790df)
(grafted from c68f7302ce65f055e205ed701490529571aaaa32)
(grafted from c7e264107eb95c8ab01804699775374b43bcbd84)
(grafted from 3748e7898899c994a4b5019b66f705e2c7a8d2eb)
(grafted from fe2d08b837334f9b3b1bb3a18a28f010a02c0340)
(grafted from dd29c6c56f0de76550d2f61671eb05da6a03fbc3)
2018-01-03 05:35:56 -08:00
Durham Goode
f13c34a644 serve: move hg-ssh readonly logic into hg serve
Recently hg-ssh was changed to block writes via in-memory hook configuration
instead of by passing config hooks, and dispatch.py blocks any invocation of hg
serve --stdio that has options passed. We have infrastructure that sets up read
only serve processes without using hg-ssh, and it was broken by this change.

Let's add a --read-only option to hg serve so non-hg-ssh solutions can still
launch hg in read-only mode. This makes it also work with non-stdio serve
processes as well.
(grafted from 7a0ed9aad8526f689343a5a02aa4a66e5f3be1f2)
(grafted from bf33f750447d8b0dfeae2a311e1d1eb93e19d6a0)
(grafted from 9ada6a6e4ac2a92325592cd58edd9160e17c9e31)
(grafted from 50e676e99c3b7cc929ceaaebbd3c684a8a58f9d8)
(grafted from 01833a49fa4dca204dc0e606f21279530925307c)
(grafted from 301af2e1a42fe912acf90ae9a87ca6a20ce5cd5d)
(grafted from 6ae2eaad3edbfdfb04ac5880a86341e69980529c)
(grafted from fcdedd417b29d28797840fc2393e0ff846fa54c8)
(grafted from ddda3705adfb2ac103f506d694d2b30028dfaca9)
(grafted from 138e3cf3bc394c4ff507341a390e1876c7104042)
(grafted from f8073d595e87086213525dbb642962b84158ee9a)
(grafted from 96bac04dc722030250a53616f0fb55125829f25e)
(grafted from 2aeed48cc3b3324b564343d8515aed1ecec69b14)
(grafted from 4fb2e02a273c868febdae9530b0a07a53a0e92a7)
(grafted from c57b28835f0b880c075d5b8aa99ddb9da54b21b1)
(grafted from 35fd78b021bec96db63e8dd99f98efc3b2342380)
(grafted from 9ac14f96c9a82068f07a709374f359283c206791)
(grafted from 4b64c191a9aacd52ea58ae8ec943605667759398)
(grafted from 1db390a79e32db12dde7a225e26b86ed245f9473)
(grafted from 9a999ed1ce50af8e5fa03dc270488c37304d8c94)
(grafted from b6791f2eb83f176192c9df50c736bc4c54fab5a6)
(grafted from 4b6e87c5be38d9971399e4ad989e4261f283b93a)
(grafted from ae660c075b4af0849d1ff5d36404ef66aeea9933)
(grafted from ff0f3bf0834b38a527654495369cd538ca8744f4)
(grafted from bff8177767c9023295ff93bc520114bb909952a8)
(grafted from 05a833e4071b9da7b447669f6bd8a3f62c1d3c27)
(grafted from be8ab299731fb8295efbe10a014798c7a177d4a0)
(grafted from beec2bc2ebd9eaf7093bba5fca8fef07c669d970)
(grafted from 03d88ba3cd8795d17a99dc1b50ac55e1937d38e1)
(grafted from 92a33bc0d275a96c61553f8bccefcd32f1360931)
(grafted from 3d37833f54e37356f3e32db2ad8fb2ffe4fa14f2)
(grafted from 77fa3393787a9410e14afc26465abb5561253075)
(grafted from 9d908f86cc7986c167cef5cdccaabb565fd2bc04)
(grafted from 0dbc2023c42f72aea6b608e5111725163dcbb64b)
(grafted from 3acf4e9bb718617efaf31abcba583b9b7be2559d)
(grafted from c671696a06e418f5f040427efb3e51fe4c9fa6cd)
(grafted from 309f11e682eb3c6fa497bf767cbcbef3b0dbaf4b)
(grafted from 4f828ef4b70a6a16fe747d5f6393042bff204b5e)
(grafted from 71193e84a71d029dedc744882978285cbe5722e6)
(grafted from 2929832c61c9727bd884f94da5afa29e80334a96)
(grafted from 2ff8a9f1761f82ffa8ebd2a96d86f7de7c712d9c)
(grafted from b438cb1e6cff36e7e197da7669def8a5e528053c)
(grafted from a9ed103481b779af9e160d2b81a9bfe81cc7d173)
(grafted from d139e95d22dc811002dafef1ecaac5dac99825fe)
(grafted from b4e41a9f2c3a6328ada72810407686d11833347c)
(grafted from 2b3826c7b3bdf669b397f1ad31ae106a05d7b05b)
(grafted from 23737fb5e1d6874cf79a1eb841dd1614c0295a1b)
(grafted from 69588396b17d3dafeece8bc9e2101559d871d9fb)
(grafted from b3252a277a53b1657e6bcf31359b413d2becffcc)
(grafted from 12c8e6062d34d4d6cf0b0128084278800a1ed8f7)
(grafted from 8ce5c67748afbe6e82fc3f822e35ddc58cb03694)
(grafted from b0f656426efcf9a70386b1c781507f40ab95af49)
(grafted from 147ae96993dcffbed2f39f31795ef3d60631d43f)
(grafted from 2ecb34a565accf638e6004c59aa5b2d2361f9428)
(grafted from 6bfc53cd4c479b4e789d4086a2c7c2f4045a288f)
(grafted from bf73f92394a079928db6d4b0b3e7aa78448af91a)
(grafted from b69a654342339eb740527fc84af523eb53edeb71)
(grafted from 3f090f44e8a33cde8d5708454a5292d0976269e6)
(grafted from ac4432275d3b750405e53f67b1267579764f4fee)
(grafted from dbfd0bce0eded53dc7d824393f03ddd2f2e693fb)
(grafted from bf7087d072ca6c5d5dac2ddef4c43339d02f6133)
(grafted from b9d63feb8c90f83e74f3e9a89328419c81088082)
(grafted from 718e93a4e545f3e16d09c66f210a567427f1068a)
(grafted from e0ba57c8bf13ccc45b7eaa62d64e03038cd002ad)
(grafted from 5c849011421ad00ef190c2bf15c640656424f681)
(grafted from e833de714167fe6039b42f1cd1890b0470a32ea2)
(grafted from 480872890137130564910a29ed8ef3890810f0c4)
(grafted from 6224dc455a24542cf7d55721fceb14a08e92d391)
(grafted from 24ced5d2b0d6fb837a3994a80ef808e29f62ccc5)
(grafted from 452eb5c8624cc22867fafa692c6c7905e46da27a)
(grafted from cdc9f1b121878c26c986eca2233b5d03ea50ad74)
(grafted from 8b3a45fe3a612fdbee3a1f291f41bfaadfd16a6f)
(grafted from 2a07c0b3cb9785a9f8d5d669b885044e4d4544b1)
(grafted from 56d892df53cfdf3a13f38cd386a437ea59ef0d77)
(grafted from b63c65fad2d28a86a3bc3871d58e45019b11e6a1)
(grafted from 8618bd56f309543d8577000a4310fdf8648f1087)
(grafted from e04c7ddddc5cc40d6347d2336b81d5be2289243e)
(grafted from 5951fe6318d02a9b739f0174f3aecc3d5eead31c)
(grafted from 0f4d380f641a55791ca9eef13cd49da24cf40a7a)
(grafted from d7ecf3376e572d77b670cbe2184370b08d38dcf7)
(grafted from a75534c9e6d7a481303096e44e265593fb5b0b2f)
2018-01-03 05:35:56 -08:00
Augie Fackler
eed6eb51f4 merge with stable 2017-12-19 16:27:24 -05:00
Jun Wu
bf8f10f537 lfs: fix committing deleted files caused by 02c30db0443d
02c30db0443d (lfs: add a repo requirement for this extension once an lfs
file is committed) introduced a regression that prevents committing file
deletion.  This patch fixes that.

Differential Revision: https://phab.mercurial-scm.org/D1717
2017-12-18 14:37:00 -08:00
Augie Fackler
2cd19dc584 tests: update expected output of svn encoding test
The changes I see on the buildbot match the ones I see on my laptop,
and all look reasonable.

Differential Revision: https://phab.mercurial-scm.org/D1713
2017-12-18 13:15:10 -05:00
Matt Harbison
9ffbf863b8 run-tests: use context managers for file descriptors
I've seen the following error a few times recently when running the tests with
`yes | ./run-tests.py --local -j9 -i`:

Errored test-add.t: Traceback (most recent call last):
  File "./run-tests.py", line 821, in run
    self.runTest()
  File "./run-tests.py", line 910, in runTest
    if self._result.addOutputMismatch(self, ret, out, self._refout):
  File "./run-tests.py", line 1774, in addOutputMismatch
    rename(test.errpath, test.path)
  File "./run-tests.py", line 571, in rename
    os.remove(src)
WindowsError: [Error 32] The process cannot access the file because it is being
 used by another process: 'c:\\Users\\Matt\\projects\\hg\\tests\\test-add.t.err'

This change doesn't fix the problem, but it seems like a simple enough
improvement.
2017-12-17 14:06:49 -05:00
Yuya Nishihara
3985a8fdb4 diff: disable diff.noprefix option for diffstat (issue5759)
We could use patch.diffhunks() instead of patch.diff() to get filenames
without parsing patch content, but that isn't always possible because we
sometimes feed raw patch data to patch.diffstat().
2017-12-17 18:43:05 +09:00
Yuya Nishihara
e6f35d04b2 hgweb: disable diff.noprefix option for diffstat
Copied from 62d04dd7ece9.
2017-12-17 18:28:15 +09:00
Matt Harbison
9638df605c run-tests: add substitution patterns for common '\' path output on Windows
The goal is to reduce the amount of hand tuning of new/changed tests that is
required on Windows.  Since the OS prints the proper paths everywhere else, this
is limited to Windows.  These are based on the check-code rules that were
dropped in 217bd5cb0914.

There are some minor tweaks, because those were trying to detect '/' paths
without a '(glob)' at the end, whereas these detect '\' paths. Also, it looks
like the 'no changes made to subrepo' one was broke, because the path to the
subrepo has been getting output but was not in the pattern.  End anchors are
dropped because '(glob)' is no longer required, but '(feature !)' annotations
are a possibility.

The 'saved backup bundle' pattern dropped from run-tests.py was simply carrying
over the first capture group.  The replace() method runs prior to evaluating
'\1', but it wasn't doing anything because of the 'r' prefix on '\\'.

The 'not recording move' entry is new, because I stumbled upon it searching for
some of these patterns.  There are probably others.
2017-12-12 20:11:13 -05:00
Boris Feld
18540b6753 histedit: preserve active branch while histediting
The branch information was properly preserved in the changeset, but the
"active" branch of the working copy could be lost (the branch of the base
being used).

Histedit used to behave properly in this regard but the case was not tested
and regressed 4 years ago in c038baa4b6f0.
2017-12-12 18:22:11 +01:00
Augie Fackler
6f9e783026 tests: write and use a custom helper script to avoid find's -printf
-printf on find is a GNU-ism and will be banned in an upcoming
check-code change.

Differential Revision: https://phab.mercurial-scm.org/D1597
2017-12-05 16:55:41 -05:00
Boris Feld
cf4679a55d debuginstall: add a line about re2 availability
Using re2 engine can massively speed up regexp. We make it simpler to check if
it is available in a given install.
2017-11-27 18:48:36 -05:00
Matt Harbison
17e2258c44 tests: fix the check-code rule for testing non-existent files
I missed this in d3e2086bc411.
2017-12-16 12:34:40 -05:00
Matt Harbison
44a151c9d6 tests: convert the 'file://\$TESTTMP' rule to an automatic substitution
The rule only triggered on non Windows platforms, even though Windows also
required an adjustment.  Automatic seems better.

The aggressive globbing in test-subrepo-svn.t was found and rewritten by the
substitution.
2017-12-16 11:32:10 -05:00
Yuya Nishihara
5ff5d9b38c dispatch: add HGPLAIN=+strictflags to restrict early parsing of global options
If this feature is enabled, early options are parsed using the global options
table. As the parser stops processing options when non/unknown option is
encountered, it won't mistakenly take an option value as a new early option.
Still "--" can be injected to terminate the parsing (e.g. "hg -R -- log"), I
think it's unlikely to lead to an RCE.

To minimize a risk of this change, new fancyopts.earlygetopt() path is enabled
only when +strictflags is set. Also the strict parser doesn't support '--repo',
a short for '--repository' yet. This limitation will be removed later.

As this feature is backward incompatible, I decided to add a new opt-in
mechanism to HGPLAIN. I'm not pretty sure if this is the right choice, but
I'm thinking of adding +feature/-feature syntax to HGPLAIN. Alternatively,
we could add a new environment variable. Any bikeshedding is welcome.

Note that HGPLAIN=+strictflags doesn't work correctly in chg session since
command arguments are pre-processed in C. This wouldn't be easily fixed.
2017-11-23 22:17:03 +09:00
Yuya Nishihara
b0d1fec38b fancyopts: add early-options parser compatible with getopt()
The next patch will add a flag for strict parsing of early options, where
we'll have to parse all early options at once instead of processing them
one-by-one by dispatch._earlygetopt(). That's why I decided to hook
fancyopts().

All dispatch._early*opt() functions is planned to be replaced with this
function. But in this stable series, only the strict mode will be handled
by fancyopts.earlygetopt().
2017-11-23 22:04:53 +09:00
Matt Harbison
c1ef7c5a7a largefiles: pay attention to dropped standin files when updating largefiles
Previously, the largefile for a dropped standin would be deleted here, and then
restored from the cache.  This had the effect of clobbering uncommitted changes
if a revert caused the file to be forgotten, which is not what happens with a
normal file.  Now the removal and update is skipped for dropped largefiles, and
the corresponding standin is deleted from disk.

This was noticed when working on issue5738 because the forgotten standin files
were left behind, and that changes the behavior of the next rename to that
directory.  My first attempt was to cleanup the standins before calling this.
That failed, because this function deletes the largefile if the corresponding
standin is missing.

This function is called by the revert command, merge (and therefore update), and
patch, via the scmutil.marktouched() override.  So it should be pretty narrow in
scope.

I didn't mark issue5738 as fixed because the move related issues can still
happen if the main tree and the .hglf subtree get out of sync somehow.  I don't
see an easy fix for that, but that should be an edge case.  If whoever queues
this thinks it is good enough to close out the bug and can cram it into the
summary, go for it.
2017-11-12 23:45:14 -05:00
Matt Harbison
9d58e7d4a4 test-largefiles: demonstrate problems with renaming and reverting a directory
These things were uncovered looking at issue5738.

First, if the destination directory exists under .hglf, the source is moved
under the destination instead of renaming the last component for `hg mv srcdir
dstdir`.  This is extra confusing, because it occurs even if the user visible
destination (i.e. the path _not_ under .hglf) does not exist.

Additionally, when a largefile is forgotten via revert, any modifications end up
getting clobbered.  For normal files, the forgotten file is left unchanged, as
shown by test-import.t.  The forget command on a largefile will correctly leave
the file unmodified.
2017-11-12 00:24:38 -05:00
Matt Harbison
d913b0c5b9 tests: add globs for Windows 2017-11-11 12:37:05 -05:00
Yuya Nishihara
d46d87090c cat: record the current behavior of wildcard matches in subrepos
Mercurial subrepos support any match patterns.
2017-11-25 15:29:34 +09:00
Matt Harbison
40cf71ae24 convert: avoid wrong lfconvert defaults by moving configitems to core
The `hg lfconvert --to-normal` command uses the convert extension internally to
work its magic, but that produced devel-warn messages if the convert extension
wasn't loaded by the user.  The test in 658e7a6d93e0 (modified here) wasn't
showing the warnings because the convert extension was loaded via $HGRCPATH.
Most of the config options default to None/False, but 'hg.usebranchnames' and
'hg.tagsbranch' are supposed to default to True and 'default' respectively.

The first iteration of this was to ui.setconfig() inside lfconvert, to force the
convert extension to load.  But there really is no precedent for doing this, and
check-config complained that 'extensions.convert' isn't documented.  Yuya
suggested this alternative.

This partially backs out 448e09d8859d.
2017-11-28 23:20:08 -05:00
Yuya Nishihara
52b06fe73d dispatch: verify result of early command parsing
Before, early options were stripped from args, and because of this, some
kind of parsing errors weren't reported. For example,

  $ hg ci -m -Ra file

would execute "hg ci -m file" in repository "a".

This patch fixes the issue by parsing early options again by real getopt-based
parser, and verifying the results. If the early parsing appears wrong, hg just
aborts. The current error message seems not nice, and should be improved, maybe
in V2 or follow-up.

Note that this isn't a security feature because we can still do anything by
using shell aliases.
2017-11-11 12:40:13 +09:00
Yuya Nishihara
82ae4401fe dispatch: abort if early boolean options can't be parsed
Perhaps we'll need to restrict the parsing rules of --debugger and --profile,
where this patch will help us know why the --debugger option doesn't work.

I have another series to extend this feature to --config/--cwd/-R, but even
with that, shell aliases can be used to get around the restriction.
2017-11-11 14:02:41 +09:00
Yuya Nishihara
8f01395e02 dispatch: stop parsing of early boolean option at "--" 2017-11-10 22:27:26 +09:00
Yuya Nishihara
7137d3d976 dispatch: do not drop unpaired argument at _earlygetopt()
Before, "hg log -R" just worked.
2017-11-11 12:09:19 +09:00
Yuya Nishihara
0704342965 amend: update .hgsubstate before committing a memctx (issue5677)
This is a minimal copy of localrepo.commit(). As the current amend() function
heavily depends on the wctx API, it wasn't easy to port it to use a separate
status tuple. So for now, wctx._status is updated in-place.
2017-11-04 20:07:40 +09:00
Yuya Nishihara
ec502c74f8 tests: demonstrate that .hgsubstate isn't updated on amend
Loosely based on test-amend.t and test-subrepo.t
2017-11-04 18:54:57 +09:00
Yuya Nishihara
df1f119682 amend: do not drop missing files (issue5732)
samefile() can be wrong since wctx.manifest() does not include missing files,
whereas missing files should be preserved on commit.
2017-11-04 23:48:19 +09:00
Yuya Nishihara
e6c4026850 amend: do not take untracked files as modified or clean (issue5732)
fctx.exists() shouldn't be used here as it checks if a file physically exists,
which may disagree with the dirstate.
2017-11-04 23:45:59 +09:00
Yuya Nishihara
5ea9a0ac48 tests: add more complete test for status changes on amend
This demonstrates that missing/untracked files are handled incorrectly. The
correct outputs are suppressed by (false !), and wrong outputs are added with
(true !) instead.

The setup code is copied from test-status-rev.t.
2017-11-04 23:40:26 +09:00
Mark Thomas
ce1d136e58 scmutil: don't try to delete origbackup symlinks to directories (issue5731)
When origbackuppath is set, when looking to see if a file we are backing up
conflicts with a directory in the origbackuppath, we incorrectly match on
symlinks to directories.  This means we try to call vfs.rmtree on the
symlink, which fails.

Differential Revision: https://phab.mercurial-scm.org/D1311
2017-11-03 09:27:36 -07:00
Mark Thomas
63c7a46713 tests: add a test demonstrating issue5731
If origbackups are in use, a symlink to a valid directory is backed up, and an
update is made that attempts to backup a file or link over that symlink, we
abort with a bad error message instead of successfully updating.

Differential Revision: https://phab.mercurial-scm.org/D1310
2017-11-03 09:27:35 -07:00
Gregory Szorc
bcd6d015d2 subrepo: use per-type config options to enable subrepos
We change subrepos.allowed from a list of allowed subrepo types to
a combination of a master switch and per-type boolean flag.

If the master switch is set, subrepos can be disabled wholesale.

If subrepos are globally enabled, then per-type options are
consulted. Mercurial repos are enabled by default. Everything else
is disabled by default.
2017-11-06 22:32:41 -08:00
Yuya Nishihara
e5730ba521 subrepo: disable git and svn subrepos by default (BC) (SEC)
We have a security issue with git subrepos. I'm not sure if svn subrepo is
vulnerable, but it seems not 100% safe to allow writing arbitrary data into
a metadata directory. So for now, only hg subrepo is enabled by default.

Maybe we should improve the help to describe why git/svn subrepos are
disabled.
2017-11-05 21:51:42 +09:00
Yuya Nishihara
9752ef714d subrepo: extend config option to disable subrepos by type (SEC)
This allows us to minimize the behavior change introduced by the next patch.

I have no idea which config style is preferred in UX POV, but I decided to
get things done.

 a) list: 'allowed = hg, git, svn'
 b) sub option: 'allowed.hg = True' or 'allowed:hg = True'
 c) per-type action: 'hg = allow', 'git = abort'
2017-11-05 21:48:58 +09:00
Yuya Nishihara
f864544d81 subrepo: add config option to reject any subrepo operations (SEC)
This is an alternative workaround for the issue5730.

Perhaps this is the simplest way of disabling subrepo operations. It does
nothing clever, but just aborts if Mercurial starts accessing to a subrepo.

I think Greg's patch is more useful since it allows us to at least check
out the parent repository. However, that would be confusing if the default
is flipped to checkout=False and subrepos are silently ignored.

I don't like the config name 'allowed', but I couldn't get any better name.
2017-11-05 21:22:07 +09:00
Yuya Nishihara
dac75264c0 subrepo: disallow symlink traversal across subrepo mount point (SEC)
It wasn't easy to extend the pathauditor to check symlink traversal across
subrepos because pathauditor._checkfs() rejects a directory having ".hg"
directory. That's why I added the explicit islink() check.

No idea if this patch is necessary after we've fixed the issue5730 by
splitting submerge() into planning and execution phases.
2017-11-03 20:12:50 +09:00
Yuya Nishihara
ace48cdb7b tests: show symlink traversal across subrepo mount point (SEC)
Also adds a couple of tests where the auditor does work as expected.
2017-11-03 19:17:25 +09:00
Jun Wu
04a084983c test-dispatch: stabilize the test
When cwd is removed and `hg` is executed, some shells may run `getcwd`
before forking and executing, some may not do it, some may print a
different error message.

The test should be shell-independent so let's just avoid checking the error
message.

Differential Revision: https://phab.mercurial-scm.org/D1282
2017-11-01 14:22:26 -07:00
Kevin Bullock
0c315becfe internals: update test-help.t for config registrar copy-edit 2017-11-01 15:34:22 -05:00
Matt Harbison
ba66d4513f help: minor copy editing for grammar 2017-10-31 23:09:29 -04:00
Yuya Nishihara
21161a9bda configitems: relax warning about unwanted default value
The original condition was a bit harsh for extension authors since third-party
extensions need to preserve compatibility with older Mercurial versions, where
no defaults would be loaded from the configtable. So let's silence the warning
if the given default value matches, which should be harmless.
2017-10-31 22:37:30 +09:00
Yuya Nishihara
1fa3521832 test-static-http: flush access log per request
It appears that stderr is fully buffered on Windows.

# no-check-commit because of log_message() function
2017-10-29 17:53:52 +09:00
Siddharth Agarwal
2d9d1fcc19 merge: disable path conflict checking by default (issue5716)
We shouldn't ship a severe perf regression in hg update for 4.4.

Differential Revision: https://phab.mercurial-scm.org/D1223
2017-10-24 11:15:30 -07:00
Yuya Nishihara
e9a3f998f1 templatefilters: add slashpath() to convert path separator to slash
Prepares for deprecating the ui.slash option, which isn't always respected.
2017-10-21 17:19:02 +09:00
Hollis Blanchard
7a617027ed outgoing: respect ":pushurl" paths (issue5365)
Make 'hg outgoing' respect "paths.default:pushurl" in addition to
"paths.default-push".

'hg outgoing' has always meant "what will happen if I run 'hg push'?" and it's
still documented that way:

    Show changesets not found in the specified destination repository or the
    default push location. These are the changesets that would be pushed if a
    push was requested.

If the user uses the now-deprecated "paths.default-push" path, it continues to
work that way. However, as described at
https://bz.mercurial-scm.org/show_bug.cgi?id=5365, it doesn't behave the same
with "paths.default:pushurl".

Why does it matter? Similar to the bugzilla reporter, I have a read-only mirror
of a non-Mercurial repository:

  upstream -> imported mirror -> user clone
         ^-----------------------/

Users push directly to upstream, and that content is then imported into the
mirror. However, those repositories are not the same; it's possible that the
mirroring has either broken completely, or an import process is running and not
yet complete. In those cases, 'hg outgoing' will list changesets that have
already been pushed.

Mozilla's desired behavior described in bug 5365 can be accomplished through
other means (e.g. 'hg outgoing default'), preserving the consistency and
meaning of 'hg outgoing'.
2017-12-14 15:03:55 -08:00
Augie Fackler
ee6c7f7907 tests: test-pathconflicts-merge.t requires symlinks
Once we're ready to turn this functionality on more widely, we might
want to write a symlink-free version of the test that can run on
Windows, but for now we'll just leave it disabled there.

Differential Revision: https://phab.mercurial-scm.org/D1710
2017-12-15 17:52:38 -05:00
Kostia Balytskyi
7405833d16 sshpeer: allow for additional environment passing to ssh exe
We already have the ability to customize the ssh command line arguments, let's
add the ability to customize its environment as well.

Example use-case is ssh.exe from Git on Windows. If `HOME` enviroment variable
is present and has some non-empty value, ssh.exe will try to access that
location for some stuff (for example, it seems for resolving `~` in
`.ssh/config`). Git for Windows seems to sometimess set this variable to the
value of `/home/username` which probably works under Git Bash, but does not
work in a native `cmd.exe` or `powershell`. Whatever the root cause, setting
`HOME` to be an empty string heals things. Therefore, some distributors
might want to set `sshenv.HOME=` in the configuration (seems less intrusive
that forcing everyone to tweak their env).

Test Plan:
- rt

Differential Revision: https://phab.mercurial-scm.org/D1683
2017-12-14 14:31:57 +00:00
Martin von Zweigbergk
0c2857a328 unamend: allow unamending if allowunstable is set
I don't see why unamend should be disallowed when allowunstable is
set. By switching to rewriteutil.precheck() we fix that and get more
consistent error messages (and some additional ones).

Differential Revision: https://phab.mercurial-scm.org/D1682
2017-12-13 17:03:39 -08:00
Wojciech Lis
f2ebe55279 lfs: using workers in lfs prefetch
This significantly speeds up lfs prefetch. With fast network we are
seeing ~50% improvement of overall prefetch times
Because of worker's API in posix we do lose finegrained progress update and only
see progress when a file finished downloading.

Test Plan:
Run tests:
./run-tests.py -l test-lfs*
....
# Ran 4 tests, 0 skipped, 0 failed.
Run commands resulting in lfs prefetch e.g. hg sparse --enable-profile

Differential Revision: https://phab.mercurial-scm.org/D1568
2017-12-11 17:02:02 -08:00
Martin von Zweigbergk
d28cfbc9a5 tests: avoid echo with backslash escapes
Some shells' echo (e.g. Bash's) do not interpret backslash escapes by
default, while others shells' do (e.g. Dash's). This led to a failure
in test-run-tests.t. We could switch to the more compatible printf,
but using a heredoc seems simpler, so that's what this patch does.

For anyone who wants to test this for themselves, remove the "unset
HGTEST_SHELL" line in helper-runtests.sh and pass
e.g. "--shell=/bin/dash" to the test runner.

Differential Revision: https://phab.mercurial-scm.org/D1699
2017-12-14 22:30:03 -08:00
Anton Shestakov
03a4817df8 hgweb: stop using HTML comments in <script>
Once upon a time, in 1995, there were browsers that didn't understand <script>
tags and they would simply show the code inside as text. This started a
tradition of wrapping everything inside <script> in <!-- HTML comments -->.
Nowadays, it's not only not needed, but can be considered harmful[1]:

- within XHTML documents, the source will actually be hidden from all browsers
  and rendered useless

- `--` is not allowed within HTML comments, so any decrement operations in
  script are invalid

[1]: http://www.javascripttoolbox.com/bestpractices/#comments
2017-12-15 12:15:58 +08:00
Augie Fackler
96c1d16249 merge with stable 2017-12-14 16:01:28 -05:00
Mark Thomas
1d4d162882 dirstate: clean up when restoring identical backups
When a dirstate backup is restored, it is possible that no actual changes to
the dirstate have been made.  In this case, the backup is still a hardlink
to the original dirstate.

Unfortunately, `os.rename` silently fails (nothing happens, and no error
occurs) when `src` and `dst` are hardlinks to the same file.  As a result,
the backup is left lying around.  Over time, these files accumulate.

When restoring dirstate backups, check if the backup and the dirstate are
the same file, and if so, just delete the backup.

Differential Revision: https://phab.mercurial-scm.org/D1201
2017-10-20 05:53:35 -07:00
Mark Thomas
0a3c5d4762 tests: add a test demonstrating failure to clean up dirstate backups
Differential Revision: https://phab.mercurial-scm.org/D1200
2017-10-20 05:53:33 -07:00
Matt Harbison
bd8eaff510 tests: adjust hooks for Windows
I'm not sure why these weren't working on Windows.  The failures were generally
in the style of:

  -  remote: phase-move: cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b:  1 -> 0
  +  remote: "phase-move: $HG_NODE:  $HG_OLDPHASE -> $HG_PHASE"

and

  -  abort: pretxnclose-bookmark.force-forward hook exited with status 1
  -  [255]
  +  abort: pretxnclose-bookmark.force-public hook exited with status 255
  +  [255]

These failures originated in 5625d0ddc285::6e3e88681b23.
2017-10-20 23:01:56 -04:00
Matt Harbison
0aa0daf3f0 test-log-linerange: open binary file in binary mode
The '\n' characters were being translated on Windows, throwing off hg and git
hashes, as well as the file content in the diff.
2017-10-20 21:29:15 -04:00
Matt Harbison
80170c3cd7 test-arbitraryfilectx: stabilize for Windows
Previously, the second last test (context.arbitraryfilectx(..)) returned True on
Windows.  I changed the repo setup sequence to import a patch, so that way the
repo would have a proper symlink.  That made the last test fail, since it is
comparing files in wdir(), one of which is not the expected symlink.

Apparently the (feature !) line matching doesn't work well with (no-eol), so I
had to conditionalize the test instead of the output.
2017-10-19 23:16:48 -04:00
Boris Feld
2d8cec51a9 internal-doc: document the config register mechanism
This explains the various usage and feature of the config register introduced
in Mercurial 4.3 and 4.4.
2017-10-27 18:19:07 +02:00
Yuya Nishihara
73e9f96212 statichttprepo: prevent loading dirstate over HTTP on node lookup (issue5717)
This seems a bit hacky, but works well. There should be no reason that
static-http repo had to load dirstate.

Initially I tried to proxy os.stat() call through vfs so that statichttpvfs
could hook it, but there wasn't a good error value which the statichttpvfs
could return to get around the util.filestat issue.
2017-10-25 21:58:03 +09:00
Yuya Nishihara
e368124f71 test-static-http: show all files accessed over HTTP
This provides some confidence on files that should be loadable over HTTP.
Hopefully it will prevent future bugs.
2017-10-25 21:21:42 +09:00
muxator
aaf12eb558 commands: be more uniform in an "hg update" error message
"can only specify one of -C/--clean, -c/--check, or -m/merge"
becomes
"can only specify one of -C/--clean, -c/--check, or -m/--merge"
2017-10-23 22:45:24 +02:00
Yuya Nishihara
feaa3f8a8c mq: copy pager attributes back to qrepo.ui
If the legacy pager extension is enabled, a pager is started through repo.ui
at dispatch._runcommand(). After that, mqcommand() creates a qrepo with a
fresh repo.baseui, at which point pager information was lost and another pager
would be spawned by the modern pager interface.

This is a minimal workaround for the problem.
2017-10-21 13:42:43 +09:00
Joe Blaylock
f9b24c83ac help: fix typo in hg merge documentation 2017-10-20 14:15:46 -07:00
Yuya Nishihara
9172766ed5 extdata: abort if external command exits with non-zero status (BC)
Per the last discussion, this is more reliable and consistent way than
suppressing an error. For grep, erroring out might be inconvenient, but
for curl, non-zero exit status should be detected. The latter wouldn't be
possible if non-zero status is ignored.

https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-October/105727.html
2017-10-01 12:21:50 +01:00
Anton Shestakov
7f5566e502 hgweb: render next pages on /graph incrementally
Previously, when user scrolled down to see the next page on /graph, all hgweb
did was re-render everything that would be visible (by simply incrementing
revcount). It was not efficient at all, and this patch makes /graph page behave
similarly to the regular /log: every new page only consists of new changesets,
no duplication, and only jsdata is based on the full set of changesets required
to build accurate graph.

This is achieved by adding "?graphtop=<node>" to the next page URL template,
effectively remembering where the graph started, and using that value to create
the new `tree` that covers the whole visible graph. That variable is then used
to produce jsdata for redrawing graph client-side.

nextentry is used for the same purpose as on /log page (to format the next page
URL), but it's not a part of the graph.
2017-12-11 15:43:56 +08:00
Anton Shestakov
4d6d802ec6 hgweb: calculate <canvas> width and height client-side
hgweb determines and passes to templates some variables related to graph
appearance, like bg_height, canvaswidth and canvasheight. bg_height was and
still is used for graph.scale() call in graph.tmpl, and the two latter
variables were used in <canvas> element as width and height properties, and
they were set before JS code got to run. Setting these properties server-side
doesn't make a lot of sense, because a graph that has been scaled should
calculate things like width and height on its own when being rendered.

Let's move (re)sizing <canvas> to JavaScript (to Graph.render function) and
stop parsing HTML with regular expressions just to know new width and height.
That extra loop that only counts cols is required because <canvas> can't
be resized after or in the process of rendering (or it gets cleared).
Incidentally, SVG doesn't have this problem and I'm hoping to switch graph to
using it in future.

There also was truecanvasheight, but according to hg grep --all it was never
used, see f5506d2a674c.
2017-12-10 15:56:22 +08:00
Pulkit Goyal
8632444f59 py3: pass bytes from extension to ui.write() in test-revlog-mmapindex.t
This makes the test pass on Python 3.

Differential Revision: https://phab.mercurial-scm.org/D1674
2017-12-11 05:26:46 +05:30
Martin von Zweigbergk
14dfe2a25c memfilectx: make changectx argument mandatory in constructor (API)
committablefilectx has three subclasses: workingfilectx, memfilectx,
and overlayfilectx. committablefilectx takes an optional (change) ctx
instance to its constructor. If it's provided, it's set on the
instance as self._changectx. If not, that property is supposed to be
defined by the class. However, only workingfilectx does that. The
other two will have the property undefined if it's not passed in the
constructor. That seems bad to me. This patch makes the changectx
argument to the memfilectx constructor mandatory because that fixes
the failure I ran into. It seems like we should also fix the
overlayfilectx case.

Differential Revision: https://phab.mercurial-scm.org/D1658
2017-12-11 09:27:40 -08:00
Paul Morelle
f04d01e693 debuglocks: allow setting a lock 2017-11-12 15:34:46 +01:00
Paul Morelle
6d5adee26c debuglocks: add tests (and fix typo in early return) 2017-11-12 15:34:19 +01:00
Matt Harbison
7d8bebd9c1 tests: remove (glob) annotations that were only for '\' matches
# skip-blame because this was mechanically rewritten the following script.  I
ran it on both *.t and *.py, but none of the *.py changes were proper.  All *.t
ones appear to be, and they run without addition failures on both Windows and
Linux.

  import argparse
  import os
  import re

  ap = argparse.ArgumentParser()
  ap.add_argument('path', nargs='+')
  opts = ap.parse_args()

  globre = re.compile(r'^(.*) \(glob\)(.*)$')

  for p in opts.path:
      tmp = p + '.tmp'
      with open(p, 'rb') as src, open(tmp, 'wb') as dst:
          for line in src:
              m = globre.match(line)
              if not m or '$LOCALIP' in line or '*' in line:
                  dst.write(line)
                  continue
              if '?' in line[:-3] or ('?' in line[:-3] and line[-3:] != '(?)'):
                  dst.write(line)
                  continue
              dst.write(m.group(1) + m.group(2) + '\n')
      os.unlink(p)
      os.rename(tmp, p)
2017-12-10 22:50:57 -05:00
Matt Harbison
f849320c42 run-tests: stop automatically adding a (glob) for bundle backup lines
This is the first step to dropping the existing globs for '\' matches, now that
it is handled automatically.  Instead of just dropping it, this pattern is now
used to convert to '/' paths, to reduce the amount of manual cleanup required
when creating tests on Windows.
2017-12-10 19:21:48 -05:00
Anton Shestakov
d2fc494432 hgweb: implement json-graph
It's essentially a copy of json-log with graph-related things added (col, row,
color, edges).
2017-12-07 17:18:29 +08:00
Phil Cohen
27591b2ae0 rebase: replace --inmemory flag with rebase.experimental.inmemory config
Differential Revision: https://phab.mercurial-scm.org/D1666
2017-12-11 22:16:13 -08:00
Augie Fackler
c207c2b0a0 tests: add some commentary and diagnostics to test-run-tests.t
Hopefully this will give us a shot at fixing it on the Windows builder.

Differential Revision: https://phab.mercurial-scm.org/D1653
2017-12-11 09:37:11 -05:00
Phil Cohen
86be3bceed tests: add commit hashes to log commands in rebase tests
Commit hashes are a useful way to ensure the content of commits made in the
tests are not changing, even if we don't query every aspect of every commit.
(And some properties, like extras, are rarely printed at all.)

Many of the rebase log -G calls didn't show hashes; by adding hashes to places
that weren't showing them we can help protect those tests from unwanted
changes.

Differential Revision: https://phab.mercurial-scm.org/D1650
2017-12-10 21:57:37 -08:00
Phil Cohen
10f9b7c52d tests: add a simple test for in-memory rebase
This is just a very simple start, but verifies some of the basic cases of an
in-memory rebase.

Differential Revision: https://phab.mercurial-scm.org/D1652
2017-12-10 22:39:46 -08:00
Yuya Nishihara
2c190381f2 patch: do not break up multibyte character when highlighting word
This changes {\W} to {\W - any 8bit characters} so that multibyte sequences
are taken as words. Since we don't know the encoding of user content, this
is the most sensible definition of a non-word.
2017-12-11 22:38:31 +09:00
Matt Harbison
b2d78bc596 run-tests: accept '\' vs '/' path differences without '(glob)'
Having to constantly adjust these is a hassle.  It's easy for this to slip by
when not testing on Windows, and then when it happens on stable, the tests fail
for the next 3 months if we follow the rules for stable.

This works the same way the EOL differences are ignored, namely to adjust on the
fly and recheck on Windows.  I can't think of any situation where there would be
a '\' on Windows, a '/' elsewhere, and the '/' should be considered a failure on
Windows.

This fixes the obvious output problems where (glob) is missing.  Without this,
test-alias.t, test-remotenames.t and test-largefiles-misc.t are failing.  The
flip side (not handled by this) is the case where an unnecessary glob is
present.  There seems to be two separate behaviors.  f3517e22bfa1 is an example
of where the test has been autocorrecting (with output differences), and
ed159a9fcf2a is an example where the test fails and reports 'no result code from
test'.  Hopefully those cases will become even more rare if people don't need to
guess at when a glob is needed for a Windows path.

It's probably unreasonable to submit a single patch that wipes out all of the
(glob) instances that were only used to hide path differences, given the churn
from other contributors.  Since their presence isn't harming the tests, these
can be removed through attrition.
2017-12-10 00:16:11 -05:00
Matt Harbison
1a1aaf5b24 run-tests: suggest a (glob) for os.path.sep mismatches with '\r\n' EOL too
We already do this for lines ending in '\n', such that the test only needs to be
run with --interactive and the changes accepted at the end.  But that wasn't
working with list-tree.py output for example, and required manual fixup.
2017-12-10 00:00:36 -05:00
Matt Harbison
3dc05ee5ec tests: stabilize the sorted output of list-tree.py on Windows
The test-largefiles-misc.t test was moving 'dir2\' before 'dir\' because while
'/' precedes most of the printable ASCII characters, '\' comes after numbers and
capital letters, among other symbols.
2017-12-09 23:46:44 -05:00
Yuya Nishihara
822286f829 debugformat: embed raw values in JSON and template output 2017-12-10 19:41:49 +09:00
Yuya Nishihara
4087d826c3 debugformat: flush formatter output per item 2017-12-10 19:39:39 +09:00
Augie Fackler
88c872e24a tests: use Python to write binary data in lfs test instead of shell
The shell construct here appears to be unevenly supported: it works in /bin/sh
on FreeBSD, but it doesn't seem to work when /bin/sh is dash. Using a Python
inline directive works fine, so let's just do that instead.

Differential Revision: https://phab.mercurial-scm.org/D1636
2017-12-09 19:42:51 -06:00
Matt Harbison
3e757c482b lfs: restore the local blob store after a repo upgrade
This also ends up testing the local extension wrapping for dstrepo during
upgrade, which was fixed in f0a28956f345.
2017-12-08 00:18:30 -05:00
Matt Harbison
b798276c65 tests: add coverage for preserving 'lfs' requirement on repo upgrade
The test also shows that the local blob store is erroneously lost.
2017-12-07 22:36:31 -05:00
Matt Harbison
0474cfef45 test-upgrade-repo: glob away timing values 2017-12-07 22:35:19 -05:00
Pulkit Goyal
b53f06128c remotenames: rename related file and storage dir to logexchange
This patch renames remotenames.py to logexchange.py, test-remotenames.t to
test-logexchange.t. Also this patch renames the directory in which the data is
stored from remotenames to logexchange. After this patch, data about bookmarks
and branches from a server we pull is stored in
`.hg/logexchange/(bookmarks|branches)` files.

Thanks to smf for the suggestion.

Differential Revision: https://phab.mercurial-scm.org/D1607
2017-12-07 00:26:45 +05:30
Boris Feld
d8aa8e36d8 upgrade: add a 'redeltafullall' mode
We add a new mode for delta recomputation, when selected, each full text will
go through the full "addrevision" mechanism again. This is slower than
"redeltaall" but this gives the opportunity for extensions to trigger special
logic. For example, the lfs extensions can decide to promote some revision to
lfs storage during the upgrade.
2017-12-07 20:27:03 +01:00
Boris Feld
826e838aa1 upgrade: use the repository 'ui' as the base for the new repository
The `repo.baseui` contains all the configuration but the one specific to the
repository (so it can be used when dealing with local peer and sub-
repository). However, we need the repository config to be taken into account
when doing the upgrade. Otherwise, the upgrade related config that exists in
the repository config won't be taken into account when performing the update.
A buggy and surprising behavior.

We had to work around protection set around `repo.ui.copy` since we are an
uncommon case.
2017-12-07 18:55:35 +01:00
Boris Feld
5c9784830a upgrade: add a test to show the repository config being ignored
The upgrade process ignores the config within the repository. The next
changeset fixes it, but we introduce this test before to show it actually
tests our target.
2017-12-07 20:50:24 +01:00
Boris Feld
9f250d48c5 upgrade: register compression as a format variants
Compression is a promising vector for speedup, let us make it easier to check
the compression used and upgrade existing repository.
2017-12-07 16:50:48 +01:00
Boris Feld
c2382c14ab debugformat: update label depending on value difference
The new label highlight areas where the repo format differs from current
config or default. This should help people spot area where a repository
mismatch with the expected state.
2017-12-07 16:12:32 +01:00
Boris Feld
5ef878754c debugformat: add data about the config when verbose
In verbose mode, the command also displays the current configuration choice
for the variant and the global Mercurial default for it.
2017-12-07 16:05:20 +01:00
Boris Feld
3b270be25b debugformat: add a 'debugformat' command
The command displays basic data about all format variants registered for repo
upgrades. This gives a quick way to peek into a repository format.

The 'fm.write()' calls are very independent because more data will be added in
later changeset. Having more separate call make the later patch clearer.
2017-12-07 16:19:46 +01:00
Augie Fackler
be4248f051 tests: glob away ' that doesn't occur on all platforms in lfs test
Differential Revision: https://phab.mercurial-scm.org/D1623
2017-12-08 23:48:23 -05:00
Pulkit Goyal
3e6a480b54 clone: add support for storing remotenames while cloning
If `experimental.remotenames` is set to True, we store the remotenames in case
of `hg pull`. This patch adds that support to clone command also.

Differential Revision: https://phab.mercurial-scm.org/D1601
2017-12-06 06:40:27 +05:30
Matthieu Laneuville
eb58359793 patch: move part of tabsplitter logic in _inlinediff
It cannot be entirely moved within _inlinediff as long as worddiff is
experimental (when turned off, matches is always an empty dict).
2017-12-08 17:20:11 +09:00