-
-
Notifications
You must be signed in to change notification settings - Fork 314
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Add
Reference::remote_tracking_ref_name()
and `*::remote_ref_…
…name()`. These methods mirror their respective `Repository::branch_*` prefixed versions.
- Loading branch information
Showing
2 changed files
with
36 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,47 @@ | ||
use crate::repository::{branch_remote_ref_name, branch_remote_tracking_ref_name}; | ||
use crate::{remote, Reference}; | ||
use gix_ref::FullNameRef; | ||
use std::borrow::Cow; | ||
|
||
/// Remotes | ||
impl<'repo> Reference<'repo> { | ||
/// Find the name of our remote for `direction` as configured in `branch.<name>.remote|pushRemote` respectively. | ||
/// If `Some(<name>)` it can be used in [`Repository::find_remote(…)`][crate::Repository::find_remote()], or if `None` then | ||
/// [`Repository::remote_default_name()`][crate::Repository::remote_default_name()] could be used in its place. | ||
/// | ||
/// Return `None` if no remote is configured. | ||
/// | ||
/// # Note | ||
/// | ||
/// - it's recommended to use the [`remote(…)`][Self::remote()] method as it will configure the remote with additional | ||
/// information. | ||
/// - `branch.<name>.pushRemote` falls back to `branch.<name>.remote`. | ||
/// See also [`Repository::branch_remote_name()`](crate::Repository::branch_remote_name()) for more details. | ||
pub fn remote_name(&self, direction: remote::Direction) -> Option<remote::Name<'repo>> { | ||
self.repo.branch_remote_name(self.name().shorten(), direction) | ||
} | ||
|
||
/// Like [`branch_remote(…)`](crate::Repository::branch_remote()), but automatically provides the reference name | ||
/// for configuration lookup. | ||
/// Find the remote along with all configuration associated with it suitable for handling this reference. | ||
/// | ||
/// See also [`Repository::branch_remote()`](crate::Repository::branch_remote()) for more details. | ||
pub fn remote( | ||
&self, | ||
direction: remote::Direction, | ||
) -> Option<Result<crate::Remote<'repo>, remote::find::existing::Error>> { | ||
self.repo.branch_remote(self.name().shorten(), direction) | ||
} | ||
|
||
/// Return the name of this reference on the remote side. | ||
/// | ||
/// See [`Repository::branch_remote_ref_name()`](crate::Repository::branch_remote_ref_name()) for details. | ||
#[doc(alias = "upstream", alias = "git2")] | ||
pub fn remote_ref_name( | ||
&self, | ||
direction: remote::Direction, | ||
) -> Option<Result<Cow<'_, FullNameRef>, branch_remote_ref_name::Error>> { | ||
self.repo.branch_remote_ref_name(self.name(), direction) | ||
} | ||
|
||
/// Return the name of the reference that tracks this reference on the remote side. | ||
/// | ||
/// See [`Repository::branch_remote_tracking_ref_name()`](crate::Repository::branch_remote_tracking_ref_name()) for details. | ||
#[doc(alias = "upstream", alias = "git2")] | ||
pub fn remote_tracking_ref_name( | ||
&self, | ||
direction: remote::Direction, | ||
) -> Option<Result<Cow<'_, FullNameRef>, branch_remote_tracking_ref_name::Error>> { | ||
self.repo.branch_remote_tracking_ref_name(self.name(), direction) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters