mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 09:17:30 +03:00
19bfd35298
Summary: On repack, when the Rust stores are in use, the repack code relies on ContentStore::commit_pending to return the path of a newly created packfile, so it won't delete it when going over the repacked ones. When LFS is enabled, both the shared and the local stores are behind the LfsMultiplexer store that unfortunately would always return `Ok(None)`. In this situation, the repack code would delete all the repacked packfiles, which usually is the expected behvior, unless only one packfile is being repacked, in which case the repack code effectively re-creates the same packfile, and is then subsequently deleted. The solution is for the multiplex stores to properly return a path if one was returned from the underlying stores. Reviewed By: DurhamG Differential Revision: D21211981 fbshipit-source-id: 74e4b9e5d2f5d9409ce732935552a02bdde85b93 |
||
---|---|---|
.. | ||
asyncrevisionstore/src | ||
auth | ||
backingstore | ||
blackbox | ||
bookmarkstore | ||
cdatapack | ||
clib | ||
clidispatch | ||
cliparser | ||
commitcloudsubscriber | ||
commitstore/bench-serialize | ||
configparser | ||
cpython-ext | ||
dag | ||
dev-logger | ||
drawdag | ||
dynamicconfig | ||
edenapi | ||
edenfs-client | ||
encoding | ||
fsinfo | ||
hgcommands | ||
hgtime | ||
indexedlog | ||
linelog | ||
lz4-pyframe | ||
manifest | ||
manifest-tree | ||
metalog | ||
mincode | ||
minibench | ||
minibytes | ||
mpatch | ||
mpatch-sys | ||
mutationstore | ||
nodemap | ||
pathmatcher | ||
procinfo | ||
radixbuf | ||
renderdag | ||
revisionstore | ||
stackdesc | ||
third-party | ||
thrift-types | ||
tracing-collector | ||
treestate | ||
types | ||
util | ||
vfs | ||
vlqencoding | ||
workingcopy | ||
xdiff | ||
xdiff-sys | ||
zstdelta | ||
zstore | ||
CMakeLists.txt | ||
README.md |
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).