Commit Graph

7813 Commits

Author SHA1 Message Date
Muir Manders
2ac1872674 tests: kill test-fb-ext-treemanifest-convertflat.t
Summary: We don't care about flat manifest anymore, and it would be work to update this test to use modern repo format.

Reviewed By: quark-zju

Differential Revision: D42748901

fbshipit-source-id: fd67adf9992b45264a100b5838866ea35d6ad7ff
2023-01-31 12:25:37 -08:00
Muir Manders
8daadd0716 status: enable rust status in test-fb-ext-tweakdefaults.t
Summary:
This test had a real failure where the new status wasn't respecting HGPLAIN to force root-relative paths in the output. It is safer to keep that behavior since we presume some automation would break if we changed to show cwd-relative paths unconditionally.

To use the native status I had to change this test to use modern repo format. That broke some use of revision numbers, so I tweaked tweakdefaults to respect the devel.default-date option to get stable commit hashes (so I could use those instead of revision numbers).

Reviewed By: quark-zju

Differential Revision: D42748900

fbshipit-source-id: 3358c659d5c67e781723720fcb2f760518d7d46f
2023-01-31 12:25:37 -08:00
Muir Manders
11f804ac3d hgcommands: enable "backtrace" feature for anyhow
Summary: This allows RUST_BACKTRACE=1 to work for "make local" builds. I believe buck uses nightly which should get backtrace enabled by default.

Reviewed By: quark-zju

Differential Revision: D42748902

fbshipit-source-id: fdd9473f1c0250a117c83b9637a6e23e0df26da4
2023-01-31 12:25:37 -08:00
Muir Manders
f360ac6b8c color: use "backslashreplace" instead of "replace" for invalid utf8
Summary: This way the user can see the original byte values.

Differential Revision: D42889478

fbshipit-source-id: 7876787180136cdd86839913eba77cad44115ce3
2023-01-31 11:31:48 -08:00
Muir Manders
eab63a2b60 color: don't crash styling non-utf8 strings
Summary: Make sure we only pass valid utf-8 strings to Rust's text styling.

Reviewed By: quark-zju

Differential Revision: D42886530

fbshipit-source-id: 2dc7f1ade57d3324997aa9c9a111016cfef51e07
2023-01-31 09:15:10 -08:00
Muir Manders
32018072c6 tests: fix test-import-git.t
Summary: Switch to modern repo config to resolve "hg status" errors. Somehow missed this one (I probably assumed it was a test using git instead of an hg test importing git diff format).

Reviewed By: sggutier

Differential Revision: D42863480

fbshipit-source-id: 9d595954fb7f7c9693b6d91ef9485acdc37ddc2d
2023-01-30 17:26:30 -08:00
Andres Suarez
00b1f93276 Update tokio-1.21.2 to tokio-1.25.0
Reviewed By: diliop

Differential Revision: D42837228

fbshipit-source-id: 5e891cf1ff8ab1beff6e3c845b913144655778ea
2023-01-30 14:49:36 -08:00
Jun Wu
d7d50df449 checkserverbookmark: remove extension and test
Summary:
`checkserverbookmark` was added by D15450801 (865b8b3a46) for early Mononoke migration.
It is no longer relevant.

Reviewed By: zzl0

Differential Revision: D42823312

fbshipit-source-id: f120255c4c33b919718e46052967d28e7ab772a4
2023-01-30 14:01:19 -08:00
Jun Wu
445af61f11 conch_parser: move Python bindings to bindings module
Summary:
Previously, `conch_parser` was built as a separate Python module (`.so`)
so it is not distributed with the main executable, for portability and
binary size considerations.

However, it's annoying to maintain a separate Python module, for example,
buck macOS build would have issues importing it. The binary size concern also
seems minor: stripped Linux binary increases from 43174872 to 43537624 bytes,
+363KB, less than 1%.

Therefore, let's just embed `conch_parser` directly for better macOS support.

`conch_parser` is kept in case someone wants to build a standalone Python extension.

Reviewed By: zzl0

Differential Revision: D42822105

fbshipit-source-id: 287f25aa1860836a3c7df913233b9cb92d6fd0e3
2023-01-30 10:56:17 -08:00
Jun Wu
e6f09028ba changelog: support migrating from lazy to lazytext
Summary:
Teach `debugchangelog --migrate lazytext` to fetch commit hashes and migrate
the repo to not using lazy commit hashes, which supports
`devel.segmented-changelog-rev-compat` for compatibility with legacy tests.

Reviewed By: muirdm

Differential Revision: D42788588

fbshipit-source-id: b95045bba48f4fbc5c10d94780656163f1335587
2023-01-30 10:55:11 -08:00
John Billings
7bbe6fbaf2 Upgrade indexmap
Summary: Upgrade indexmap from 1.9.1 to 1.9.2, enable new `arbitrary` feature.

Reviewed By: morphmeme

Differential Revision: D42780598

fbshipit-source-id: f8b5df50352824aa8fcf864090e53669faae7b8c
2023-01-29 11:17:39 -08:00
Zhaolong Zhu
29bf7a4cef copytrace: use gitcopytrace in Python code
Summary: integrate `gitcopytrace` with Python code to detect renames in for Git repo

Reviewed By: quark-zju

Differential Revision: D42790306

fbshipit-source-id: 396574641e4c09caf3db3f80c0a3622cc5bcfd12
2023-01-27 19:02:01 -08:00
Jun Wu
f865734583 test-dirstate-nonnormalset: remove the test
Summary:
The test was intended to check that the nonnormalset is a subset of files
tracked by dirstate. Previously the nonnormalset is tracked separately so
it can be buggy and include files not in the main dirstate map. But the
TreeState format enforces the nonnormalset to be a subset of files tracked
by TreeState (dirstate). Therefore the test is no longer relevant.

Reviewed By: sggutier

Differential Revision: D42818816

fbshipit-source-id: 24277f4cd16efc82ac803e1ff2b5b53941289abd
2023-01-27 15:10:14 -08:00
Mark Shroyer
88ddf0c403 Make hgmain depend on identity crate based on with_chg feature
Summary: This way we stop hardcoding platform-specific deps for individual unix-like operating systems. A step toward unblocking building on FreeBSD.

Reviewed By: muirdm, quark-zju

Differential Revision: D42685396

fbshipit-source-id: e8c2e08042ae3ca2ba7121947ff7604ee77212c0
2023-01-27 14:40:56 -08:00
Zhaolong Zhu
bdbcfa045b copytrace: bindings for GitCopyTrace
Summary:
Thin Wrapper around GitCopyTrace, it can be used in pathcopies
function for detecting Git file moves.

Reviewed By: quark-zju

Differential Revision: D42787243

fbshipit-source-id: ebbb5e092c0f162d42e66420e644b9488c6b6bec
2023-01-27 13:01:54 -08:00
Zhaolong Zhu
4ba25be7e1 copytrace: add GitCopyTrace Rust lib
Summary: This is a temporary solution to unblock hg-over-git use case, specifically detect renames

Reviewed By: quark-zju

Differential Revision: D42787244

fbshipit-source-id: 37edfc8efbb8a6229a3c2a5bdc3309cf2a89ae3c
2023-01-27 13:01:54 -08:00
Zhaolong Zhu
bb149840db copytrace: add test-git-rename.t
Summary:
add test for git rename, confirm it does not detect renames. After we
complete the feature, this test should fail and need to update.

Reviewed By: quark-zju

Differential Revision: D42787246

fbshipit-source-id: b65c454b3abf1cf7b25e5a501e3b4c652940a834
2023-01-27 13:01:54 -08:00
Matthew strager Glazar
731ba0459c oss: make 'make tests' run Python tests (#458)
Summary:
oss: make 'make tests' run Python tests
'make check' tries to run 'make tests', but despite being documented, the
'tests' target does not exist in the Makefile.

Create a 'tests' target which runs the Python test suite.

Pull Request resolved: https://github.com/facebook/sapling/pull/458

Test Plan:
$ make oss
    $ make check
    [bunch of failures]
    $ (cd tests && python run-tests.py test-debugcheckcasecollisions.t)
    ----------------------------------------------------------------------
    # Ran 1 tests, 0 skipped, 0 failed.

 ---
Stack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/sapling/pull/458).
* https://github.com/facebook/sapling/issues/459
* __->__ https://github.com/facebook/sapling/issues/458

Reviewed By: muirdm

Differential Revision: D42742607

Pulled By: zzl0

fbshipit-source-id: 790624f28da629fe25846d1dde1fad2aa3382911
2023-01-27 10:44:33 -08:00
Thomas Orozco
cf3efd7672 third-party/rust: update cc
Summary:
If you ran autocargo right now on master it would fail because of this. I need
to run it later in this stack, so let's fix it.

Reviewed By: lmvasquezg

Differential Revision: D42776200

fbshipit-source-id: c95a8f0e5d34a99b11a069752fbfbde568fbecac
2023-01-27 05:07:50 -08:00
Jun Wu
b805766dd5 clidispatch: add a config option to set indexedlog checksum length
Summary: In case we want a different value, we can use this config option.

Reviewed By: muirdm

Differential Revision: D42783555

fbshipit-source-id: d3d7e1036db4635be45ecc61b0f521552dca6f75
2023-01-26 14:50:21 -08:00
Jun Wu
1492879b4e indexedlog: add a global config to set checksum chain length
Summary:
While D42626678 provides a way to set the max chain length per index, it's
annoying to update all users of indexedlog. Add a global option so we can
just update once for all.

Reviewed By: muirdm

Differential Revision: D42783554

fbshipit-source-id: 8bffe6de4225560c59da207f321fdaa2b65e25a1
2023-01-26 14:50:21 -08:00
Jun Wu
0a544add74 indexedlog: move config variables to a module
Summary: Move global configuration to a module to make it clear that those are configs.

Reviewed By: muirdm

Differential Revision: D42783055

fbshipit-source-id: d725946f1198199c9a40c612c435a60d62838e0d
2023-01-26 14:50:21 -08:00
Jun Wu
4b465a76df indexedlog: fix "race detected" during RotateLog::sync
Summary:
See the previous diff for context. This diff relaxes the metadata check to only
check the log length without checking indexes. This should resolve the race
condition.

The index uses persistent data structure with explicit pointers (offsets) so
data appended by another process would simply be ignored without causing
issues.

Reviewed By: muirdm

Differential Revision: D42627387

fbshipit-source-id: 5e776a8c6b34eeb6eefbb78f249fd99c7bd05b02
2023-01-26 14:50:21 -08:00
Jun Wu
8fc0ef156e indexedlog: add a test to reproduce "race detected" issue
Summary:
This reproduces the "race detected" error that sometimes happens.

Sample error:

  race detected, callsite responsible for preventing races
  (old meta: LogMetadata { primary_len: 500036164, indexes: {"2-node_and_path": 226025125}, epoch: 4118705755139574402 }
  ,new meta: LogMetadata { primary_len: 500036164, indexes: {"2-node_and_path": 235143143}, epoch: 4118705755139574402 })

Reviewed By: muirdm

Differential Revision: D38261693

fbshipit-source-id: c0b909531616bca9622afcf6d0541706a1056dd0
2023-01-26 14:50:21 -08:00
Jun Wu
ecfa1c154a indexedlog: optimize checksum linked list
Summary:
The checksum entry could form a long linked list that takes time to read from
disk. Add a way to "flatten" the chain so the linked list length could be reset
to 1 from time to time for optimized load time.

Reviewed By: muirdm

Differential Revision: D42626678

fbshipit-source-id: 57f13c235939ac416c6871eae7ec4e72b2c72f8e
2023-01-26 14:50:21 -08:00
Jun Wu
84d62aa7d4 runtests: support --time on Windows
Summary:
On Windows, `os.times()` does not provide a meaningful `elapsed`:

  In [1]: os.times()
  Out[1]: nt.times_result(user=1.921875, system=1.3125, children_user=0.0, children_system=0.0, elapsed=0.0)

Replace it with `time.monotonic()` so the wall clock time works on Windows.

Reviewed By: muirdm

Differential Revision: D42718496

fbshipit-source-id: dd1bfc313201cc6d321ee23397168d3981d03ffb
2023-01-26 13:30:19 -08:00
generatedunixname89002005307016
5f2af9ade3 Add annotations to eden/scm/edenscm/branchmap.py
Reviewed By: quark-zju

Differential Revision: D42773222

fbshipit-source-id: b3eecd913174dc6ea923f93019e6ff6769c49c1a
2023-01-26 10:32:25 -08:00
Muir Manders
99f069546b status: fix native status for git repos
Summary:
Teach Repo::file_store() and tree_store() to use the gitstore for git repos.

I also had to avoid a git store tree query for empty repos since git doesn't like our null ID.

Reviewed By: quark-zju

Differential Revision: D42711084

fbshipit-source-id: 399431d1478e9bcb1ffadb08e6bca0ed54f863a3
2023-01-26 09:17:43 -08:00
Muir Manders
ee53deebbe config: avoid loading external config files in tests
Summary:
The built-in git config file has an %include for /etc/mercurial/git_overrides.rc. Test were sensitive to this file, which is undesirable.

Fix in the easiest way possible by truncating the static config in tests starting from the first "%include".

I first tried to fix in a general way by refsuing to load any config files in tests unless they are under $TESTTMP. That didn't pan out due to various places that do exactly that.

Reviewed By: quark-zju

Differential Revision: D42711085

fbshipit-source-id: cd36fa439dd08d20ffb362c23a6296ff662b48dc
2023-01-26 09:17:43 -08:00
Mateusz Kwapich
dcfded090a client changes to fix push of commits with null manifests
Summary:
Sapling when trying to push a commit with null manifest tries to pack it first and fails miserably to obtain it. This diffs makes it skip null manifests as those don't need to be transferred.

NOTE: I've also included comment about more general problem that I've noticed. In `shallowbundle.py` we skip over all manifests that don't exist by catching exception but this exception had changed due to rust migration. **I didn't fix that problem.**

Reviewed By: muirdm

Differential Revision: D42753348

fbshipit-source-id: 9a1ae168d09d89bd0316991af88c6801e4c2f41b
2023-01-26 06:17:55 -08:00
generatedunixname89002005307016
77be4f3259 Add annotations to eden/scm/edenscm/ext/github/submit.py
Reviewed By: muirdm

Differential Revision: D42740694

fbshipit-source-id: 4f04a40927d4ac6f2a0168f0014f262790180b0d
2023-01-25 16:30:03 -08:00
Johnson Han
2ed14465d3 workspace.py should use rust config binding
Summary:
Breaking this task down into a few steps:
1. remove reference of config.py in `workspace.py`, `dirsync.py`, and `templater.py`.
2. remove `config.py`.

Reviewed By: muirdm

Differential Revision: D42731038

fbshipit-source-id: 6feb4db0808f5182696e1366042a9a94a59f743b
2023-01-25 12:05:59 -08:00
Johnson Han
14dc97ea6e dirsync.py should use rust config binding
Summary:
Breaking this task down into a few steps:
1. remove reference of config.py in `workspace.py`, `dirsync.py`, and `templater.py`.
2. remove `config.py`.

Reviewed By: muirdm

Differential Revision: D42731393

fbshipit-source-id: c0de17d4a592fbb9aba511ae5012696f57691e53
2023-01-25 12:05:59 -08:00
Johnson Han
6cc13f194c test-configparser.py should cover cfg.names()
Summary: I don't see any test for `cfg.names()`. Adding test in this diff.

Reviewed By: muirdm

Differential Revision: D42731690

fbshipit-source-id: 6d92759921d0fd1c735250a438b98f3c6db4a355
2023-01-25 12:05:59 -08:00
generatedunixname89002005307016
9d42ccb54a Add annotations to eden/scm/edenscm/verify.py
Reviewed By: quark-zju

Differential Revision: D42707762

fbshipit-source-id: 198310540947fdf4cb67e7c17f2fb21a42296827
2023-01-24 17:29:21 -08:00
generatedunixname89002005307016
c0801fecc9 Add annotations to eden/scm/edenscm/ext/errorredirect.py
Reviewed By: quark-zju

Differential Revision: D42658495

fbshipit-source-id: d4a6b77a9529c16261de62d89b8ce93669a63d4c
2023-01-24 17:26:15 -08:00
generatedunixname89002005307016
787f7e8cd5 Lint failure adding annotations to eden/scm/edenscm/dirstate.py
Reviewed By: quark-zju

Differential Revision: D42573407

fbshipit-source-id: 9cc19f28cb544a233889289c1a749a34f12e7889
2023-01-24 17:25:14 -08:00
generatedunixname89002005307016
9a7ee24565 Add annotations to eden/scm/edenscm/ext/disablesymlinks.py
Reviewed By: quark-zju

Differential Revision: D42675658

fbshipit-source-id: e72161ace4b489562bc78bda389e8f5e563e401c
2023-01-24 17:24:32 -08:00
generatedunixname89002005307016
18781e1d8e Add annotations to eden/scm/edenscm/traceimport.py
Reviewed By: quark-zju

Differential Revision: D42635569

fbshipit-source-id: f8d4fdecae0d268e7634d96f51c387c0e1db3060
2023-01-24 17:24:07 -08:00
generatedunixname89002005307016
07fa648294 Add annotations to eden/scm/edenscm/ext/checkserverbookmark.py
Reviewed By: quark-zju

Differential Revision: D42603976

fbshipit-source-id: 2e668d634ab152f4058f18d8a6c45fcb00ac9ae5
2023-01-24 17:23:51 -08:00
Michael Bolin
732d512647 chore: apply Black formatter to ghstack fork
Summary:
Historically, we avoided running the Black autoformatter on our
fork of ghstack so that the code would be easier to diff with
upstream. Now that Black is run on upstream ghstack:

e5eca89cb3

we have no reason to exclude it from our linter.

Going forward, we should update the GitHub CI to run `black --check`
and report back so that contributors get this signal as well.

Reviewed By: zsol

Differential Revision: D42494629

fbshipit-source-id: 7f09ec46f687e56662f4f6ac477fd2fd077709d6
2023-01-24 12:48:13 -08:00
Michael Bolin
36f952970d remove ghstack/github_schema.graphql
Summary:
Upstream ghstack uses this for `github_fake.py`:

004d330948/ghstack/github_fake.py (L261)

Because our fork of ghstack talks to GitHub in a different
way and has its own test harness such that we deleted
`github_fake.py`, we can remove `github_schema.graphql`, as well.

This simplifies things because our internal linter wants to run
Prettier over it.

Reviewed By: evangrayk

Differential Revision: D42698061

fbshipit-source-id: 602346e4e5ee48331513c5e28eafbb39f1fac71a
2023-01-24 12:48:13 -08:00
Saul Gutierrez
352feeef11 ci: bump python3.11.0 to python3.11.1 (#496)
Summary:
[sl] ci: bump python3.11.0 to python3.11.1

 ---
Stack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/sapling/pull/496).
* __->__ https://github.com/facebook/sapling/issues/496

Pull Request resolved: https://github.com/facebook/sapling/pull/496

Reviewed By: zzl0

Differential Revision: D42719323

Pulled By: sggutier

fbshipit-source-id: e71d0ec4b9ccdc206bd7d844176a7896d5a3d97f
2023-01-24 12:45:16 -08:00
Jun Wu
db214dd551 indexedlog: document more details about checksum entry
Summary:
The implementation details are not obvious (for example, the xxhash chunk start
does not match start). Add more docs about them.

Reviewed By: muirdm

Differential Revision: D42626680

fbshipit-source-id: 2294d1cb6af859fb75a68b3618796d26b2dadd1c
2023-01-24 10:17:44 -08:00
Jun Wu
a4f78536dc indexedlog: clean up usage of cfg!(debug_assertions)
Summary:
`if cfg!(debug_assertions) { ... } else { ... }` is a better form since it
always checks that the code compiles and is sometimes shorter.

Reviewed By: muirdm

Differential Revision: D42626679

fbshipit-source-id: 1165b92b7b81d33704a5b4ee6ed36c61f4250c87
2023-01-24 10:17:44 -08:00
Saul Gutierrez
a8fb90880f revsets: add a test for ghrevset
Summary: Adds an integration test for the features added in D42221073

Reviewed By: bolinfest

Differential Revision: D42625035

fbshipit-source-id: 40a00f36ce25bd2250637bca3b42f16076be1304
2023-01-23 13:11:01 -08:00
Saul Gutierrez
6fde922876 tests: add mock for default push path
Summary:
D42614252 (79886f53d4) introduced a way of setting `default.default-push` through the `SL_TEST_GH_URL` environment variable in tests. This diff makes use of the same environment variable for `github.submit.get_origin`.

This can be useful when testing commands that need to connect to the mock GitHub server but still need to get data from the git repo being tested.

Reviewed By: bolinfest

Differential Revision: D42625037

fbshipit-source-id: bf19d772fef32bf4ce8326391a9df360a3412040
2023-01-23 13:11:01 -08:00
Saul Gutierrez
4720a2eff8 revsets: add support revset for Github pull requests
Summary:
This allows revsets of the form `PR[0-9]+` to be translated to commit hashes as well as autopulling them in case a local copy doesn't exist.  This revset can be used in commands that support revsets, such as:
- `goto`
- `log`
- `show`
- `rebase`
- `pull`

Marking the translated revsets as remote bookmarks is still pending

Reviewed By: bolinfest

Differential Revision: D42221073

fbshipit-source-id: 695fe82d0f0c23ea32e18c86be537ed3ea0807f7
2023-01-23 13:11:01 -08:00
Zhaolong Zhu
dc367d14d9 indexedlog_store: fix for_loops_over_fallibles warning
Summary:
https://doc.rust-lang.org/nightly/nightly-rustc/rustc_lint/for_loops_over_fallibles/static.FOR_LOOPS_OVER_FALLIBLES.html

Both Option and Result implement IntoIterator trait, which allows using them in a for loop. for loop over Option or Result will iterate either 0 (if the value is None/Err(_)) or 1 time (if the value is Some(_)/Ok(_)). This is not very useful and is more clearly expressed via `if let`.

Reviewed By: muirdm

Differential Revision: D42656184

fbshipit-source-id: b14b53b49ef90eea26a2329dbe37168e5d454dea
2023-01-23 11:54:07 -08:00
Zhaolong Zhu
77d3e8cafe shelve: simplify test and fix typos
Summary: removed unnecessary 'hg' command in the test and fixed some typos.

Reviewed By: muirdm

Differential Revision: D42656185

fbshipit-source-id: 4300b32703230193df425193715bfd0974872695
2023-01-23 11:54:07 -08:00