diff options
Diffstat (limited to 'src/bin/git-clean-autosaves.rs')
| -rw-r--r-- | src/bin/git-clean-autosaves.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/bin/git-clean-autosaves.rs b/src/bin/git-clean-autosaves.rs new file mode 100644 index 0000000..5b5c61b --- /dev/null +++ b/src/bin/git-clean-autosaves.rs @@ -0,0 +1,23 @@ +use chrono::Utc; +use git_autosave::Autosave; +use git2::Repository; + +const THREE_MONTHS: i64 = 60 * 60 * 24 * 30 * 3; + +fn main() -> Result<(), anyhow::Error> { + let repository = Repository::discover(".")?; + for reference in repository.references()? { + let Ok(mut reference) = reference else { + continue; + }; + let Ok(autosave): Result<Autosave, git2::Error> = (&reference).try_into() else { + continue; + }; + + if Utc::now().timestamp() - autosave.time.seconds() > THREE_MONTHS { + reference.delete()?; + } + } + + Ok(()) +} |
