diff options
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, |