// Copyright 2020 The Jujutsu Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //! Jujutsu version control system. // Lets items opt out of coverage instrumentation via // `#[cfg_attr(coverage_nightly, coverage(off))]`, which we put on every // `#[cfg(test)]` module so that reported numbers describe the code we ship // rather than the tests exercising it. `coverage_nightly` is set only by // cargo-llvm-cov on nightly (see `cargo cov` in .cargo/config.toml), so stable // builds never see the unstable feature. #![cfg_attr(coverage_nightly, feature(coverage_attribute))] #![warn(missing_docs)] #![deny(unused_must_use)] #![forbid(unsafe_code)] pub mod absorb; pub mod annotate; pub mod backend; pub mod bisect; pub mod commit; pub mod commit_builder; pub mod config; mod config_resolver; pub use jj_core::conflict_labels; pub mod conflicts; pub use jj_core::content_hash; pub mod converge; pub mod copies; pub use jj_core::dag_walk; pub use jj_core::dag_walk_async; pub mod default_backend_factories; pub mod default_index; pub mod default_submodule_store; pub use jj_core::diff; pub mod diff_presentation; pub mod dsl_util; pub(crate) mod eol; pub mod evolution; pub mod extensions_map; pub use jj_core::file_util; pub mod files; pub mod fileset; mod fileset_parser; pub mod fix; pub mod fmt_util; pub mod fsmonitor; #[cfg(feature = "git")] pub mod git; #[cfg(feature = "git")] pub mod git_backend; #[cfg(feature = "git")] mod git_subprocess; pub mod gitignore; pub mod gpg_signing; pub use jj_core::graph; pub mod graph_dominators; pub use jj_core::hex_util; pub mod id_prefix; pub mod index; pub mod iter_util; pub mod local_working_copy; pub mod lock; pub use jj_core::matchers; pub use jj_core::merge; pub mod merged_tree; pub mod merged_tree_builder; pub use jj_core::object_id; pub mod op_heads_store; pub mod op_store; pub mod op_walk; pub mod operation; #[expect(missing_docs)] pub mod protos; pub use jj_core::ref_name; pub mod refs; pub mod repo; pub use jj_core::repo_path; pub mod revset; mod revset_parser; pub mod rewrite; #[cfg(feature = "testing")] pub mod secret_backend; pub mod secure_config; pub mod settings; pub mod signing; use jj_core::symbol_util; pub mod tree_merge; // TODO: This file is mostly used for testing, whenever we no longer require it // in the lib it should be moved to the examples (e.g // "examples/simple-backend/"). pub mod simple_backend; pub mod simple_op_heads_store; pub mod simple_op_store; pub mod ssh_signing; pub mod stacked_table; pub mod store; pub use jj_core::str_util; pub mod submodule_store; #[cfg(feature = "testing")] pub mod test_signing_backend; pub mod time_util; pub mod trailer; pub mod transaction; pub mod tree; pub mod tree_builder; pub mod ui_path; pub mod union_find; pub mod view; pub mod working_copy; pub mod workspace; pub mod workspace_store; #[cfg(test)] #[cfg_attr(coverage_nightly, coverage(off))] mod tests { use tempfile::TempDir; // Copied from `testutils::TestResult` to remove dependency cycle. pub type TestResult = eyre::Result; /// Unlike `testutils::new_temp_dir()`, this function doesn't set up /// hermetic Git environment. pub fn new_temp_dir() -> TempDir { tempfile::Builder::new() .prefix("jj-test-") .tempdir() .unwrap() } }