diff options
author | Toby Vincent <tobyv13@gmail.com> | 2023-05-06 16:28:08 -0500 |
---|---|---|
committer | Toby Vincent <tobyv13@gmail.com> | 2023-05-06 16:30:58 -0500 |
commit | bcdcdb0ada8d13950e22909250b6b6783866535e (patch) | |
tree | 834b5a6a2c9a2d10b87024103f387edddc0f76ba /src/git.rs | |
parent | e554e7033320456762a82b8276e0137592d57dcb (diff) |
fix: use path_buf parser (mtime) only as fallback
Diffstat (limited to 'src/git.rs')
-rw-r--r-- | src/git.rs | 23 |
1 files changed, 16 insertions, 7 deletions
@@ -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, |