From bcdcdb0ada8d13950e22909250b6b6783866535e Mon Sep 17 00:00:00 2001 From: Toby Vincent Date: Sat, 6 May 2023 16:28:08 -0500 Subject: fix: use path_buf parser (mtime) only as fallback --- src/git.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/git.rs') 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 { - 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, -- cgit v1.2.3-70-g09d2