diff options
author | Lars Wirzenius <liw@liw.fi> | 2010-12-07 11:24:22 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2010-12-07 11:24:22 +0000 |
commit | 11cccf26ec2ee9b2a3c0ee7fd48405f569d5196c (patch) | |
tree | eba1931185d0131f3cbb4c3c4f1b1ca025090fdf | |
parent | c93eadf1fe656fc0649d33c424437b9d92aa9f67 (diff) | |
download | obnam-11cccf26ec2ee9b2a3c0ee7fd48405f569d5196c.tar.gz |
Add new method, StoreTree.start_changes.
Also, StoreTree.commit will optionally remove all but newest tree.
-rw-r--r-- | obnamlib/store_tree.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/obnamlib/store_tree.py b/obnamlib/store_tree.py index 4be15cb6..76e86ce4 100644 --- a/obnamlib/store_tree.py +++ b/obnamlib/store_tree.py @@ -32,6 +32,8 @@ class StoreTree(object): self.upload_queue_size = upload_queue_size self.lru_size = lru_size self.forest = None + self.tree = None + self.keep_just_one_tree = False def init_forest(self): if self.forest is None: @@ -50,8 +52,19 @@ class StoreTree(object): self.init_forest() assert self.forest is not None + def start_changes(self): + self.require_forest() + if self.tree is None: + if self.forest.trees: + self.tree = self.forest.new_tree(self.forest.trees[-1]) + else: + self.tree = self.forest.new_tree() + def commit(self): if self.forest: self.require_forest() + if self.keep_just_one_tree: + while len(self.forest.trees) > 1: + self.forest.remove_tree(self.forest.trees[0]) self.forest.commit() |