[workspace] members = [ "gitbutler-app", "gitbutler-core", "gitbutler-diff", "gitbutler-git", ] resolver = "2" [workspace.dependencies] gitbutler-core = { path = "gitbutler-core" } git2 = { version = "0.18.1", features = ["vendored-openssl", "vendored-libgit2"] } uuid = "1.7.0" serde = { version = "1.0", features = ["derive"] } thiserror = "1.0.56" rusqlite = { version = "0.29.0", features = [ "bundled", "blob" ] } tokio = { version = "1.35.1" } [profile.release] codegen-units = 1 # Compile crates one after another so the compiler can optimize better lto = true # Enables link to optimizations opt-level = "s" # Optimize for binary size debug = true # Enable debug symbols, for sentry [workspace.lints.rust] unsafe_code = "forbid" [workspace.lints.clippy] all = "deny" perf = "deny" correctness = "deny" complexity = "deny" style = "deny" pedantic = "deny" # selection from clippy::restriction (see https://rust-lang.github.io/rust-clippy/master/index.html#/?groups=restriction) as_underscore = "deny" assertions_on_result_states = "deny" clone_on_ref_ptr = "deny" create_dir = "deny" dbg_macro = "deny" decimal_literal_representation = "deny" default_numeric_fallback = "deny" empty_drop = "deny" empty_structs_with_brackets = "deny" exit = "deny" filetype_is_file = "deny" float_cmp_const = "deny" fn_to_numeric_cast_any = "deny" format_push_string = "deny" get_unwrap = "deny" integer_division = "deny" lossy_float_literal = "deny" mem_forget = "deny" mixed_read_write_in_expression = "deny" mutex_atomic = "deny" needless_raw_strings = "deny" non_ascii_literal = "deny" panic = "deny" print_stderr = "deny" pub_without_shorthand = "deny" rc_buffer = "deny" rc_mutex = "deny" redundant_type_annotations = "deny" ref_patterns = "deny" rest_pat_in_fully_bound_structs = "deny" same_name_method = "deny" string_add = "deny" string_lit_chars_any = "deny" string_slice = "deny" string_to_string = "deny" suspicious_xor_used_as_pow = "deny" todo = "deny" try_err = "deny" unimplemented = "deny" unnecessary_self_imports = "deny" unneeded_field_pattern = "deny" unseparated_literal_suffix = "deny" if_then_some_else_none = "deny" use_debug = "deny" mod_module_files = "deny" self_named_module_files = "allow" # TODO # partial_pub_fields = "deny" # print_stdout = "deny" # unwrap_used = "deny" # unwrap_in_result = "deny" # noise and or false-positives missing_errors_doc = { level = "allow", priority = 1 } used_underscore_binding = { level = "allow", priority = 1 } must_use_candidate = { level = "allow", priority = 1 } module_name_repetitions = { level = "allow", priority = 1 } missing_panics_doc = { level = "allow", priority = 1 } too_many_lines = { level = "allow", priority = 1 } implicit_hasher = { level = "allow", priority = 1 } if_not_else = { level = "allow", priority = 1 } return_self_not_must_use = { level = "allow", priority = 1 } inconsistent_struct_constructor = { level = "allow", priority = 1 } match_wildcard_for_single_variants = { level = "allow", priority = 1 } unnested_or_patterns = { level = "allow", priority = 1 } similar_names = { level = "allow", priority = 1 } struct_field_names = { level = "allow", priority = 1 }