Expand description
Xvc Core Library for common operations
Re-exports§
pub use types::hashalgorithm::HashAlgorithm;
pub use types::recheckmethod::RecheckMethod;
pub use types::xvcdigest::content_digest::ContentDigest;
pub use types::xvcdigest::path_collection_digest::PathCollectionDigest;
pub use types::xvcdigest::stdout_digest::StdoutDigest;
pub use types::xvcdigest::url_get_digest::UrlContentDigest;
pub use types::xvcdigest::xvc_metadata_digest::XvcMetadataDigest;
pub use types::xvcdigest::AttributeDigest;
pub use types::xvcdigest::XvcDigest;
pub use types::xvcdigest::XvcDigests;
pub use types::diff::Diff;
pub use types::diff::DiffStore;
pub use types::diff::DiffStore2;
pub use types::diff::DiffStore3;
pub use types::diff::DiffStore4;
pub use types::diff::apply_diff;
pub use types::diff::diff_store;
pub use types::diff::update_with_actual;
pub use types::xvcfiletype::XvcFileType;
pub use types::xvcmetadata::XvcMetadata;
pub use types::xvcpath::TextOrBinary;
pub use types::xvcpath::XvcCachePath;
pub use types::xvcpath::XvcPath;
pub use types::xvcroot::XvcRoot;
pub use error::Error;
pub use error::Result;
pub use util::git;
pub use util::file::all_paths_and_metadata;
pub use util::file::dir_includes;
pub use util::file::glob_includes;
pub use util::file::glob_paths;
pub use util::git::build_gitignore;
pub use util::git::exec_git;
pub use util::git::get_absolute_git_command;
pub use util::git::get_git_tracked_files;
pub use util::git::git_auto_commit;
pub use util::git::git_auto_stage;
pub use util::git::git_checkout_ref;
pub use util::git::git_ignored;
pub use util::git::handle_git_automation;
pub use util::git::inside_git;
pub use util::git::stash_user_staged_files;
pub use util::git::unstash_user_staged_files;
pub use util::pmp::XvcPathMetadataProvider;
pub use util::XvcPathMetadataMap;
pub use xvc_walker as walker;
Modules§
- check_
ignore - xvc check ignore CLI handling module
- error
- Error messages for Xvc core crate
- root
- Get the Xvc root directory for the current project
- types
- Xvc basic types used across the whole program
- util
- Various utility functions
- walk_
parallel - Parallel walk implementation
- walk_
serial - Serial directory walker without parallelization
See [
walk_parallel
] for parallel version.
Macros§
- attribute_
digest - Specifies an attribute digest
- conf
- Binds a type with a configuration key.
- debug
- Either send XvcOutputLine::Debug to the given channel, or log via
log
crate - error
- Either send a XvcOutputLine::Error value to the given channel, or log via
log
crate - info
- Either send XvcOutputLine::Info to the given channel, or log via
log
crate - output
- Either send XvcOutputLine::Output to the given channel, or print to stdout
- panic
- Either send XvcOutputLine::Panic to the given channel, or print to stdout
- persist
- Specifies the store name a type is stored. Usually it’s the string representation of a type. These strings are used to generate store locations for types. They must be unique across the project.
- trace
- Either send [XvcOutputLine::Trace] to the given channel, or log via
log
crate - uwo
- Unwrap an option, and if it is an error, send it to the given channel
and panic.
This is mostly to be used in
for_each
blocks, where the error is not propagated. - uwr
- Unwrap the result of an expression, and if it is an error, send it to the given channel
and panic.
This is mostly to be used in
for_each
blocks, where the error is not propagated. - warn
- Either send XvcOutputLine::Warn to the given channel, or log via
log
crate - watch
- Debugging macro to print the given expression and its value, with the module, function and line number
Structs§
- Absolute
Path - A specialized path type for absolute paths.
- Event
Log - A series of Event values.
- Glob
Glob
represents a glob pattern matcher with support for multi-pattern matching.- HStore
- This is a HashMap for more random access and less restrictions, no support for serialization
- Ignore
Rules - Complete set of ignore rules for a directory and its child directories.
- Path
Sync - When multiple threads try to access the same path (especially in cache operations) we get weird race conditions, This structure is to make those operations atomic and thread safe.
- R1NStore
- RNStore is 1-N RelationStore, where we store one-to-many relationships between two entities. It doesn’t have any semantics except binding two entities together.
- R11Store
- Associates two XvcStores with two different type of components with a single XvcEntity. It’s like using the same primary key in two database tables.
- RMNStore
- RMNStore is M-N RelationStore, where we store arbitrary relationships between two entities. It doesn’t have any semantics except binding two entities together.
- VStore
- This is a tuple-vector for (XvcEntity, T) to enable faster serial access
- Walk
Options - What’s the ignore file name and should we add directories to the result?
- XvcConfig
- Keeps track of all Xvc configuration.
- XvcConfig
Params - How should we initialize the configuration?
- XvcEntity
- Describes an entity in Entity Component System-sense.
- XvcStore
- A database table like store for type
T
Enums§
- Event
- Records add and remove operations of a serializable component
T
. - Match
Result - Show whether a path matches to a glob rule
- Path
Event - An walker-relevant event for changes in a directory. It packs newer std::fs::Metadata if there is.
- XvcConfig
Error - Error enum that uses ThisError. The messages should be self-explanatory, so skipping the docs.
- XvcConfig
Option Source - Define the source where an option is obtained
- XvcEcs
Error - Error type for ECS. We allow missing docs, the names should be self-explanatory.
- XvcOutput
Line - Different channels of outputs Xvc can print
- XvcVerbosity
- Verbosity levels for Xvc CLI
- XvcWalker
Error - Error type for Xvc Walker
Constants§
- CHANNEL_
BOUND - Channel size for crossbeam_channel::bounded used across the library. TODO: This can be configurable for smaller/larger RAM sizes.
- GITIGNORE_
INITIAL_ CONTENT - The initial content for
.xvc/.gitignore
to hide files in .xvc/ - GIT_DIR
- The Git directory for a project.
- XVCIGNORE_
FILENAME - The standard ignore filename
- XVCIGNORE_
INITIAL_ CONTENT - Initial .xvgignore content when a project is initialized
- XVC_DIR
- The standard metadata directory
Traits§
- From
Config Key - A struct implementing this trait can instantiate itself from XvcConfig.
- Storable
- Marks the traits as storable in XvcStore
- Update
From XvcConfig - Trait to update CLI options with defaults from configuration.
Functions§
- content_
to_ patterns - convert a set of rules in
content
to glob patterns. patterns may come fromsource
. the root directory of all search is inignore_root
. - default_
project_ config - Creates a new project configuration by writing all default values. This is used when initializing a new project. The repository GUID is created here.
- make_
polling_ watcher - Create a notify::PollWatcher and a crossbeam_channel::Receiver to receive PathEvents. It creates the channel and [PathEventHandler] with its Sender, then returns the Receiver for consumption.
- path_
metadata_ map_ from_ file_ targets - Return path metadata only for the listed files to avoid recursing directories
- setup_
logging - Init logging if it’s not initialized before.
Uses Once to run (non-public fn)
init_logging
once. - walk_
parallel - Walk all child paths under
dir
and send non-ignored paths topath_sender
. Newly found ignore rules are sent throughignore_sender
. The ignore file name (.xvcignore
,.gitignore
,.ignore
, …) is set bywalk_options
. - walk_
serial - Walk
dir
withwalk_options
, with the given initialignore_rules
. Note that ignore rules are expanded with the rules given in theignore_filename
inwalk_options
. The result is added to givenres_paths
to reduce the number of memory inits for vec.
Type Aliases§
- SharedH
Store - A shared version of HStore for use in multithreaded environments.
- SharedX
Store - A shared version of XvcStore that we use to pass around for thread safety.
- XvcConfig
Result - Result type for xvc-config crate
- XvcEcs
Result - Result type for Xvc ECS functions that may return Error
- XvcOutput
Sender - The channel type to send and receive output/log/debug messages
- XvcWalker
Result - Result type for xvc-walker that may also return Error