From 7bcb0cfc6a37c9d96ba350e9e7f6143e1ad65c6c Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Wed, 17 Jun 2015 20:28:49 +0900 Subject: [PATCH] Delete unmodified versions --- database.go | 4 +++- version.go | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/database.go b/database.go index e1c9e18..6804a44 100644 --- a/database.go +++ b/database.go @@ -74,8 +74,10 @@ func (db *database) load(dir string) error { } func (db *database) save() error { + lastVer := db.lastVersion() + for _, ver := range db.vers { - if err := ver.finalize(); err != nil { + if err := ver.finalize(ver == lastVer); err != nil { return err } } diff --git a/version.go b/version.go index a33755b..67a48e4 100644 --- a/version.go +++ b/version.go @@ -146,8 +146,16 @@ func (v *version) rebasePath(paths ...string) string { return filepath.Join(combined...) } -func (v *version) finalize() error { - return v.meta.save() +func (v *version) finalize(last bool) error { + if v.meta.dirty { + return v.meta.save() + } else if last { + if err := os.RemoveAll(v.base); err != nil { + return err + } + } + + return nil } func (v *version) Root() (fs.Node, error) {