sapling/eden/mononoke
Thomas Orozco 4db876a1bb mononoke/hooks: limit_path_length: encode the .i too
Summary:
When I refactored MPath to limit path length to 255 throughout, I had to change
the logic in this hook because it couldn't represent problematic paths anymore.

Unfortunately, I didn't realize that this would break in cases where the file
fits in 254 or 255 characters with one of the less compact encodings (but that
doesn't fit in 255 if you add `.i`), but also fits in 255 characters once you
add `.i` using one of the more compact encodings.

This results in the hook rejecting things that could have been represented in a
more compact encoding un-necessarily.

This fixes that, but to do so it also requires no requiring MPath in fsencode
(and instead allowing any slice of bytes) which is basically the bulk of
changes here.

Reviewed By: StanislavGlebik

Differential Revision: D21462205

fbshipit-source-id: d4fe6129b379675e842bff5b20bd776cb39157b2
2020-05-08 08:24:35 -07:00
..
apiserver mononoke: Add tunables - a simple form of config hot reloading 2020-04-30 16:08:30 -07:00
backsyncer mononoke: fixup licenses in mononoke 2020-05-06 10:00:19 -07:00
benchmark remove unneeded 'static lifetimes 2020-04-22 02:49:01 -07:00
blobimport_lib mononoke: reverse autocargo include list to excludes 2020-05-06 08:43:18 -07:00
blobrepo Expose ctime from Blobstore::get() in mononoke 2020-05-06 00:55:07 -07:00
blobrepo_utils Clean out unused deps from our TARGETS files 2020-04-14 03:38:11 -07:00
blobstore rust: remove abandoned heapsize crate 2020-05-07 23:45:44 -07:00
blobstore_sync_queue Clean out unused deps from our TARGETS files 2020-04-14 03:38:11 -07:00
bonsai_git_mapping Bump tokio to 0.2.13 2020-04-15 12:18:00 -07:00
bonsai_globalrev_mapping mononoke: update various error enums to use #[source] 2020-05-05 05:44:52 -07:00
bonsai_hg_mapping rust: remove abandoned heapsize crate 2020-05-07 23:45:44 -07:00
bookmarks mononoke/warm_bookmarks_cache: log full errors 2020-05-07 03:15:50 -07:00
cache_warmup mononoke/server: make the main mononoke binary OSS buildable 2020-05-06 06:11:02 -07:00
changesets rust: remove abandoned heapsize crate 2020-05-07 23:45:44 -07:00
cmdlib mononoke: add tunable for warm bookmark config 2020-05-01 04:04:51 -07:00
cmds mononoke: log the oldest underived ancestor 2020-05-08 07:47:19 -07:00
commit_rewriting common/rust/failure_ext: get rid of error chain 2020-05-05 05:44:52 -07:00
common mononoke/rust-shed: apply new coding style convention that separates oss-only code 2020-05-07 04:52:16 -07:00
config_structs config: sync from configerator 2020-05-04 04:13:45 -07:00
derived_data mononoke: log the oldest underived ancestor 2020-05-08 07:47:19 -07:00
edenapi_server/src mononoke: replace all remaining usages of aclchecker with permission_checker 2020-04-29 11:57:34 -07:00
fastreplay unbundle: save infinitepush unbundles into reversefillerqueue 2020-05-07 05:12:14 -07:00
filenodes third-party/rust: Turn off async-trait/support_old_nightly 2020-04-02 17:01:24 -07:00
filestore Expose ctime from Blobstore::get() in mononoke 2020-05-06 00:55:07 -07:00
git rust: remove abandoned heapsize crate 2020-05-07 23:45:44 -07:00
gotham_ext/src mononoke: replace all remaining usages of aclchecker with permission_checker 2020-04-29 11:57:34 -07:00
hgcli mononoke: hgcli: Add a connection timeout 2020-04-29 03:27:14 -07:00
hgproto mononoke/repo_client: make repo_client buildable in OSS 2020-05-06 06:11:02 -07:00
hook_tailer mononoke: reverse autocargo include list to excludes 2020-05-06 08:43:18 -07:00
hooks mononoke/repo_client: log when hooks finished (and how many were rejected) 2020-05-04 09:54:59 -07:00
lfs_import_lib mononoke: reverse autocargo include list to excludes 2020-05-06 08:43:18 -07:00
lfs_protocol lfs_protocol: move LFS MIME type into protocol crate 2020-04-23 13:58:04 -07:00
lfs_server/src common/rust/failure_ext: get rid of error chain 2020-05-05 05:44:52 -07:00
load_limiter mononoke/rust-shed: apply new coding style convention that separates oss-only code 2020-05-07 04:52:16 -07:00
manifest Expose ctime from Blobstore::get() in mononoke 2020-05-06 00:55:07 -07:00
megarepolib mononoke: fixup licenses in mononoke 2020-05-06 10:00:19 -07:00
mercurial mononoke/hooks: limit_path_length: encode the .i too 2020-05-08 08:24:35 -07:00
metaconfig third-party/rust: update toml to 0.5.6 2020-05-04 18:59:56 -07:00
microwave mononoke/server: make the main mononoke binary OSS buildable 2020-05-06 06:11:02 -07:00
mononoke_api/src mononoke_api: fix for acl check in tests 2020-04-30 03:14:50 -07:00
mononoke_types rust: remove abandoned heapsize crate 2020-05-07 23:45:44 -07:00
mutable_counters admin: add a subcommand to manipulate mutable_counters 2020-04-16 03:19:44 -07:00
newfilenodes mononoke: update various error enums to use #[source] 2020-05-05 05:44:52 -07:00
permission_checker mononoke/rust-shed: apply new coding style convention that separates oss-only code 2020-05-07 04:52:16 -07:00
phases Clean out unused deps from our TARGETS files 2020-04-14 03:38:11 -07:00
pushrebase mononoke: asyncify find_underived 2020-05-06 07:55:03 -07:00
reachabilityindex Expose ctime from Blobstore::get() in mononoke 2020-05-06 00:55:07 -07:00
repo_client rust: remove abandoned heapsize crate 2020-05-07 23:45:44 -07:00
revset common/rust/failure_ext: get rid of error chain 2020-05-05 05:44:52 -07:00
scs_server/src mononoke/scs_server: report per-method completion times to ODS 2020-05-07 09:38:43 -07:00
segmented_changelog Update Segmented Changelog IdMap storage to SQL 2020-05-08 07:35:16 -07:00
server unbundle: save infinitepush unbundles into reversefillerqueue 2020-05-07 05:12:14 -07:00
sshrelay Clean out unused deps from our TARGETS files 2020-04-14 03:38:11 -07:00
tests unbundle: save infinitepush unbundles into reversefillerqueue 2020-05-07 05:12:14 -07:00
time_window_counter mononoke/rust-shed: apply new coding style convention that separates oss-only code 2020-05-07 04:52:16 -07:00
tunables mononoke/scuba_ext: allow truncating overly long msg fields 2020-05-05 12:28:51 -07:00
unbundle_replay mononoke: reverse autocargo include list to excludes 2020-05-06 08:43:18 -07:00
walker/src mononoke: asyncify is_derived 2020-05-06 07:55:04 -07:00
Cargo.toml unbundle: save infinitepush unbundles into reversefillerqueue 2020-05-07 05:12:14 -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