From 444b0dff35f4f9ac7ab9d449e3229469a30358f4 Mon Sep 17 00:00:00 2001 From: Avery Pennarun Date: Sat, 9 Jan 2010 19:47:14 -0500 Subject: [PATCH] cmd-index: skip merging the index if nothing was written to the new one. --- cmd-index.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/cmd-index.py b/cmd-index.py index f99c012..54e4751 100755 --- a/cmd-index.py +++ b/cmd-index.py @@ -162,6 +162,7 @@ def ix_encode(st, sha, flags): class IndexWriter: def __init__(self, filename): self.f = None + self.count = 0 self.lastfile = None self.filename = None self.filename = filename = os.path.realpath(filename) @@ -187,6 +188,10 @@ class IndexWriter: f.close() os.rename(self.tmpname, self.filename) + def _write(self, data): + self.f.write(data) + self.count += 1 + def add(self, name, st, hashgen=None): #log('ADDING %r\n' % name) if self.lastfile: @@ -201,7 +206,7 @@ class IndexWriter: else: sha = EMPTY_SHA data = name + '\0' + ix_encode(st, sha, flags) - self.f.write(data) + self._write(data) def add_ixentry(self, e): if self.lastfile and self.lastfile <= e.name: @@ -209,7 +214,7 @@ class IndexWriter: % (e.name, self.lastfile)) self.lastfile = e.name data = e.name + '\0' + e.packed() - self.f.write(data) + self._write(data) def new_reader(self): self.f.flush() @@ -297,7 +302,7 @@ def handle_path(ri, wi, dir, name, pst, xdev, can_delete_siblings): def merge_indexes(out, r1, r2): - log('Merging indexes.\n') + log('bup: merging indexes.\n') for e in _last_writer_wins_iter([r1, r2]): #if e.flags & IX_EXISTS: out.add_ixentry(e) @@ -366,10 +371,11 @@ def update_index(path): f.fchdir() ri.save() - mi = IndexWriter(indexfile) - merge_indexes(mi, ri, wi.new_reader()) + if wi.count: + mi = IndexWriter(indexfile) + merge_indexes(mi, ri, wi.new_reader()) + mi.close() wi.abort() - mi.close() optspec = """ -- 2.39.2