Mercurial > public > mercurial-scm > hg
comparison mercurial/hbisect.py @ 15057:774da7121fc9
atomictempfile: make close() consistent with other file-like objects.
The usual contract is that close() makes your writes permanent, so
atomictempfile's use of close() to *discard* writes (and rename() to
keep them) is rather unexpected. Thus, change it so close() makes
things permanent and add a new discard() method to throw them away.
discard() is only used internally, in __del__(), to ensure that writes
are discarded when an atomictempfile object goes out of scope.
I audited mercurial.*, hgext.*, and ~80 third-party extensions, and
found no one using the existing semantics of close() to discard
writes, so this should be safe.
author | Greg Ward <greg@gerg.ca> |
---|---|
date | Thu, 25 Aug 2011 20:21:04 -0400 |
parents | a35d6f822e3e |
children | f19de58af225 |
comparison
equal
deleted
inserted
replaced
15056:8413916df816 | 15057:774da7121fc9 |
---|---|
148 wlock = repo.wlock() | 148 wlock = repo.wlock() |
149 try: | 149 try: |
150 for kind in state: | 150 for kind in state: |
151 for node in state[kind]: | 151 for node in state[kind]: |
152 f.write("%s %s\n" % (kind, hex(node))) | 152 f.write("%s %s\n" % (kind, hex(node))) |
153 f.rename() | 153 f.close() |
154 finally: | 154 finally: |
155 wlock.release() | 155 wlock.release() |
156 | 156 |