From: Avery Pennarun Date: Sun, 10 Jan 2010 00:47:14 +0000 (-0500) Subject: cmd-index: skip merging the index if nothing was written to the new one. X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=444b0dff35f4f9ac7ab9d449e3229469a30358f4;p=packages%2Fb%2Fbup.git cmd-index: skip merging the index if nothing was written to the new one. --- 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 = """