sapling/eden/scm/lib
Durham Goode 6ae1cf9619 revisionstore: add refresh function
Summary:
The rust pack stores currently have logic to refresh their list of
packs if there's a key miss and if it's been a while since we last loaded the
list of packs. In some cases we want to manually trigger this refresh, like if
we're in the middle of a histedit and it invokes an external command that
produces pack files that the histedit should later consume (like an external
amend, that histedit then needs to work on top of).

Python pack stores solve this by allowing callers to mark the store for a
refresh. Let's add the same logic for rust stores. Once pack files are gone we
can delete this.

This will be useful for the upcoming migration of treemanifest to Rust
contentstore. Filelog usage of the Rust contentstore avoided this issue by
recreating the entire contentstore object in certain situations, but refresh
seems useful and less expensive.

Reviewed By: quark-zju

Differential Revision: D23657036

fbshipit-source-id: 7c6438024c3d642bd22256a8e58961a6ee4bc867
2020-09-17 10:16:03 -07:00
..
async-runtime Prepare for rustfmt 2.0 2020-09-07 20:47:59 -07:00
auth auth: allow specifying a CA certificate bundle 2020-07-16 19:48:36 -07:00
backingstore revisionstore: add refresh function 2020-09-17 10:16:03 -07:00
blackbox Prepare for rustfmt 2.0 2020-09-07 20:47:59 -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 Prepare for rustfmt 2.0 2020-09-07 20:47:59 -07:00
cliparser debug: introduce error classification and metadata propagation 2020-07-15 10:03:10 -07:00
commitcloudsubscriber Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
commitstore/bench-serialize cargo: bump serde_cbor to 0.11 2020-02-21 14:08:43 -08:00
configparser third-party/rust: import async-compression + update zstd 2020-09-15 07:59:53 -07:00
cpython-ext Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
dag Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
dev-logger dev-logger: a simple library to enable env_logger for testing 2020-03-10 14:16:38 -07:00
drawdag Prepare for rustfmt 2.0 2020-09-07 20:47:59 -07:00
edenapi edenapi: use hg-http built client for network requests 2020-09-09 17:35:48 -07:00
edenfs-client fix the Windows build 2020-09-09 10:39:35 -07:00
encoding Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
fsinfo Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
fsyncglob hgcommands: add debugfsync 2020-08-27 18:26:03 -07:00
hg-http http-client: add stats reporting hook 2020-09-09 17:35:48 -07:00
hg-metrics metrics: crate for collecting metrics 2020-09-09 17:35:48 -07:00
hgcommands version: print EdenSCM instead of Mercurial 2020-09-15 21:03:59 -07:00
hgcommits Prepare for rustfmt 2.0 2020-09-07 20:47:59 -07:00
hgtime hgtime: address clippy warnings 2020-03-16 14:58:22 -07:00
http-client http-client: add stats reporting hook 2020-09-09 17:35:48 -07:00
indexedlog Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
linelog Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
lz4-pyframe Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
manifest manifest: add testutil in core package 2020-01-14 11:49:52 -08:00
manifest-tree Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
metalog Prepare for rustfmt 2.0 2020-09-07 20:47:59 -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 native path to calculate 'obsolete()' 2020-08-21 13:00:45 -07:00
nodemap Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
pathmatcher Prepare for rustfmt 2.0 2020-09-07 20:47:59 -07:00
procinfo Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
radixbuf radixbuf: use concrete error types 2020-08-06 12:31:57 -07:00
renderdag renderdag: move to dag 2020-08-21 13:00:45 -07:00
revisionstore revisionstore: add refresh function 2020-09-17 10:16:03 -07:00
revlogindex Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
spawn-ext Update formatter to rustfmt 2.0 2020-09-09 07:52:34 -07:00
taggederror taggederror: Introduce taggederror-util for more ergonomic error tagging for eden error types. 2020-08-06 19:37:25 -07:00
taggederror-util taggederror: Introduce taggederror-util for more ergonomic error tagging for eden error types. 2020-08-06 19:37:25 -07:00
third-party build: rename third-party rust fbthrift crate 2020-08-26 12:26:21 -07:00
thrift-types thrift: update thrift types 2020-09-09 17:35:48 -07:00
tracing-collector Prepare for rustfmt 2.0 2020-09-07 20:47:59 -07:00
treestate Prepare for rustfmt 2.0 2020-09-07 20:47:59 -07:00
types Prepare for rustfmt 2.0 2020-09-07 20:47:59 -07:00
util Prepare for rustfmt 2.0 2020-09-07 20:47:59 -07:00
version configparser: fix non-fb dependencies (#45) 2020-08-26 16:31:00 -07:00
vfs fsinfo: recognize EdenFS mounts on Windows 2020-08-12 15:47:49 -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 Prepare for rustfmt 2.0 2020-09-07 20:47:59 -07:00
xdiff-sys Update libra to latest revision 2020-07-16 21:10:44 -07:00
zstdelta third-party/rust: import async-compression + update zstd 2020-09-15 07:59:53 -07:00
zstore zstore: add simple caching 2020-05-01 14:24:52 -07:00
CMakeLists.txt cmake: do not compile configparser 2020-08-06 09:00:20 -07: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).