sapling/eden/scm/lib
Jun Wu 055cf342d9 pathmatcher: hint globset to use prefix strategy instead of regexp strategy
Summary:
`globset` supports multiple matching strategies, including literal prefix
(backed by AhoCorasick), or regexp, etc.

In theory patterns like `foo/**` (where `*` cannot match `/`) can use `foo`
prefix strategy. However, the implementation detail of `globset` wouldn't
accept it as a prefix. But `foo/*` (where `*` can match `/`) can be treated as
a prefix. Transform the former pattern to the latter to hint `globset` to use
the optimal strategies.

Reviewed By: sfilipco

Differential Revision: D18500298

fbshipit-source-id: 39e604d6157a919b75c392488b6d42375e518c16
2019-11-14 14:27:39 -08:00
..
asyncrevisionstore/src rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
auth rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
backingstore rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
blackbox rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
bookmarkstore rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
cdatapack Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
clib Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
clidispatch rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
cliparser Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
commitcloudsubscriber rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
commitstore/bench-serialize Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
configparser rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
cpython-ext rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
cpython-failure Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
dag rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
drawdag Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
edenapi rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
encoding Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
hg_watchman_client rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
hgcommands rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
hgtime Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
indexedlog Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
linelog Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
lz4-pyframe rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
manifest rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
metalog Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
mincode Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
minibench Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
mpatch Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
mpatch-sys Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
mutationstore rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
nodemap rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
pathmatcher pathmatcher: hint globset to use prefix strategy instead of regexp strategy 2019-11-14 14:27:39 -08:00
procinfo Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
radixbuf rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
revisionstore rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08: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
tracing-collector Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
treestate rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
types rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
util rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
vlqencoding Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
watchman_client rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
workingcopy rust: Rename Fallible<T> to Result<T> 2019-11-14 14:11:01 -08:00
xdiff Merge fb-mercurial sources into the eden repository 2019-11-13 20:20:32 -08:00
xdiff-sys Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
zstdelta Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
zstore Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
CMakeLists.txt Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -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).