History

feat: Add `gix::discover_with_environment_overrides()`

Christoph Rüßler committed 1 year ago

Commit fa1287f1 parent 20b7c203 files · +30 −5Browse files

Unified · Split

3 files
  1. gix/src/discover.rs +3 −1
  2. gix/src/lib.rs +24 −3
  3. gix/src/types.rs +3 −1
gix/src/discover.rs+3−1
@@ -3,7 +3,7 @@ use std::path::Path; · 2 unmodified lines
3 3
4pub use gix_discover::*;4pub use gix_discover::*;
5 5
6use crate::{bstr::BString, ThreadSafeRepository};6use crate::{bstr::BString, Repository, ThreadSafeRepository};
7 7
8/// The error returned by [`crate::discover()`].8/// The error returned by [`crate::discover()`].
9#[derive(Debug, thiserror::Error)]9#[derive(Debug, thiserror::Error)]
@@ -49,6 +49,8 @@ impl ThreadSafeRepository { · 39 unmodified lines
49 /// Try to open a git repository directly from the environment.49 /// Try to open a git repository directly from the environment.
50 /// If that fails, discover upwards from `directory` until one is found,50 /// If that fails, discover upwards from `directory` until one is found,
51 /// while applying discovery options from the environment.51 /// while applying discovery options from the environment.
52 ///
53 /// For more, see [`ThreadSafeRepository::discover_with_environment_overrides_opts()`].
52 pub fn discover_with_environment_overrides(directory: impl AsRef<Path>) -> Result<Self, Error> {54 pub fn discover_with_environment_overrides(directory: impl AsRef<Path>) -> Result<Self, Error> {
53 Self::discover_with_environment_overrides_opts(directory, Default::default(), Default::default())55 Self::discover_with_environment_overrides_opts(directory, Default::default(), Default::default())
54 }56 }
gix/src/lib.rs+24−3
@@ -29,7 +29,7 @@ · 28 unmodified lines
29//!29//!
30//! By default, the [`Repository`] isn't `Sync` and thus can't be used in certain contexts which require the `Sync` trait.30//! By default, the [`Repository`] isn't `Sync` and thus can't be used in certain contexts which require the `Sync` trait.
31//!31//!
32//! To help with this, convert it with [`.into_sync()`][Repository::into_sync()] into a [`ThreadSafeRepository`].32//! To help with this, convert it with [`Repository::into_sync()`] into a [`ThreadSafeRepository`].
33//!33//!
34//! ### Object-Access Performance34//! ### Object-Access Performance
35//!35//!
@@ -41,7 +41,7 @@ · 5 unmodified lines
41//! On miss, the object is looked up and if a pack is hit, there is a small fixed-size cache for delta-base objects.41//! On miss, the object is looked up and if a pack is hit, there is a small fixed-size cache for delta-base objects.
42//!42//!
43//! In scenarios where the same objects are accessed multiple times, the object cache can be useful and is to be configured specifically43//! In scenarios where the same objects are accessed multiple times, the object cache can be useful and is to be configured specifically
44//! using the [`object_cache_size(…)`][crate::Repository::object_cache_size()] method.44//! using the [`Repository::object_cache_size()`] method.
45//!45//!
46//! Use the `cache-efficiency-debug` cargo feature to learn how efficient the cache actually is - it's easy to end up with lowered46//! Use the `cache-efficiency-debug` cargo feature to learn how efficient the cache actually is - it's easy to end up with lowered
47//! performance if the cache is not hit in 50% of the time.47//! performance if the cache is not hit in 50% of the time.
@@ -207,7 +207,10 @@ pub mod diff; · 159 unmodified lines
207#[cfg(feature = "merge")]207#[cfg(feature = "merge")]
208pub mod merge;208pub mod merge;
209 209
210/// See [`ThreadSafeRepository::discover()`], but returns a [`Repository`] instead.210/// Try to open a git repository in `directory` and search upwards through its parents until one is found,
211/// using default trust options which matters in case the found repository isn't owned by the current user.
212///
213/// For details, see [`ThreadSafeRepository::discover()`].
211///214///
212/// # Note215/// # Note
213///216///
@@ -222,6 +225,24 @@ pub fn discover(directory: impl AsRef<std::path::Path>) -> Result<Repository, di · 8 unmodified lines
222 ThreadSafeRepository::discover(directory).map(Into::into)225 ThreadSafeRepository::discover(directory).map(Into::into)
223}226}
224 227
228/// Try to discover a git repository directly from the environment.
229///
230/// For details, see [`ThreadSafeRepository::discover_with_environment_overrides_opts()`].
231#[allow(clippy::result_large_err)]
232pub fn discover_with_environment_overrides(
233 directory: impl AsRef<std::path::Path>,
234) -> Result<Repository, discover::Error> {
235 ThreadSafeRepository::discover_with_environment_overrides(directory).map(Into::into)
236}
237
238/// Try to open a git repository directly from the environment.
239///
240/// See [`ThreadSafeRepository::open_with_environment_overrides()`].
241#[allow(clippy::result_large_err)]
242pub fn open_with_environment_overrides(directory: impl Into<std::path::PathBuf>) -> Result<Repository, open::Error> {
243 ThreadSafeRepository::open_with_environment_overrides(directory, Default::default()).map(Into::into)
244}
245
225/// See [`ThreadSafeRepository::init()`], but returns a [`Repository`] instead.246/// See [`ThreadSafeRepository::init()`], but returns a [`Repository`] instead.
226#[allow(clippy::result_large_err)]247#[allow(clippy::result_large_err)]
227pub fn init(directory: impl AsRef<std::path::Path>) -> Result<Repository, init::Error> {248pub fn init(directory: impl AsRef<std::path::Path>) -> Result<Repository, init::Error> {
gix/src/types.rs+3−1
@@ -145,7 +145,9 @@ pub struct Reference<'r> { · 144 unmodified lines
145 145
146/// A thread-local handle to interact with a repository from a single thread.146/// A thread-local handle to interact with a repository from a single thread.
147///147///
148/// It is `Send` but **not** `Sync` - for the latter you can convert it `to_sync()`.148/// It is `Send`, but **not** `Sync` - for the latter you can convert it using
149/// [`Repository::into_sync()`].
150///
149/// Note that it clones itself so that it is empty, requiring the user to configure each clone separately, specifically151/// Note that it clones itself so that it is empty, requiring the user to configure each clone separately, specifically
150/// and explicitly. This is to have the fastest-possible default configuration available by default, but allow152/// and explicitly. This is to have the fastest-possible default configuration available by default, but allow
151/// those who experiment with workloads to get speed boosts of 2x or more.153/// those who experiment with workloads to get speed boosts of 2x or more.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t