3919c0eb4c
Summary: Purpose: - Sha256 alias link to file_content is a required part of LFS getfiles works correct. LFS protocol uses SHA-256 to refer to the file content. Mononoke uses Blake2. To support LFS in Mononoke we need to set up a link from SHA-256 hash of the content to blake2 of the content. These links are called aliases. - Aliases are uploading together with file content blobs. But only for new push operations. - If repo is blobimported from somewhere, we need to make sure, that all the links are in blobstore. If repo was blobimported before aliases were added then it may miss aliases for some blobs. - This tool can be used to - find if any aliases are missing - fill missing aliases. Implementation: - Run in repo. - Iterate through all changesets. - Go through all the file_content blobs in the changesets - Verify/generate alias256 links to file_content blobs. Mode supported: - verify, count the number of errors and print to console - generate, if blob is missing to add it to the blobstore Reviewed By: StanislavGlebik Differential Revision: D10461827 fbshipit-source-id: c2673c139e2f2991081c4024db7b85953d2c5e35 |
||
---|---|---|
apiserver | ||
async-compression | ||
asyncmemo | ||
blobrepo | ||
blobrepo_utils | ||
blobstore | ||
bonsai-hg-mapping | ||
bonsai-utils | ||
bookmarks | ||
bundle2-resolver | ||
bytes-ext | ||
cache-warmup/src | ||
changesets | ||
cmdlib/src | ||
cmds | ||
common | ||
docs | ||
eden_server | ||
failure_ext | ||
filenodes | ||
futures-ext | ||
hgcli | ||
hgproto | ||
hook_tailer | ||
hooks | ||
hooks_old/src | ||
mercurial | ||
mercurial-bundles | ||
mercurial-types | ||
metaconfig | ||
mononoke-api/src | ||
mononoke-types | ||
netstring/src | ||
py_tar_utils | ||
reachabilityindex/src | ||
ready_state/src | ||
repo_client | ||
revset | ||
server | ||
sshrelay | ||
storage | ||
tests | ||
vfs | ||
.gitignore | ||
.travis.yml | ||
Cargo.toml | ||
CONTRIBUTING.md | ||
LICENSE | ||
packman.yml | ||
README.md | ||
rustfmt.toml |
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 such as Eden.
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.