summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-12-07 11:24:22 +0000
committerLars Wirzenius <liw@liw.fi>2010-12-07 11:24:22 +0000
commit11cccf26ec2ee9b2a3c0ee7fd48405f569d5196c (patch)
treeeba1931185d0131f3cbb4c3c4f1b1ca025090fdf
parentc93eadf1fe656fc0649d33c424437b9d92aa9f67 (diff)
downloadobnam-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.py13
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()