summaryrefslogtreecommitdiffstats
path: root/src/git.rs
diff options
context:
space:
mode:
authorToby Vincent <tobyv13@gmail.com>2023-05-06 16:28:08 -0500
committerToby Vincent <tobyv13@gmail.com>2023-05-06 16:30:58 -0500
commitbcdcdb0ada8d13950e22909250b6b6783866535e (patch)
tree834b5a6a2c9a2d10b87024103f387edddc0f76ba /src/git.rs
parente554e7033320456762a82b8276e0137592d57dcb (diff)
fix: use path_buf parser (mtime) only as fallback
Diffstat (limited to 'src/git.rs')
-rw-r--r--src/git.rs23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/git.rs b/src/git.rs
index 3b791e0..a31935b 100644
--- a/src/git.rs
+++ b/src/git.rs
@@ -19,7 +19,7 @@ impl Parser for Repository {
type Error = Error;
fn parse(&self, path_buf: PathBuf) -> Result<Project, Self::Error> {
- let timestamp = self
+ let opt_commit = self
.branches(Some(BranchType::Local))?
.map(|branch| -> Result<_, Error> {
let (branch, _) = branch?;
@@ -28,9 +28,7 @@ impl Parser for Repository {
.name()?
.ok_or_else(|| Error::from_str("Failed to get branch name"))?;
- self.revparse_single(name)?
- .peel_to_commit()
- .map(|c| c.time().seconds() as u64)
+ self.revparse_single(name)?.peel_to_commit()
})
.inspect(|res| {
if let Err(err) = res {
@@ -38,9 +36,20 @@ impl Parser for Repository {
}
})
.flatten()
- .max()
- .map(Duration::from_secs)
- .unwrap_or_default();
+ .max_by_key(|c| c.time().seconds() as u64);
+
+ let timestamp = match opt_commit {
+ Some(c) => {
+ let time = c.time().seconds();
+ let id = c.id();
+ tracing::debug!(?path_buf, ?id, ?time, "Latest commit");
+ Duration::from_secs(c.time().seconds() as u64)
+ }
+ None => {
+ tracing::warn!(?path_buf, "No commit found, using default");
+ Duration::default()
+ }
+ };
Ok(Project {
path_buf,