sapling/eden/mononoke
Yan Soares Couto 72ea20ab37 Abstract DM id from ChangesetPathHistoryContext
Summary:
**Context:** I want to allow config changes to decide between DMv1 and v2, so I need to make usages more generic.

This diff makes it so `ChangesetPathHistoryContext` doesn't actually store any deleted manifest ids, and instead work with futures that resolve directly to the linknodes.

This makes it easier for us to use this class with DMv2, without need wrapper types around ids.

This also makes things slightly faster on repeated calls, as it caches the whole linknode, not just the id to then load the linknode from.

Reviewed By: mitrandir77

Differential Revision: D35779796

fbshipit-source-id: def93a62974cdfe02fd5e40c1c29ec49274c91ce
2022-04-22 08:36:07 -07:00
..
admin Daily common/rust/cargo_from_buck/bin/autocargo 2022-04-22 04:23:28 -07:00
aliasverify rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
alpn rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
backfill_derived_data rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
benchmark_filestore rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
benchmarks mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
blobimport rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
blobimport_lib rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
blobrepo eden/watchman/re: clean up unused deps 2022-04-21 14:58:37 -07:00
blobrepo_utils rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
blobstore eden/watchman/re: clean up unused deps 2022-04-21 14:58:37 -07:00
blobstore_healer Daily common/rust/cargo_from_buck/bin/autocargo 2022-04-22 04:23:28 -07:00
blobstore_sync_queue rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
bonsai_git_mapping mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
bonsai_globalrev_mapping mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
bonsai_hg_mapping rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
bonsai_svnrev_mapping rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
bookmarks mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
bulkops rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
cache_warmup rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
changesets rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
cmdlib rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
cmds eden/watchman/re: clean up unused deps 2022-04-21 14:58:37 -07:00
commit_rewriting mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
common eden/watchman/re: clean up unused deps 2022-04-21 14:58:37 -07:00
derived_data Prevent history cycles in mutable renames 2022-04-22 06:33:27 -07:00
edenapi_service rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
filenodes rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
filestore rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
git rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
gotham_ext rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
hgproto rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
hook_tailer rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
hooks eden/watchman/re: clean up unused deps 2022-04-21 14:58:37 -07:00
lfs_import rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
lfs_import_lib rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
lfs_protocol rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
lfs_server mononoke: lfs: Log client TW job and task to scuba 2022-04-21 09:48:55 -07:00
manifest rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
megarepo_api Prevent history cycles in mutable renames 2022-04-22 06:33:27 -07:00
mercurial rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
metaconfig rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
microwave rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
mononoke_api Abstract DM id from ChangesetPathHistoryContext 2022-04-22 08:36:07 -07:00
mononoke_api_hg mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
mononoke_hg_sync_job mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
mononoke_types Add markdown explaining sharded maps in repo 2022-04-21 10:42:28 -07:00
mutable_counters rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
mutable_renames Prevent history cycles in mutable renames 2022-04-22 06:33:27 -07:00
newfilenodes rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
observability rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
permission_checker rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
phases rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
pushrebase mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
pushrebase_mutation_mapping mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
quiet_stream restore getdeps build (#109) 2022-02-11 01:42:04 -08:00
rate_limiting rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
reachabilityindex mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
regenerate_hg_filenodes rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
repo_attributes mononoke: Acl check BYPASS_READONLY pushvar 2022-04-11 11:04:22 -07:00
repo_client mononoke: add FacebookInit to TestRepoFactory 2022-04-13 02:45:23 -07:00
repo_factory mononoke: create usable segmented changelog in TestRepoFactory 2022-04-13 02:45:23 -07:00
repo_import specify git commit or branch that will be merged into repo explicitly 2022-04-22 01:35:36 -07:00
revset rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
scs rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
scs_server Fix confusion in SCS around mutable renames 2022-04-11 06:38:15 -07:00
segmented_changelog test for forced reloading 2022-04-14 03:29:44 -07:00
server eden/watchman/re: clean up unused deps 2022-04-21 14:58:37 -07:00
sshrelay rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
statistics_collector rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
streaming_clone rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
tests Prevent history cycles in mutable renames 2022-04-22 06:33:27 -07:00
time_window_counter rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
tools Prevent history cycles in mutable renames 2022-04-22 06:33:27 -07:00
tunables rust: update crossterm to 0.23.0 and arc-swap to 1.5.0 2022-04-12 23:50:06 -07:00
unbundle_replay rust: update serde_json to 1.0.79 and serde to 1.0.136 2022-04-10 23:39:55 -07:00
upload_globalrevs rust: update anyhow to 1.0.56 2022-04-07 04:31:34 -07:00
walker mononoke/walker: fix --storage-id arg 2022-04-20 10:49:54 -07:00
Cargo.toml Move dump_public_changeset_entries into mononoke_newadmin 2022-04-21 10:42:28 -07:00
README.md mononoke: README.md update 2022-02-21 02:23:21 -08:00

Mononoke

Mononoke is a next-generation server for the Mercurial source control system, meant to scale up to accepting thousands of commits every hour across millions of files. It is primarily written in the Rust programming language.

Caveat Emptor

Mononoke is still in development. We are making it available now because we plan to start making references to it from our other open source projects.

The version that we provide on GitHub is omitting some functions.

This is because the code is exported verbatim from an internal repository at Facebook, and not all of the scaffolding from our internal repository can be easily extracted. The key areas where we need to shore things up are:

  • Support for running thrift based apis.
  • Production metadata SQL support (e.g. something like a MySQL backend). We provide sqlite in OSS for now.
  • Production blobstore storage backends (e.g. something like S3). We provide SQL (on sqlite) and File System backends currently in OSS.

Linux is Mononoke's primary target plaform with OSS CI also running on MacOS. Other Unix-like OSes may be supported in the future.

Subsystem Docs

Most of our documentation is in internal systems, however a few subsystems have in-repo markdown docs available: