sapling/lib
Xavier Deguillard 34a4b33c73 revisionstore: return a KeyError when a key isn't found
Summary:
The KeyError is a special case as it's recognized by Python and allow the
union stores to keep searching. Any other errors and hg crashes, so let's make
sure the mutable stores properly return a KeyError when a key isn't found.

Reviewed By: kulshrax

Differential Revision: D15504681

fbshipit-source-id: 2a989cb0b5c82d9fd481c5ff7c7815122602aab0
2019-05-28 10:06:51 -07:00
..
argparse codemod: import from the edenscm package 2019-01-29 17:25:32 -08:00
asyncrevisionstore/src revisionstore: remove MutableHistoryStore::close 2019-05-21 15:25:28 -07:00
bookmarkstore Convert scm/hg/lib/bookmarkstore to Rust 2018 2019-05-23 17:29:23 -07:00
cdatapack fix double free in cdatapack 2019-04-03 21:13:13 -07:00
clib Started Eden for Windows and integrated hg store with it. 2018-08-21 17:51:26 -07:00
commitcloudsubscriber commitcloudsubscriber: updates tests.rs 2019-03-20 19:56:14 -07:00
configparser config: move default.d/mergetools.rc to code 2019-05-16 17:31:26 -07:00
cpython-ext Convert scm/hg/lib/cpython-ext to Rust 2018 2019-05-23 15:57:34 -07:00
cpython-failure Convert scm/hg/lib/cpython-failure to Rust 2018 2019-05-22 23:57:49 -07:00
dag dag: update segment::Dag::max_level correctly 2019-05-13 18:51:45 -07:00
drawdag drawdag: implement a Rust drawdag library 2019-05-03 13:35:40 -07:00
edenapi edenapi: factor threading code into seperate function 2019-05-24 16:50:30 -07:00
encoding Convert scm/hg/lib/encoding to Rust 2018 2019-05-23 16:50:51 -07:00
hg_watchman_client Convert scm/hg/lib/hg_watchman_client to Rust 2018 2019-05-22 22:02:10 -07:00
hgpython Convert scm/hg/lib/hgpython to Rust 2018 2019-05-23 17:00:54 -07:00
indexedlog indexedlog: add benchmark about lock overhead 2019-05-24 18:54:20 -07:00
linelog linelog: update README 2018-11-08 12:34:36 -08:00
lz4-pyframe revisionstore: use Bytes instead of Box<[u8]> in Delta and DataEntry 2019-01-22 14:03:17 -08:00
manifest manifest: bump version of once_cell to 0.2.0 2019-05-23 22:38:37 -07:00
minibench minibench: be compatible with edition 2018 2019-05-24 19:20:29 -07:00
mpatch mpatch: stop adding a null byte at the end of the result 2019-05-17 10:24:15 -07:00
mpatch-sys codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
mutationstore Convert scm/hg/lib/mutationstore to Rust 2018 2019-05-23 05:58:57 -07:00
nodemap Convert scm/hg/lib/nodemap to Rust 2018 2019-05-23 01:00:13 -07:00
pathmatcher pathmatcher: make gitignore "explain" low cost and more verbose 2019-05-17 14:25:26 -07:00
radixbuf Convert scm/hg/lib/radixbuf to Rust 2018 2019-05-23 17:05:36 -07:00
revisionstore revisionstore: return a KeyError when a key isn't found 2019-05-28 10:06:51 -07:00
third-party xdiff: backport upstream changes 2018-04-13 21:51:48 -07:00
treestate hg: fix test-check-fix-code.t 2019-04-29 08:05:56 -07:00
types types: move DataEntry validation logging to types crate 2019-05-24 21:59:45 -07:00
url-ext url-ext: add url-ext crate 2019-01-30 18:30:49 -08:00
vlqencoding vlqencoding: don't require Sized for Read or Write traits 2018-10-29 04:10:46 -07:00
watchman_client Convert scm/hg/lib/watchman_client to Rust 2018 2019-05-22 22:15:01 -07:00
zstdelta Convert scm/hg/lib/zstdelta to Rust 2018 2019-05-23 00:03:30 -07:00
Cargo.toml rust: switch to thin lto 2019-05-20 04:08:03 -07:00
README.md READMEs: tweaks based on feedback 2018-01-12 12:35:52 -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).