sapling/eden/scm/lib
Xavier Deguillard 99f74f0155 lfs: move uploaded blobs to the shared store
Summary:
As a developpers is working on large blobs and iterating on them, the local LFS
store will be growing significantly over time, and that growth is unfortunately
unbounded and will never be cleaned up. Thankfully, one the guarantee that the
server is making is that an uploaded LFS blob will never be removed[0]. By using
this property, we can simply move blobs from the local store to the shared
store after uploading the blob is complete.

[0]: As long as it is not censored.

Reviewed By: DurhamG

Differential Revision: D21134191

fbshipit-source-id: ca43ddeb2322a953aca023b49589baa0237bbbc5
2020-05-13 12:50:20 -07:00
..
asyncrevisionstore/src datastore: remove HgIdDataStore ::get_delta and ::get_delta_chain 2020-05-07 11:04:01 -07:00
auth configparser: migrate from Bytes to Text 2020-03-13 10:51:41 -07:00
backingstore fix get blob local 2020-05-05 20:21:21 -07:00
blackbox blackbox: address clippy warnings 2020-03-18 10:16:39 -07:00
bookmarkstore types: address clippy warnings 2020-03-16 14:58:21 -07:00
cdatapack cmake: always build support for the EdenSCM backing store 2019-11-22 13:00:07 -08:00
clib cmake: always build support for the EdenSCM backing store 2019-11-22 13:00:07 -08:00
clidispatch configs: move hgrc.dynamic to always be in the shared repo 2020-05-05 18:19:10 -07:00
cliparser Update cpython to 0.5 2020-04-28 11:47:41 -07:00
commitcloudsubscriber commitcloudsubscriber: silence compiler warning 2020-03-04 09:49:14 -08:00
commitstore/bench-serialize cargo: bump serde_cbor to 0.11 2020-02-21 14:08:43 -08:00
configparser check-code: convert to Python 3 2020-05-07 09:07:50 -07:00
cpython-ext Update cpython to 0.5 2020-04-28 11:47:41 -07:00
dag dag: make ASCII -> MemNameDag a public API 2020-05-11 09:49:59 -07:00
dev-logger dev-logger: a simple library to enable env_logger for testing 2020-03-10 14:16:38 -07:00
drawdag Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
dynamicconfig configs: move repo names to a enum 2020-05-06 09:03:17 -07:00
edenapi edenapi: add history support to data_util 2020-05-12 16:26:22 -07:00
edenfs-client suggest graceful restart in hg status / old edenfs warnings 2020-04-13 16:25:58 -07:00
encoding Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
fsinfo fsinfo: return an enum instead of a String 2020-03-23 14:29:10 -07:00
hgcommands configs: move hgrc.dynamic to always be in the shared repo 2020-05-05 18:19:10 -07:00
hgtime hgtime: address clippy warnings 2020-03-16 14:58:22 -07:00
indexedlog indexedlog: remove chown feature 2020-04-27 15:47:59 -07:00
linelog Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
lz4-pyframe mononoke/mercurial: make revlog crate OSS buildable 2020-04-08 09:49:11 -07:00
manifest manifest: add testutil in core package 2020-01-14 11:49:52 -08:00
manifest-tree Deprecate rust-crypto in manifest-tree 2020-03-23 11:15:58 -07:00
metalog git: update git dependency to 0.13.5 to match internal version 2020-05-05 15:35:12 -07:00
mincode Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
minibench mononoke/mercurial: make revlog crate OSS buildable 2020-04-08 09:49:11 -07:00
minibytes minibytes: address clippy warnings 2020-03-16 14:58:22 -07:00
mpatch Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
mpatch-sys use absolute includes for the native cext modules 2020-02-19 13:05:06 -08:00
mutationstore mutationstore: add a method that returns a dag 2020-05-13 09:45:24 -07:00
nodemap indexedlog: replace Log's dir with a new GenericPath type 2020-01-17 03:57:59 -08:00
pathmatcher pathmatcher: add a test about a bug in globset/aho-corasick 2020-02-28 22:09:28 -08:00
procinfo procinfo: address compiler warning 2020-03-04 09:49:14 -08:00
radixbuf Update rustfmt and reformat fbsource 2020-02-04 17:14:27 -08:00
renderdag renderdag: provide a method to render MemNameDag directly to a string 2020-05-11 09:50:00 -07:00
revisionstore lfs: move uploaded blobs to the shared store 2020-05-13 12:50:20 -07:00
stackdesc Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
third-party Merge fb-mercurial sources into the eden repository 2019-11-13 20:20:32 -08:00
thrift-types third-party/rust: Turn off async-trait/support_old_nightly 2020-04-02 17:01:24 -07:00
tracing-collector tracing-collector: add is_event to TreeSpan 2020-03-12 12:19:38 -07:00
treestate filesystem: add filesystem walking to PendingChanges 2020-04-24 13:58:53 -07:00
types mutationstore: add a method that returns a dag 2020-05-13 09:45:24 -07:00
util util: not try to create the directory when it already exists 2020-04-28 20:33:59 -07:00
vfs filesystem: add treestate walking logic 2020-04-24 13:58:53 -07:00
vlqencoding mutationstore: move MutationEntry type to types crate 2020-04-23 08:58:10 -07:00
workingcopy filesystem: add treestate walking logic 2020-04-24 13:58:53 -07:00
xdiff fix xdiff behaviour for empty files 2020-04-21 05:30:21 -07:00
xdiff-sys Run auto cargo locally 2020-05-05 20:59:02 -07:00
zstdelta Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
zstore zstore: add simple caching 2020-05-01 14:24:52 -07:00
CMakeLists.txt cmake: always build support for the EdenSCM backing store 2019-11-22 13:00:07 -08:00
README.md Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00

lib

Any native code (C/C++/Rust) that Mercurial (either core or extensions) depends on should go here. Python code, or native code that depends on Python code (e.g. #include <Python.h> or use cpython) is disallowed.

As we start to convert more of Mercurial into Rust, and write new paths entrirely in native code, we'll want to limit our dependency on Python, which is why this barrier exists.

See also hgext/extlib/README.md, mercurial/cext/README.mb.

How do I choose between lib and extlib (and cext)?

If your code is native and doesn't depend on Python (awesome!), it goes here.

Otherwise, put it in hgext/extlib (if it's only used by extensions) or mercurial/cext (if it's used by extensions or core).