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) {