sapling/eden/mononoke
Thomas Orozco 0205634fe1 mononoke: unify lfs & edenapi response factories
Summary:
Those two have historically used different (but largely copy pasted) code to
produce their responses. Let's unify them by

While in there, let's also modernize the formatting a little bit by letting
anyhow do the formatting for us (we used to use `failure` when this code was
written, and it didn't do it).

There's a bit of ugliness here in the sense that out formatting is injecting
the error into the state so it can be logger later. This is equivalent to what
we had, but it's kinda clonwy. That said, I'm working on refactoring our error
handling in this stack, so the plan is to clean this up (i.e. it won't stay
very long).

Finally, note that this diff removes the `ResponseCreationFailure` error kind
in LFS. This is replaced by a `.context()` in `gotham_ext`. That said, we never
really use this stuff: creations are fallible in Hyper but you only run into
an error if you e.g. forget to add a status code, so we don't expect them to
actually occur outside of development.

Reviewed By: mitrandir77

Differential Revision: D27966421

fbshipit-source-id: 097f3b69f25fe39f8fbef925a272e88199896b39
2021-04-27 08:10:34 -07:00
..
alpn rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
benchmarks mononoke/pushrebase_hooks: add a hook that saves prepushrebase changeset id 2021-04-27 03:52:50 -07:00
blobimport_lib rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
blobrepo mononoke/pushrebase_hooks: add a hook that saves prepushrebase changeset id 2021-04-27 03:52:50 -07:00
blobrepo_utils rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
blobstore blobstore: fix confusing comment about an exported macro 2021-04-27 07:57:21 -07:00
blobstore_sync_queue rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
bonsai_git_mapping rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
bonsai_globalrev_mapping rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
bonsai_hg_mapping rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
bonsai_svnrev_mapping rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
bookmarks mononoke/pushrebase_hooks: add a hook that saves prepushrebase changeset id 2021-04-27 03:52:50 -07:00
bulkops rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
cache_warmup rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
changesets rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
cmdlib mononoke_api: use TestMononokeMegarepoConfigs depending on cli 2021-04-27 06:37:34 -07:00
cmds Cargo builds don't like these braces 2021-04-24 12:30:32 -07:00
commit_rewriting rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
common mononoke: add a demo for RendezVous 2021-04-26 04:43:55 -07:00
derived_data rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
edenapi_server rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
edenapi_service mononoke: unify lfs & edenapi response factories 2021-04-27 08:10:34 -07:00
fastreplay rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
filenodes rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
filestore rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
git blobstore: export impl_loadable_storable macro 2021-04-26 06:37:22 -07:00
gotham_ext mononoke: unify lfs & edenapi response factories 2021-04-27 08:10:34 -07:00
hgcli rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
hgproto rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
hook_tailer rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
hooks rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
lfs_import_lib rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
lfs_protocol rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
lfs_server mononoke: unify lfs & edenapi response factories 2021-04-27 08:10:34 -07:00
load_limiter rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
manifest rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
megarepo_api mononoke_api: use TestMononokeMegarepoConfigs depending on cli 2021-04-27 06:37:34 -07:00
mercurial rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
metaconfig rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
microwave rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
mononoke_api mononoke_api: use TestMononokeMegarepoConfigs depending on cli 2021-04-27 06:37:34 -07:00
mononoke_api_hg rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
mononoke_hg_sync_job rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
mononoke_types rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
mutable_counters rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
newfilenodes rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
observability rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
permission_checker rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
phases rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
pushrebase mononoke/pushrebase: split pushrebase crate 2021-04-27 03:52:50 -07:00
pushrebase_mutation_mapping mononoke/pushrebase_hooks: add a hook that saves prepushrebase changeset id 2021-04-27 03:52:50 -07:00
quiet_stream rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
reachabilityindex rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
regenerate_hg_filenodes rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
repo_attributes rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
repo_client rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
repo_factory mononoke/pushrebase_hooks: add a hook that saves prepushrebase changeset id 2021-04-27 03:52:50 -07:00
repo_import rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
revset rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
scs_server megarepo: impl config adding methods 2021-04-26 09:43:42 -07:00
segmented_changelog rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
server mononoke: preserve the rest of Logging fields when calling with_mutated_scuba 2021-04-23 05:57:18 -07:00
sshrelay rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
streaming_clone rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
tests mononoke_api: use TestMononokeMegarepoConfigs depending on cli 2021-04-27 06:37:34 -07:00
time_window_counter rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
tunables mononoke/pushrebase_hooks: add a hook that saves prepushrebase changeset id 2021-04-27 03:52:50 -07:00
unbundle_replay rust: update to zstd to 0.7.0+zstd.1.4.9 2021-04-22 14:34:06 -07:00
walker mononoke: introduce WrappedPathHash to walker 2021-04-27 06:00:02 -07:00
Cargo.toml mononoke/pushrebase_hooks: add a hook that saves prepushrebase changeset id 2021-04-27 03:52:50 -07:00
README.md mononoke: add README.md and the missing pieces for supporting cargo (#13) 2020-02-13 00:12:36 -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 early stages of 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 does not build yet.

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:

  • Full support for a standard cargo build.
  • Open source replacements for Facebook-internal services (blob store, logging etc).

The current goal is to get Mononoke working on Linux. Other Unix-like OSes may be supported in the future