Summary: The module name was changed.
Reviewed By: sfilipco, xavierd
Differential Revision: D19609573
fbshipit-source-id: 7ac812c339b363dab52c942581ee10ca3e607061
Summary:
Adds from past.builtins import basestring if there is a basestring
libfuturize.fixes.fix_basestring
Reviewed By: quark-zju
Differential Revision: D19588358
fbshipit-source-id: ed2a48372bda3768183e09cd0758ad12471b0cf7
Summary:
Deal with a few more minor string/bytes issues in Python 3, and also drop a
reference to the `long` type, which no longer exists in Python 3.
Reviewed By: xavierd
Differential Revision: D19596744
fbshipit-source-id: d7dca9306934aa6bf8c17bada6f6c1a40130027f
Summary: Update this function to work on `str` data types in both Python 2 and 3.
Reviewed By: xavierd
Differential Revision: D19596742
fbshipit-source-id: 6140d2a7644dbf60c9a22c4e482757466648d5a1
Summary:
Drop the use of `re.LOCALE`. In Python 3.6+ this flag can only be used with
bytes patterns. None of these regexes actually use the \w, \W, \b, or \B
patterns that would be affected by this setting.
Reviewed By: xavierd
Differential Revision: D19596747
fbshipit-source-id: e26ed5ac6d0378e1830c67ae7c018ccb56b7609a
Summary: in python3, print becomes a function, import print_fuction to use in python 2.(ran fix_print_with_import)
Reviewed By: lisroach, quark-zju, sfilipco
Differential Revision: D19588356
fbshipit-source-id: b7cf519058ae3909ba7813618719bbd09800e73a
Summary: This is incorrectly removed due to a bad rebase / merge.
Reviewed By: DurhamG
Differential Revision: D19607801
fbshipit-source-id: a6ee7a3f184ff1882eb1f1513f7fed74a7108727
Summary:
See D17098991 for our encoding strategy.
This diff changes the i18n module to prefer unicode on Python 3.
Reviewed By: xavierd
Differential Revision: D19594826
fbshipit-source-id: 011110f3cad7aa89b729f5a86b66168fcd5a7e36
Summary:
This makes `make hg3` work. It requires cleaning up the `build` directory when
switching between py2 and py3 build, which will be fixed later.
Reviewed By: DurhamG
Differential Revision: D19604824
fbshipit-source-id: 060ff313420126a5dba935c4451b45dc9af45f13
Summary:
As of D17098991, all the data output data we write should be Unicode, so this
explicit call to `encode()` if we are running Python 3 should no longer be
used.
Reviewed By: xavierd
Differential Revision: D19596741
fbshipit-source-id: b05d94dcb9859c6ceff4bfae130550101ad3f47d
Summary: Produce a -Wdeprecated-declarations warning in code that uses the old SYNCHRONIZED macros.
Reviewed By: yfeldblum
Differential Revision: D19567088
fbshipit-source-id: b0637c06cbd125d09e1b39eec1e82a71ddca2324
Summary:
The `ui.setconfig()` code attempts to escape lists, and checks for them by
looking if the config value has an `__iter__` attribute. However, in Python 3
both `str` and `bytes` types have an `__iter__` method, so the setconfig
code incorrectly treated them as a list.
This re-orders the code so that `str` types are explicitly handled before the
check for iterable types.
Reviewed By: xavierd
Differential Revision: D19596740
fbshipit-source-id: 3c52d3e8d5b68fd2d561651bd1858889cdbe0ccb
Summary:
Update the pyconfigparser library so that it returns config values as
`unicode` in Python 3.
Most of the Python code already accesses config items with `str` keys,
but a few `.pyx` files were explicitly using bytes and needed to be updated to
use string keys.
Reviewed By: xavierd
Differential Revision: D19596746
fbshipit-source-id: fbeb363639b2256c57311bea996c4b371e068ae8
Summary:
Update the configparser APIs to return errors as a list of `Str` rather than
`Bytes`. The Python code already expects the errors as `str`, so this makes
the code do the right thing with Python 3.
Reviewed By: xavierd
Differential Revision: D19596745
fbshipit-source-id: 027c33d76b3a3b800de34366232285591841a900
Summary: Add methods to convert to a `Str` object from `String` and from `Vec[u8]`
Reviewed By: xavierd
Differential Revision: D19596743
fbshipit-source-id: 6499f7f1b8329f4d14ce8179a41ed46982a85c8e
Summary: This test tests Mercurial printing the correct encoding when the system is set to Japanese locale (CP932). The escape.py used in this test isn't Python 3 compatible due to byte-related operations. This diff makes it Python 3 compatible.
Reviewed By: quark-zju
Differential Revision: D19592535
fbshipit-source-id: 114dfcb004805045163be4a636ac703b4d24ea32
Summary: Apparently we tried to open an image file directly with `open()`. This does not work in Python 3 as it tries to read the file as string instead of bytes.
Reviewed By: farnz
Differential Revision: D19589327
fbshipit-source-id: 9c6388b704860f1f5dec199562741ac6e191d928
Summary: This makes the `dummyssh` script Python 3 compatible so we can run it with Python 3 in tests
Reviewed By: sfilipco
Differential Revision: D19587078
fbshipit-source-id: 134b01f4d5e968cd9600c9358c7230a56e11f163
Summary: Update to the new version of rust-cpython. This supports `list.append`, so make use of it.
Reviewed By: xavierd
Differential Revision: D19590905
fbshipit-source-id: 03609d4f698ae8e4380e82b8144caaa205b4c2d4
Summary:
This is optional for Python 3.6. But Python 3.8 shows a warning at runtime
without the fix.
Reviewed By: quark-zju
Differential Revision: D19581191
fbshipit-source-id: a47453f2fab92faeb6597900b9c38d1239d5ed79
Summary: most instances of this `__non_zero__` ->` __bool__` were already aliased upstream, just updates some cases in which it was not.
Reviewed By: lisroach, quark-zju, sfilipco
Differential Revision: D19591210
fbshipit-source-id: 624fcfbb35b463f2660a47ca50d28d3dcd9e2cb0
Summary: Use UTF8 paths and flags. Node, and the manifest text remain bytes.
Reviewed By: xavierd
Differential Revision: D19581190
fbshipit-source-id: f6f3c561bc5d3663f20513654bea65066a669d34
Summary:
`Py_BuildValue("s#")` returns str. Revlog uses it for nodes, which must be
bytes. Change "s#" to "y#" for bytes.
Reviewed By: xavierd
Differential Revision: D19581197
fbshipit-source-id: b925ea8f26abff49ec4feafe579f00f68cee330e
Summary:
Make `make hg3` run the python3 version of the build. There are some
Cargo.toml thing to fix. But this is a start.
Reviewed By: xavierd
Differential Revision: D19581181
fbshipit-source-id: 711a02ec0c8384f2ca3e61ead66db1e89a30837c
Summary:
Remove "b" prefix so strings become unicode.
The drawdag module was not affected by the upstream source code transformer [1]
so they added the b prefix. But drawdag is high-level enough that bytes
shouldn't be used.
[1]: https://www.mercurial-scm.org/repo/hg/rev/1c22400db72d
Reviewed By: simpkins
Differential Revision: D19581175
fbshipit-source-id: 7ae5f37af1d5145d8bac4ea82ac5ad856d83ae19
Summary:
See D17098991 for our encoding strategy.
This diff changes the urllibcompat module to prefer unicode on Python 3.
Reviewed By: farnz
Differential Revision: D19595738
fbshipit-source-id: 53ce76f8703fa0f4885f3042049d9c5fae4bc47c
Summary:
See D17098991 for our encoding strategy.
This diff changes the pycompat module to prefer unicode on Python 3.
Reviewed By: farnz
Differential Revision: D19594828
fbshipit-source-id: 3e6db24a2ebaed69deb68908f19e9b462f62c350
Summary:
See D17098991 for our encoding strategy. tl;dr, paths, argv, messages, terminal
(not pipes or files) stdout are utf-8. Non utf-8 paths are unsupported (as they
will have issues on Windows anyway).
This diff changes the encoding module to prefer unicode on Python 3.
Reviewed By: simpkins
Differential Revision: D19594827
fbshipit-source-id: c5c1319d840709bc752b96bed6ca80d10f49669e
Summary:
In Python 3 we'd like hex to return unicode strings. Provide APIs for them.
The old bytes version remain as `bbin` and `bhex`.
Reviewed By: markbt
Differential Revision: D19592521
fbshipit-source-id: 1a06ac82e3061c631c0da5d5124610656bdecaee
Summary:
The native implementation of "dirs" uses too much PyBytes internals that it's
not easy to migrate to unicode. For now let's disable the native path to
unblock Python 3 process.
Looking at the usage of dirs, it is unclear whether it is still a critical path
for performance, as scaning through all files in manifest even with the C dirs
is still too slow and we probably want time complexity fixes (ex. make it
lazy).
Reviewed By: markbt
Differential Revision: D19581192
fbshipit-source-id: 59bb2a187f675df01b4385bf4bce255f173a0aa3
Summary:
It is optional and has many encoding issues. So let's disable it for now to
unblock progress.
Reviewed By: markbt
Differential Revision: D19581182
fbshipit-source-id: 820da07dfe214a3abcd7cbf819b73dbe493c3bcc
Summary:
This removes a warning:
scm3/edenscm/mercurial/thirdparty/selectors2.py:39: DeprecationWarning: Using
or importing the ABCs from 'collections' instead of from 'collections.abc' is
deprecated since Python 3.3, and in 3.9 it will stop working
Reviewed By: markbt
Differential Revision: D19581179
fbshipit-source-id: d311b4df4cdb35527c8ab9d4a41ae306ddb2ab03
Summary:
D18213028 made amend and metaedit use a transaction around the
dirstate. This appears to have broken some auto-restack flows (T61073763). Let's
back it out for now then I'll debug later.
Reviewed By: quark-zju
Differential Revision: D19581912
fbshipit-source-id: cce32efdc91be9ca301da26a0e26b50aa6aa92d4
Summary:
Also, add a util::path::strip_unc function that is more clear than the
normalize_for_display
Reviewed By: DurhamG
Differential Revision: D19595961
fbshipit-source-id: 330bcb708bf64320a3562d79db685d6cb1e14f16
Summary:
For Python3 compatibility, let's use PyPath, it hides the logic of encoding for
Python2
Reviewed By: DurhamG
Differential Revision: D19590024
fbshipit-source-id: 7bed134a500b266837f3cab9b10604e1f34cc4a0
Summary:
In Python 3 this causes problems trying to mix bytes with str. This does not
appear to be used anywhere, so delete it.
Reviewed By: farnz
Differential Revision: D19591564
fbshipit-source-id: 42b8720e440e8e7c901b325aecb1343d5b79b7cc
Summary:
These call sites are hit during initialization. They all appear to be
small-ish dictionaries so the performance hit of having this iteration be
non-lazy in Python 2 should not matter much.
Reviewed By: farnz
Differential Revision: D19591565
fbshipit-source-id: 324844d64ba63f6e379aab270e453d44a02063e9
Summary:
Our plan for switching to Python 3 is to update many types to use Unicode
strings when appropriate. In particular, we should just go ahead and use
Unicode for environment variables, since this is the Python 3's default
behavior.
This drops the check-code.py check that warns developers against using
`os.environ` directly, and converts several call sites to use `os.environ`
directly instead of using `encoding.environ`
Reviewed By: markbt
Differential Revision: D19591566
fbshipit-source-id: e4ac44dcd5f19cd0bf65ac904fc85edad95a9aed
Summary:
We won't need it as we're going straight to dual-compatible code instead of
transforming it.
Reviewed By: quark-zju
Differential Revision: D19588132
fbshipit-source-id: 100f19b3e29874de9e8d48692c42cb2d5856bf5a
Summary:
This is optional, but it helps investigating Python errors chained with other
Rust errors.
For example:
error.RustError: failed fetching from store (, cc38739855a7f356b4a2aaac0a0a858fd646e6bf)
Caused by:
TypeError()
Traceback (most recent call last):
File "scm3/edenscm/hgext/remotefilelog/contentstore.py", line 53, in get
chain = self.getdeltachain(name, node)
File "scm3/edenscm/hgext/remotefilelog/contentstore.py", line 91, in getdeltachain
chain = self._getpartialchain(name, node)
File "scm3/edenscm/hgext/remotefilelog/contentstore.py", line 125, in _getpartialchain
return store.getdeltachain(name, node)
TypeError
Without this diff there is only "TypeError()" without the traceback.
This can be turned off by unsetting RUST_BACKTRACE.
Reviewed By: markbt
Differential Revision: D19581173
fbshipit-source-id: 74605b78146b6b1c9ddd5ad720dcd19ff73908a8
Summary:
In the case that the overlay was closed before the initial
createOverlayFile, prevent an invalid OverlayFile from being accessed,
causing the test to fail.
Reviewed By: genevievehelsel
Differential Revision: D19591636
fbshipit-source-id: 9d961f044c3b68b5c0b2dcd108ff85db6326276d
Summary: The format_err is used in shared code too, we need to import it.
Reviewed By: quark-zju
Differential Revision: D19592591
fbshipit-source-id: bd344bf3c295473f4647235a98432d11c9678bf9
Summary:
This will be used as an argument to the Rust bindings when using paths. This
type is either a PyBytes in Python2 and uses the various encoding function to
convert into a String, or a PyUnicode in Python3 with no encoding change.
Reviewed By: farnz
Differential Revision: D19587890
fbshipit-source-id: 58903426585693193754691fe3c756b9097b35f6
Summary:
Without this, Rust code using the feature (ex. lz4, used by lz4revlog) will
panic.
Reviewed By: sfilipco
Differential Revision: D19581188
fbshipit-source-id: b499449df4fede27fe66cf8e5af57e8347a0dd48
Summary: This converts to bytes on Python 2, but unicode on Python 3.
Reviewed By: markbt
Differential Revision: D19581180
fbshipit-source-id: 0de9056a01ae30810a72352387de5a940b37d7ab
Summary:
In a future diff, I have RepoPath in Rust and want to send unicode path to
Python.
Reviewed By: sfilipco
Differential Revision: D19581184
fbshipit-source-id: 73a03707a6bdae4a497a8ee2c14314aa4ffefb6d
Summary: The docs promise that both `<` and `>` bounds are inclusive, so let's fix that.
Reviewed By: markbt
Differential Revision: D19580840
fbshipit-source-id: 13770a8e9351fe62f58e9a701b526a167752543a
Summary: I reproduced the KeySpace.cpp ICE on my Windows 10 VM, so bump the MSVC version check. I have not confirmed it does not ICE on MSVC 2019.
Reviewed By: pkaush
Differential Revision: D19562325
fbshipit-source-id: 03cf84e95c709bb2ebe7c3e0055a4f290eb17f8a
Summary: This code is no longer used now that `eden redirect` exists.
Reviewed By: wez
Differential Revision: D19565010
fbshipit-source-id: 4703bc39a024c4c491a83ef5a6e85711a8f7e4d8
Summary:
Separate Segment and IdDag in two individual files. This is preparation for
refactoring IdDag to be more flexible in terms of storage. That will probably
involve moving stuff out of IdDag into a new file that deals with the storage
abstractions.
Reviewed By: quark-zju
Differential Revision: D19559127
fbshipit-source-id: b3b9b18e2653157e69148b1f29292a57b30016ec
Summary:
Add `test-rebase-mutation.t`, based on `test-rebase-obsolete.t`, but instead
testing specifically for mutation and visibility behaviour.
Reviewed By: xavierd
Differential Revision: D19549473
fbshipit-source-id: c993686eab47985737eef17ab0f52f31d0929159
Summary:
Enable mutation and visibility for the existing tests that use evolution.
Excludes `test-rebase-obsolete.t` which specifically targets obsmarkers - this
will be converted to a new test in D19549473.
Reviewed By: quark-zju
Differential Revision: D19502220
fbshipit-source-id: 70b2828b60220c6887a6210e91bed01c2809cc51
Summary:
Disallowing instabilities is a feature of evolution. For mutation tracking
there is no problem with instabilities.
Reviewed By: quark-zju
Differential Revision: D19502221
fbshipit-source-id: c21a5021bf1a8b29abb6635928da50895e2cec33
Summary:
Rebase with `--collapse` should behave like `fold` and set all the rebased
commits as predecessors of the new commit.
Reviewed By: quark-zju
Differential Revision: D19502223
fbshipit-source-id: a903ee5647bb4ee947a6cc68d8ca791fe0f1299d
Summary:
When cloning a repo, ensure the store requirements and visibleheads files are
included in the clone.
Reviewed By: quark-zju
Differential Revision: D19502224
fbshipit-source-id: e3ead586fb1fe10def02d55e33810643c0c78bc8
Summary:
`hg clone` can hardlink store files if the repos are on the same device. This
means we need to write out the legacy files using an atomic temp file, so that
the hardlink is broken. This also makes sure anyone watching the file sees the
change atomically.
Reviewed By: quark-zju
Differential Revision: D19502222
fbshipit-source-id: 3e9fb35846111c9d924de3c6b6861ce5e295e035
Summary:
The visibleheads file should be journaled like the other state files, so that
it is rolled back if a transaction aborts.
Reviewed By: quark-zju
Differential Revision: D19502226
fbshipit-source-id: c2b8d926ce97211411ca01f05e83e62cb77625b9
Summary:
The `incoming` command works by creating a bundlerepo and then updating the
commits as if a pull occurred. This means the visibleheads can get updated,
which was previously assumed impossible.
We can just accept the new set of visibleheads as-is. There may be some
unnecessary heads that are covered by other heads, but since the bundlerepo
is short-lived, this isn't a problem.
Reviewed By: quark-zju
Differential Revision: D19502219
fbshipit-source-id: ce9e98c6a40f96f5305bc7580efb476d5264fc88
Summary: It's possible for the workingctx to be queried for obsolescence. Make sure it is not considered to be obsolete.
Reviewed By: quark-zju
Differential Revision: D19502225
fbshipit-source-id: a1a37afd39a0fc16f95b4eb917372f193ac3fe82
Summary:
It's not often obvious to people where edenfs.log is located on the
filesystem, so redirect people to `eden debug log` instead.
Reviewed By: simpkins
Differential Revision: D19560709
fbshipit-source-id: 6b031c80bab2c21dfddba4d7ec37d4e70218ea08
Summary: 90% of the time, it's more useful to see the end of the log than the beginning.
Reviewed By: simpkins
Differential Revision: D19560473
fbshipit-source-id: f9b5a922d284053d6afc8ea889586826e3c58582
Summary: The fbcode/linttool has been updated to support lua and sql here D19467627, so updating arc rules to cover the new extensions
Reviewed By: zertosh
Differential Revision: D19534326
fbshipit-source-id: 4e615653acedcdf2da88e7dc4b443ad22af1324f
Summary:
I wrote it to understand how renderdag draws the same graph with different
orders. It seems useful for future optimization that tries to reduce the number
of columns. So let's check it in.
Reviewed By: xavierd
Differential Revision: D19440713
fbshipit-source-id: 8bc580799f6b24c87886d5ac306020f50bb694e5
Summary: This gives us some confidence about octopus merge handling.
Reviewed By: DurhamG
Differential Revision: D19540726
fbshipit-source-id: e84de74aecae54429483edd185d39fd1bd858f87
Summary:
TestContext uses ParentRevs. That limits parents to at most 2.
Use a type parameter so we can opt-in Vec<usize> for octopus merge support,
at the cost of worse cache efficiency.
Reviewed By: DurhamG
Differential Revision: D19540727
fbshipit-source-id: f9e8de151b7b296fd6f0fd89be9de2b8996634c7
Summary:
Our new algorithms support octopus merges. However there were no tests using
octopus merges. This diff adds a simple one.
Reviewed By: DurhamG
Differential Revision: D19540728
fbshipit-source-id: 8411024f0b7e27c2ebfabbe1935496124c25df7b
Summary:
The test runs the old and new algorithm and compares their result. This is more
interesting than using random numbers, since the fuzzing framework will try to
explore new code paths.
Reviewed By: sfilipco
Differential Revision: D19511576
fbshipit-source-id: e9a2066769b54a60bb92643e5715f91a6fccbcb5
Summary:
The ported algorithm will work as a comparison to verify dag's range
implementation.
Reviewed By: sfilipco
Differential Revision: D19511574
fbshipit-source-id: 589353d6e6c91b8d6707c977eeb8558ac733b525
Summary:
Now that loading too many blobs only GCs the blob cache, treat cached
trees as ephemeral again.
Reviewed By: simpkins
Differential Revision: D19358375
fbshipit-source-id: 191427f46276f0f5d024b5bc923a68f7a42044da
Summary:
The Rust Manifest is deployed practically everywhere.
Removing the C++ code from being compiled in Mercurial along with all of the cstore extension.
Reviewed By: quark-zju
Differential Revision: D19543248
fbshipit-source-id: d632e171175e6866563c1aa0808a099b67bd937d
Summary: Revision numbers are deprecated, let's not print them in the bisect output.
Reviewed By: DurhamG
Differential Revision: D19539678
fbshipit-source-id: 29bca3ee38cb390bdef8dd88cb912aa3dc452065
Summary: Revision number are deprecated, remove it from the user output.
Reviewed By: DurhamG
Differential Revision: D19539679
fbshipit-source-id: 7fc618e832e0e5bb3464d2ed04967b062b6f182a