pub struct GitRepoInfo {
pub url: GitUrl,
pub head: Option<GitCommitMeta>,
pub credentials: Option<GitCredentials>,
pub branch: Option<String>,
pub path: Option<PathBuf>,
}
Fields§
§url: GitUrl
The remote url of the repo
head: Option<GitCommitMeta>
The current commit. This can be configured prior to clone with with_commit()
credentials: Option<GitCredentials>
The ssh key or user/pass needed to clone for private repo
branch: Option<String>
The name of the remote branch.
This can be configured with a local branch name prior to clone with with_branch()
.
path: Option<PathBuf>
The location of the repo on disk
Implementations§
Source§impl GitRepoInfo
impl GitRepoInfo
pub fn to_repo(&self) -> GitRepo
pub fn to_clone(&self) -> GitRepoCloneRequest
Sourcepub fn get_remote_name(&self, r: &Repository) -> Result<String>
pub fn get_remote_name(&self, r: &Repository) -> Result<String>
Return the remote name from the given git2::Repository
For example, the typical remote name: origin
Sourcepub fn get_remote_branch_head_refs(
&self,
branch_filter: Option<Vec<String>>,
) -> Result<BranchHeads>
pub fn get_remote_branch_head_refs( &self, branch_filter: Option<Vec<String>>, ) -> Result<BranchHeads>
Return a HashMap<String, GitCommitMeta>
for a branch containing
the branch names and the latest commit of the branch. Providing a
branch_filter` will only return branches based on
patterns matching the start of the branch name.
Sourcepub fn is_commit_in_branch<'repo>(
r: &'repo Repository,
commit: &Commit<'_>,
branch: &Branch<'_>,
) -> Result<bool>
pub fn is_commit_in_branch<'repo>( r: &'repo Repository, commit: &Commit<'_>, branch: &Branch<'_>, ) -> Result<bool>
Returns a bool
if a commit exists in the branch using the git2
crate
Sourcepub fn get_git2_branch<'repo>(
r: &'repo Repository,
local_branch: &Option<String>,
) -> Result<Option<Branch<'repo>>>
pub fn get_git2_branch<'repo>( r: &'repo Repository, local_branch: &Option<String>, ) -> Result<Option<Branch<'repo>>>
Return the git2::Branch
struct for a local repo (as opposed to a remote repo)
If local_branch
is not provided, we’ll select the current active branch, based on HEAD
Sourcepub fn remote_url_from_repository(r: &Repository) -> Result<Option<String>>
pub fn remote_url_from_repository(r: &Repository) -> Result<Option<String>>
Return the remote url from the given Repository
Returns None
if current branch is local only
Sourcepub fn git_remote_from_path(path: &Path) -> Result<Option<String>>
pub fn git_remote_from_path(path: &Path) -> Result<Option<String>>
Returns the remote url after opening and validating repo from the local path
Sourcepub fn git_remote_from_repo(local_repo: &Repository) -> Result<Option<String>>
pub fn git_remote_from_repo(local_repo: &Repository) -> Result<Option<String>>
Returns the remote url from the git2::Repository
struct
Sourcepub fn list_files_changed_between<S: AsRef<str>>(
&self,
commit1: S,
commit2: S,
) -> Result<Option<Vec<PathBuf>>>
pub fn list_files_changed_between<S: AsRef<str>>( &self, commit1: S, commit2: S, ) -> Result<Option<Vec<PathBuf>>>
Returns a Result<Option<Vec<PathBuf>>>
containing files changed between commit1
and commit2
Examples found in repository?
17fn main() -> Result<()> {
18 let current_dir = env::current_dir()?;
19
20 let repo = GitRepo::open(current_dir, None, None)?;
21
22 println!(
23 "Files that have changes at commit: a7cf222c46ad32f2802e79e1935f753a27adc9e8\n{:?}",
24 repo.to_info()
25 .list_files_changed_at("a7cf222c46ad32f2802e79e1935f753a27adc9e8")
26 );
27
28 println!(
29 "Files that have changed:\n{:?}",
30 repo.to_info().list_files_changed_between(
31 "9c6c5e65c3590e299316d34718674de333bdd9c8",
32 "c097ad2a8c07bf2e3df64e6e603eee0473ad8133"
33 )
34 );
35
36 println!(
37 "Has Cargo.toml changed?: {:?}",
38 repo.to_info().has_path_changed("Cargo.toml")
39 );
40
41 println!(
42 "Has src changed?: {:?}",
43 repo.to_info().has_path_changed("src")
44 );
45
46 println!(
47 "Has LICENSE changed?: {:?}",
48 repo.to_info().has_path_changed("LICENSE")
49 );
50
51 Ok(())
52}
Sourcepub fn list_files_changed_at<S: AsRef<str>>(
&self,
commit: S,
) -> Result<Option<Vec<PathBuf>>>
pub fn list_files_changed_at<S: AsRef<str>>( &self, commit: S, ) -> Result<Option<Vec<PathBuf>>>
Returns a Result<Option<Vec<PathBuf>>>
containing files changed between commit
and commit~1
(the previous commit)
Examples found in repository?
17fn main() -> Result<()> {
18 let current_dir = env::current_dir()?;
19
20 let repo = GitRepo::open(current_dir, None, None)?;
21
22 println!(
23 "Files that have changes at commit: a7cf222c46ad32f2802e79e1935f753a27adc9e8\n{:?}",
24 repo.to_info()
25 .list_files_changed_at("a7cf222c46ad32f2802e79e1935f753a27adc9e8")
26 );
27
28 println!(
29 "Files that have changed:\n{:?}",
30 repo.to_info().list_files_changed_between(
31 "9c6c5e65c3590e299316d34718674de333bdd9c8",
32 "c097ad2a8c07bf2e3df64e6e603eee0473ad8133"
33 )
34 );
35
36 println!(
37 "Has Cargo.toml changed?: {:?}",
38 repo.to_info().has_path_changed("Cargo.toml")
39 );
40
41 println!(
42 "Has src changed?: {:?}",
43 repo.to_info().has_path_changed("src")
44 );
45
46 println!(
47 "Has LICENSE changed?: {:?}",
48 repo.to_info().has_path_changed("LICENSE")
49 );
50
51 Ok(())
52}
Sourcepub fn expand_partial_commit_id<S: AsRef<str>>(
&self,
partial_commit_id: S,
) -> Result<String>
pub fn expand_partial_commit_id<S: AsRef<str>>( &self, partial_commit_id: S, ) -> Result<String>
Takes in a partial commit SHA-1, and attempts to expand to the full 40-char commit id
Sourcepub fn has_path_changed<P: AsRef<Path>>(&self, path: P) -> Result<bool>
pub fn has_path_changed<P: AsRef<Path>>(&self, path: P) -> Result<bool>
Checks the list of files changed between last 2 commits (HEAD
and HEAD~1
).
Returns bool
depending on whether any changes were made in path
.
A path
should be relative to the repo root. Can be a file or a directory.
Examples found in repository?
17fn main() -> Result<()> {
18 let current_dir = env::current_dir()?;
19
20 let repo = GitRepo::open(current_dir, None, None)?;
21
22 println!(
23 "Files that have changes at commit: a7cf222c46ad32f2802e79e1935f753a27adc9e8\n{:?}",
24 repo.to_info()
25 .list_files_changed_at("a7cf222c46ad32f2802e79e1935f753a27adc9e8")
26 );
27
28 println!(
29 "Files that have changed:\n{:?}",
30 repo.to_info().list_files_changed_between(
31 "9c6c5e65c3590e299316d34718674de333bdd9c8",
32 "c097ad2a8c07bf2e3df64e6e603eee0473ad8133"
33 )
34 );
35
36 println!(
37 "Has Cargo.toml changed?: {:?}",
38 repo.to_info().has_path_changed("Cargo.toml")
39 );
40
41 println!(
42 "Has src changed?: {:?}",
43 repo.to_info().has_path_changed("src")
44 );
45
46 println!(
47 "Has LICENSE changed?: {:?}",
48 repo.to_info().has_path_changed("LICENSE")
49 );
50
51 Ok(())
52}
Sourcepub fn has_path_changed_between<P: AsRef<Path>, S: AsRef<str>>(
&self,
path: P,
commit1: S,
commit2: S,
) -> Result<bool>
pub fn has_path_changed_between<P: AsRef<Path>, S: AsRef<str>>( &self, path: P, commit1: S, commit2: S, ) -> Result<bool>
Checks the list of files changed between 2 commits (commit1
and commit2
).
Returns bool
depending on whether any changes were made in path
.
A path
should be relative to the repo root. Can be a file or a directory.
Sourcepub fn new_commits_exist(&self) -> Result<bool>
pub fn new_commits_exist(&self) -> Result<bool>
Check if new commits exist by performing a shallow clone and comparing branch heads
Examples found in repository?
5fn main() -> Result<()> {
6 let tempdir = Temp::new_dir()?;
7
8 // We're just using this for cloning
9 let _clone_repo = GitRepo::new("https://github.com/tjtelan/git-meta-rs.git")?
10 .to_clone()
11 .git_clone(&tempdir)?;
12
13 let repo = GitRepo::open(
14 tempdir.to_path_buf(),
15 Some("main".to_string()),
16 Some("f6eb3d6b7998989a48ed1024313fcac401c175fb".to_string()),
17 )?;
18
19 println!(
20 "Are there new commits?: {:?}",
21 repo.to_info().new_commits_exist()
22 );
23
24 Ok(())
25}
Sourcepub fn build_git2_remotecallback(&self) -> Result<RemoteCallbacks<'_>>
pub fn build_git2_remotecallback(&self) -> Result<RemoteCallbacks<'_>>
Builds a git2::RemoteCallbacks
using self.credentials
to be used
in authenticated calls to a remote repo
Trait Implementations§
Source§impl Clone for GitRepoInfo
impl Clone for GitRepoInfo
Source§fn clone(&self) -> GitRepoInfo
fn clone(&self) -> GitRepoInfo
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for GitRepoInfo
impl Debug for GitRepoInfo
Source§impl Default for GitRepoInfo
impl Default for GitRepoInfo
Source§fn default() -> GitRepoInfo
fn default() -> GitRepoInfo
Source§impl From<&GitRepo> for GitRepoInfo
impl From<&GitRepo> for GitRepoInfo
Source§impl From<&GitRepoCloneRequest> for GitRepoInfo
impl From<&GitRepoCloneRequest> for GitRepoInfo
Source§fn from(repo: &GitRepoCloneRequest) -> Self
fn from(repo: &GitRepoCloneRequest) -> Self
Convert from &GitRepoCloneRequest
to GitRepoInfo
.
Source§impl From<&GitRepoInfo> for GitRepo
impl From<&GitRepoInfo> for GitRepo
Source§fn from(repo: &GitRepoInfo) -> Self
fn from(repo: &GitRepoInfo) -> Self
Convert from &GitRepoInfo
to GitRepo
.
Source§impl From<&GitRepoInfo> for GitRepoCloneRequest
impl From<&GitRepoInfo> for GitRepoCloneRequest
Source§fn from(repo: &GitRepoInfo) -> Self
fn from(repo: &GitRepoInfo) -> Self
Convert from &GitRepoInfo
to GitRepoCloneRequest
.
Source§impl PartialEq for GitRepoInfo
impl PartialEq for GitRepoInfo
impl StructuralPartialEq for GitRepoInfo
Auto Trait Implementations§
impl Freeze for GitRepoInfo
impl RefUnwindSafe for GitRepoInfo
impl Send for GitRepoInfo
impl Sync for GitRepoInfo
impl Unpin for GitRepoInfo
impl UnwindSafe for GitRepoInfo
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read more