sapling/eden/scm/lib
Mark Thomas 5666399fcf mutationstore: switch mutation entry timestamp from f64 to i64
Summary:
The mutation store stores entries with a floating-point timestamp.  This
pattern was copied from obsmarkers.

However, Mercurial uses integer timestamps in the commit metadata (the
parser supports floats for historical reasons, but only stores integer
timestamps).   Mononoke also uses integer timestamps in its `DateTime`
type.

To keep things simple, switch to using integer timestamps for mutation
entries.  Existing entries with floating point timestamps are truncated.

Add a new entry format version that encodes the timestamp as an integer.
For now, continue to generate the old version so that old clients can
read entries created by new clients.

Reviewed By: quark-zju

Differential Revision: D20444366

fbshipit-source-id: 4d6d9851aacb314abea19b87c9d0130c47fdf512
2020-03-17 04:18:44 -07:00
..
asyncrevisionstore/src revisionstore: add a new StoreKey type 2020-03-13 19:03:28 -07:00
auth configparser: migrate from Bytes to Text 2020-03-13 10:51:41 -07:00
backingstore revisionstore: add a new StoreKey type 2020-03-13 19:03:28 -07:00
blackbox blackbox: use RotateLog::iter_dirty() 2020-03-05 13:29:47 -08: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 configparser: migrate from Bytes to Text 2020-03-13 10:51:41 -07:00
cliparser Update rustfmt and reformat fbsource 2020-02-04 17:14:27 -08: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 configparser: address clippy warnings 2020-03-16 14:53:45 -07:00
cpython-ext cpython-ext: serialize Rust str into Python str type 2020-03-12 12:19:38 -07:00
dag dag: use IdDagStore in IdDag with type parameter 2020-03-16 14:41:41 -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
edenapi convert to bytes 0.5 2020-02-24 10:28:46 -08:00
edenfs-client Simplify error pattern matching 2020-03-06 12:09:38 -08:00
encoding Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
fsinfo fsinfo: autocorrect "" to "." 2020-03-11 17:35:40 -07:00
hgcommands types: address clippy warnings 2020-03-16 14:58:21 -07:00
hgtime hgtime: address clippy warnings 2020-03-16 14:58:22 -07:00
indexedlog indexedlog: implement xxd-like fmt::Debug for Log 2020-03-16 10:21:46 -07:00
linelog Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
lz4-pyframe Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
manifest manifest: add testutil in core package 2020-01-14 11:49:52 -08:00
manifest-tree types: address clippy warnings 2020-03-16 14:58:21 -07:00
metalog Update rustfmt and reformat fbsource 2020-02-04 17:14:27 -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
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: switch mutation entry timestamp from f64 to i64 2020-03-17 04:18:44 -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 dag: switch from bytes to minibytes 2020-02-28 09:23:59 -08:00
revisionstore types: address clippy warnings 2020-03-16 14:58:21 -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 thrift-types: recompile Thrift sources 2020-03-13 14:25:23 -07:00
tracing-collector tracing-collector: add is_event to TreeSpan 2020-03-12 12:19:38 -07:00
treestate Switch from failure::Fail trait to std::error::Error for errors 2019-11-22 08:53:31 -08:00
types types: address clippy warnings 2020-03-16 14:58:21 -07:00
util pyconfigparser: use PyPath instead of PyByte 2020-01-28 10:14:14 -08:00
vlqencoding Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
workingcopy workingcopy: support returning directories from the walker 2020-03-16 10:15:26 -07:00
xdiff xdiff: allow rendering diff for large files 2020-03-12 04:27:23 -07:00
xdiff-sys eden/scm: cover xdiff with autocargo 2020-02-19 05:15:17 -08:00
zstdelta Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
zstore zstore: implement indexedlog::DefaultOpenOptions 2019-12-06 19:35:05 -08: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).