summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMica White <botahamec@outlook.com>2026-04-02 20:44:29 -0400
committerMica White <botahamec@outlook.com>2026-04-02 20:44:29 -0400
commit45b2f8c6c5ff28d9f0b952f213c5372db2f937b0 (patch)
treebb4e521e5cc2e785ab94644c88e07a4c30d38ec0 /src
parenta42030e36f79502112783aedeb79e1797bd7d968 (diff)
Rudimentary clean command
Diffstat (limited to 'src')
-rw-r--r--src/bin/git-clean-autosaves.rs23
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(())
+}