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
33
44 pub use gix_discover::*;
55
6−use crate::{bstr::BString, ThreadSafeRepository};
6+use crate::{bstr::BString, Repository, ThreadSafeRepository};
77
88 /// The error returned by [`crate::discover()`].
99 #[derive(Debug, thiserror::Error)]
@@ -49,6 +49,8 @@ impl ThreadSafeRepository { · 39 unmodified lines
4949 /// Try to open a git repository directly from the environment.
5050 /// If that fails, discover upwards from `directory` until one is found,
5151 /// while applying discovery options from the environment.
52+ ///
53+ /// For more, see [`ThreadSafeRepository::discover_with_environment_overrides_opts()`].
5254 pub fn discover_with_environment_overrides(directory: impl AsRef<Path>) -> Result<Self, Error> {
5355 Self::discover_with_environment_overrides_opts(directory, Default::default(), Default::default())
5456 }
gix/src/lib.rs+24−3
@@ -29,7 +29,7 @@ · 28 unmodified lines
2929 //!
3030 //! By default, the [`Repository`] isn't `Sync` and thus can't be used in certain contexts which require the `Sync` trait.
3131 //!
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`].
3333 //!
3434 //! ### Object-Access Performance
3535 //!
@@ -41,7 +41,7 @@ · 5 unmodified lines
4141 //! On miss, the object is looked up and if a pack is hit, there is a small fixed-size cache for delta-base objects.
4242 //!
4343 //! 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.
4545 //!
4646 //! Use the `cache-efficiency-debug` cargo feature to learn how efficient the cache actually is - it's easy to end up with lowered
4747 //! performance if the cache is not hit in 50% of the time.
@@ -207,7 +207,10 @@ pub mod diff; · 159 unmodified lines
207207 #[cfg(feature = "merge")]
208208 pub mod merge;
209209
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()`].
211214 ///
212215 /// # Note
213216 ///
@@ -222,6 +225,24 @@ pub fn discover(directory: impl AsRef<std::path::Path>) -> Result<Repository, di · 8 unmodified lines
222225 ThreadSafeRepository::discover(directory).map(Into::into)
223226 }
224227
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)]
232+pub 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)]
242+pub 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+
225246 /// See [`ThreadSafeRepository::init()`], but returns a [`Repository`] instead.
226247 #[allow(clippy::result_large_err)]
227248 pub 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
145145
146146 /// A thread-local handle to interact with a repository from a single thread.
147147 ///
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+///
149151 /// Note that it clones itself so that it is empty, requiring the user to configure each clone separately, specifically
150152 /// and explicitly. This is to have the fastest-possible default configuration available by default, but allow
151153 /// 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